邂逅Webpack
前端的发展
互联网发展早期,前端只负责写静态页面,纯粹的展示功能,JavaScript的作用也只是进行一些表单的验证和增加特效。
当然为了动态在页面中填充一些数据,也出现了JSP、ASP、PHP这样的开发模式。
随着AJAX技术的诞生改变了前端的发展历史,使得开发者发现,前端的作用不仅仅是展示页面,可以管理数据以及和用户互动。由于用户交互、数据交互的需求增多,也让jQuery 这样优秀的前端工具库大放异彩。
而现代的Web开发事实上变得更加多样化和复杂化。开发的多样性包括我们需要开发PC Web页面、移动端Web页面、小程序、公众号、甚至包括App,都属于前端开发的范畴。当然也包括一系列复杂性的问题。
前端开发的复杂化
- 模块化开发
- 使用一些高级的特性来加快我们的开发效率或者安全性,比如通过ES6+、TypeScript开发脚本逻辑,通过sass、less等方式来编写css样式代码;
- 实时监听文件的变化来并且反映到浏览器上,提高开发的效率;
- 将代码进行压缩、合并以及其他相关的优化;
三大框架的脚手架
- Vue
- Vue-cli
- React
- Angular
webpack是什么
webpack is a static module bundler for modern JavaScript applications
- bundler打包 :打包工具
- 静态的static:我们最终可以将代码打包成最终的静态资源(部署到静态服务器)
- 模块化:webpack默认支持各种模块化开发,ES Module、CommonJS、AMD等 webpack可以将它们转化成浏览器认识的代码
- 现代的:为现代前端而服务
工作中使用webpack
在开发vue react等项目时 需要进行一些特殊的配置 比如给某些项目结构起别名 让我们的项目支持sass、less等预处理
器,希望在项目中手动的添加TypeScript的支持,都需要webpack
在原有的脚手架上来定制一些自己的特殊配置提供性能:比如安装性能分析工具、使用gzip压缩代码、引用cdn的资源,公共
代码抽取等等操作,甚至包括需要编写属于自己的loader和plugin。
Webpack和vite
- 目前vue的项目支持vite 也同样支持Webpack
- react和angular脚手架都没有支持
- vite打包需要借助于rollup来完成
webpack在不断更新迭代
vite的核心思想并不是首创 很多思想和之前的snowpack是重合的
传统开发存在的问题
我们的代码存在什么问题呢?某些语法浏览器是不认识的(尤其在低版本浏览器上)
1.使用了ES6的语法,比如const、箭头函数等语法;
2.使用了ES6中的模块化语法;
3.使用CommonJS的模块化语法;
4.在通过script标签引入时,必须添加上 type=”module” 属性;
显然,上面存在的问题,让我们在发布静态资源时,是不能直接发布的,因为运行在用户浏览器必然会存在各种各样的兼容性问题。
我们需要通过某个工具对其进行打包,让其转换成浏览器可以直接识别的语法;