想利用暑假时间好好学习一下vue,会记录每一天的学习内容。
今天是学习vue的第7
天!
(不过今天好像都是webpack的相关内容TT,只有一点点关于vue的配置)
起起伏伏乃人生常态,继续加油~
我们创建如下文件和文件夹:
dist
文件夹:用于存放之后打包的文件src
文件夹:用于存放我们写的源文件
main.js
:项目的入口文件mathUtils.js
:定义了一些工具函数index.html
:浏览器打开展示的首页html
mathUtils.js
中的内容:
main.js
中的内容:
index.html
引入这main.js
、mathUtils.js
文件,浏览器并不识别其中的模块化代码webpack
工具,对多个js文件进行打包
webpack
就是一个模块化的打包工具,所以它支持我们代码中写模块化,可以对模块化的代码进行处理。index.html
中引入也很方便webpack
的指令即可打包后会在dist
文件下,生成一个bundle.js
文件
bundle.js
文件,是webpack
处理了项目直接文件依赖后生成的一个js文件,我们只需要在index.html
中引入这个 bundle.js
文件即可index.html
控制台成功输出:webpack
的命令都需要写上入口和出口作为参数,会非常麻烦webpack.config.js
文件但是这里的require('path')
依赖于node相关的包,所以要先用npm init
去初始化这个项目
使用npm init
会生成一个package.json
文件,这个文件主要用来记录这个项目的详细信息,它会将我们在项目开发中所要用到的包,以及项目的详细信息等记录在这个文件中
在终端输入npm init
之后会让我们配置一些信息
(没填的地方直接回车)
成功生成 package.json
当我们配置完webpack.config.js
文件后,我们在终端输入webpack
就可以进行打包了,但是此时我们使用的是全局的webpack
,如果我们想使用局部webpack
来打包呢?
webpack
版本,而全局webpack
的版本可能和这个项目的所依赖的webpack
版本不一致,导致打包出现问题webpack
第一步:项目中需要安装自己局部的webpack
webpack3.6.0
npm install webpack@3.6.0 --save-dev
node_modules
文件package.json
也会自动生成这部分第二步:在终端中输入node_modules/.bin/webpack
启动局部webpack
打包(如果输入webpack
,使用的是全局webpack
)
但是,每次启动局部webpack
打包都要输入node_modules/.bin/webpack
一长串命令很不方便
package.json
的scripts
中定义自己的执行脚本
在scripts
中添加这条"build":"webpack"
命令,scripts
中的脚本在执行时,会按照一定的顺序寻找命令对应的位置
node_modules/.bin
路径中对应的命令build
命令?
npm run build
即可局部webpack
,如果没有才会启动全局webpack
webpack
用来做什么:
webpack
来处理我们写的js代码,并且webpack
会自动处理js文件之间相关的依赖css
、图片
,也包括一些高级的将ES6
转成ES5
,将TypeScript
转成ES5
代码,将scss
、less
转成css
等等webpack
本身的能力来说,并不支持这些转化webpack
扩展对应的loader
就可以了!loader
使用过程:(也可以跟着官网的教程做)
npm
安装需要使用的loader
webpack.config.js
中的module
关键字下进行配置loader
都可以在webpack
官网中找到,并且学习对应的用法src
目录中,创建一个css
文件,其中一个创建normal.css
文件js
文件放到一个js
文件夹中⚠️:此时就算在normal.css
中写了样式,也不会在index.html
中生效
index.html
引用它webpack
也不可能找到它,因为只有一个入口,就是在webpack.config.js
中设置的entry
为main.js
webpack
会从main.js
开始查找其他依赖的文件,然后一起打包,显然此时这里只依赖了mathUtils.js
,所以不可能找到normal.css
⚠️:我们需要在main.js
中与normal.css
建立依赖
在入口main.js
建立了与normal.css
的依赖以后,我们再次尝试打包,因为前面已经配置好了,现在启动局部webpack
打包只需要用npm run build
即可
但是报错了,于是我们应该去webpack
官网找到对应的loader
安装style-loader
、css-loader
:
npm install css-loader
、npm install style-loader
css-loader
版本是2.0.2
,style-loader
版本是0.23.1
npm install --save-dev css-loader@2.0.2
、npm install --save-dev style-loader@0.23.1
根据官方,我们需要在webpack.config.js
中添加如下配置:
(⚠️一下我的注释)
然后在npm run build
,打开index.html
就会发现样式生效了
如果想要在项目中使用less
、scss
、stylus
等CSS预处理器来写样式,webpack
同样也可以帮我们处理
less
为例我们先创建一个less
文件,依然放在css
,依然放在css
文件夹中
和css文件处理的步骤一样
npm install --save-dev less-loader@4.1.0 less@3.9.0
webpack.config.js
中添加配置npm run build
,打开index.html
就会发现样式生效了在刚刚的normal.css
中设置一张图片为背景图
现在直接尝试打包,会报错
图片处理,我们使用url-loader
url-loader
(我这里指定了url-loader版本1.1.2)npm install --save-dev url-loader@1.1.2
webpack.config.js
配置文件:当图片小于设置的limit
属性时,打包时会对图片进行base64
编码,那如果大于设置的limit
属性呢?
目前尝试打包,还是会继续报错,所以当大于设置的limit
属性时,要通过file-loader
处理
file-loader
:(我这里指定了file-loader版本3.0.1)npm install --save-dev file-loader@3.0.1
dist
文件夹下多一个图片文件,这是webpack
帮我们自动生成的webpack
帮我们自动生成的文件名是一个32位哈希值,但是在真实开发中,我们应该对打包的图片名有一定的要求options
中添加上如下选项:
img
:文件要打包到的文件夹name
:获取图片原来的名字,放在该位置hash:8
:为了防止图片在同一个文件夹中名字冲突,依然使用哈希值,只是我们只保留8位ext
:使用图片原来的扩展名index.html
中图片未能正常显示
webpack
会将生成的路径直接返回使用,打开index.html
的控制台,这个时候引用的url
是错误的dist
文件下的,index.html
在src
文件中,所以我们希望能在路径下自动添加一个../dist
webpack.config.js
文件中,配置publicPath
:index.html
可能也要放进dist
文件夹,到时候还要改)webpack
打包的js
文件,部分ES6
语法还未转成ES5
,那么就意味着可能一些对ES6
还不支持的浏览器没有办法很好的运行我们的代码ES6
的语法转成ES5
,就需要使用babel
webpack
中,我们直接使用babel
对应的loader
就可以了
npm install --save-dev babel-loader@7 babel-core babel-preset-es2015
webpack.config.js
文件bundle.js
文件,会发现其中的内容已经变成了ES5
的语法Vuejs
进行开发,而且会以特殊的文件来组织vue
的组件
Vuejs
Vuejs
,必然需要对其有依赖,所以先进行安装vue
的,所以并不是开发时依赖,不用加-dev
npm install vue@2.5.21 --save
main.js
和index.html
中使用vue
这个错误说的是我们使用的是runtime-only
版本的vue
,编译不了模版
webpack
的配置,添加如下配置即可今天就只学一些webpack配置了,因为我下载的都是指定的版本,现在的新版本可能对一些处理有了不同方法,具体还是参考webpack官网 https://webpack.js.org