一. 历史介绍
1. 规范
- AMD
- Commonjs||CMD
- UMD
2. 工具
- npm
- bower
- webpack
- browserify
参考:
bower 和 npm 的区别详细介绍
npm、cnpm、bower安装区别
gulp/grunt和browserify/webpack的区别
二. webpack打包模块源码
- 1. 把所有模块的代码放入到函数中,用一个数组保存起来
- 2. 根据require时传入的数组索引,能知道需要那一段代码
- 3. 从数组中,根据索引取出包含我们代码的函数
- 4. 执行该函数,传入一个对象
module.exports = 'xxx'
- 5. 我们的代码,按照约定,正好是用
module.exports = 'xxx'
进行赋值 - 6. 调用函数结束后,
module.exports
从原来的空对象,就有了值 - 7. 最终
return module.exports
作为require函数的返回值
三. webpack.config.js文件配置
-
entry
是一个对象,程序的入口-
key
: 随意写 -
value
: 入口文件
-
-
output
是一个对象,产出的资源-
key
: filename -
value
: 生成的build.js
-
-
module
模块(对象)-
loaders
: []- 存在一些
loader
|{test:正则,loader:'style-loader!css-loader'}
- 存在一些
-
四. 处理less
loader:'style-loader!css-loader!less-loader'
五. 处理ES6
-
babel-loader
+babel-preset-env
(es2015/2016/2017)
六. 处理文件+base64
-
url-loader
可以将文件生成为base64编码到build.js中 - 文件在base64加密后会比原来大三分之一
- 应用场景是比较小的图片,4kb以内的图片
七. 字符串内使用内置变量
- name:
[name].[ext]
- name是获取原文件名,ext是获取原文件名的后缀
output:{path:'绝对路径',设置产出的资源目录,filename:'build.js'}
八. 处理html
html-webpack-plugin
- 1.下载
- 2.在
webpack.config.js
文件中引入 - 3.
plugins
属性,配置该对象 - 4.给其
options
设置template
(参照物)
九. 单文件方式
- 依赖
vue-loader
vue-template-compiler
十. webpack-dev-server
-
--open
自动打开浏览器 -
--hot
热替换,不在刷新的情况下替换,css样式 -
--inline
自动刷新 -
--port 9999
制定端口 -
--process
显示编译进度
四. 包的分类管理和分类恢复
- 1. 安装包的时候,做一个分类管理
- 开发依赖(打包相关webpack)
npm i 包名 -D
->devDependencies - 生产依赖(不包含webpack打包依赖)
npm i 包名 -D
-> dependencies
- 开发依赖(打包相关webpack)
- 2. 恢复依赖
- 如果包文件不小心删了/少了
- 开发恢复
npm i
- 生产恢复
npm i --production