🔥码云GVP开源项目 12k star Uniapp+ElementUI 功能强大 支持多语言、二开方便! 广告
## 1,认识webpack及安装 > webpack是一个JavaScript应用的静态模块打包工具-----**模块 和 打包** 1,将webpack中的各种资源模块进行打包合并成一个或多个包(Bundle)。 2,在打包的过程中,还可以对资源进行处理,比如压缩图片,将scss转成css,将ES6语法转成ES5语法,将TypeScript转成JavaScript等等操作。 ## - Entry:入口,Webpack 执行构建的第一步将从 Entry 开始,可抽象成输入。 - Module:模块,在 Webpack 里一切皆模块,一个模块对应着一个文件。Webpack 会从配置的 Entry 开始递归找出所有依赖的模块。 - Chunk:代码块,一个 Chunk 由多个模块组合而成,用于代码合并与分割。 - Loader:模块转换器,用于把模块原内容按照需求转换成新内容。 - Plugin:扩展插件,在 Webpack 构建流程中的特定时机会广播出对应的事件,插件可以监听这些事件的发生,在特定时机做对应的事情。 ## 作用 >模块打包 、编译兼容 、 能力扩展 * 模块打包。可以将不同模块的文件打包整合在一起,并且保证它们之间的引用正确,执行有序。利用打包我们就可以在开发的时候根据我们自己的业务自由划分文件模块,保证项目结构的清晰和可读性。 * 编译兼容。在前端的“上古时期”,手写一堆浏览器兼容代码一直是令前端工程师头皮发麻的事情,而在今天这个问题被大大的弱化了,通过`webpack`的`Loader`机制,不仅仅可以帮助我们对代码做`polyfill`,还可以编译转换诸如`.less, .vue, .jsx`这类在浏览器无法识别的格式文件,让我们在开发的时候可以使用新特性和新语法做开发,提高开发效率。 * 能力扩展。通过`webpack`的`Plugin`机制,我们在实现模块化打包和编译兼容的基础上,可以进一步实现诸如按需加载,代码压缩等一系列功能,帮助我们进一步提高自动化程度,工程效率以及打包输出的质量 ## webpack与grunt、gulp的不同? 三者都是前端构建工具,grunt和gulp在早期比较流行,现在webpack相对来说比较主流,不过一些轻量化的任务还是会用gulp来处理,比如单独打包CSS文件等。 - grunt和gulp是基于任务和流(Task、Stream)的。 类似jQuery,找到一个(或一类)文件,对其做一系列链式操作,更新流上的数据, 整条链式操作构成了一个任务,多个任务就构成了整个web的构建流程。 - webpack是基于入口的。webpack会自动地递归解析入口所需要加载的所有资源文件,然后用不同的Loader来处理不同的文件,用Plugin来扩展webpack功能。 - 1,从构建思路来说 gulp和grunt需要开发者将整个前端构建过程拆分成多个`Task`,并合理控制所有`Task`的调用关系 webpack需要开发者找到入口,并需要清楚对于不同的资源应该使用什么Loader做何种解析和加工 - 2,对于知识背景来说 gulp更像后端开发者的思路,需要对于整个流程了如指掌, webpack更倾向于前端开发者的思路