历史
前端工程化的发展,就是把代码模块化分离,代码压缩,自动部署等任务,从后端技术人员手中回到前端开发人员的过程
起因是nodejs 的崛起
- 因为nodejs 的能力,让熟悉前端问题的开发人员可以给自己造工具,出现了grunt和gulp 之类的流程化自动化工具
- nodejs 里面的commonjs 规范解决了前端模块化的问题,出现了webpack,rollup 等工具
由vue,react等spa 框架带火的的webpack 已经覆盖了整个开发部署流程的工程化需求
- 开发阶段
- loader,vue 转js
- 调试阶段
- devServer,hmr,proxy
- 部署阶段
- 代码压缩,sourcemap,文件指纹,摇树,懒加载
为什么vue cli
,creat-react-app
选择了webpack?
- 虽然vue 也提供了同类的browserify 方案, 但browserify 的目标只是把commonjs 规范的模块转换成浏览器能够理解的代码。browserify没有webpack 的插件系统,常见的代码压缩,代码分离,懒加载,摇树等功能都需要额外配置(例如配合gulp)。
- browserify 只能够打包js,,html 和css,和图片怎么办?
rollup又是什么
- Rollup 是一个 JavaScript 模块打包器,可以将小块代码编译成大块复杂的代码,例如 library 或应用程序。Rollup侧重于打包出最精简的包,所以没有webpack 那些对子模块的iife 的包装方法,也不会搞按需加载,因为按需加载的副作用是增加了整体体积,,违背了Rollup 目标。一句话,
Use webpack for apps, and Rollup for libraries
。现在vue,react,Three.js, Moment 这些库都不约而同地用了Rollup 来打包。