我了解的前端工程化发展

1,202 阅读1分钟

历史

前端工程化的发展,就是把代码模块化分离,代码压缩,自动部署等任务,从后端技术人员手中回到前端开发人员的过程

起因是nodejs 的崛起

  • 因为nodejs 的能力,让熟悉前端问题的开发人员可以给自己造工具,出现了grunt和gulp 之类的流程化自动化工具
  • nodejs 里面的commonjs 规范解决了前端模块化的问题,出现了webpack,rollup 等工具

由vue,react等spa 框架带火的的webpack 已经覆盖了整个开发部署流程的工程化需求

  • 开发阶段
    • loader,vue 转js
  • 调试阶段
    • devServer,hmr,proxy
  • 部署阶段
    • 代码压缩,sourcemap,文件指纹,摇树,懒加载

为什么vue clicreat-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 来打包。

参考