1模块确实很好的解决了复杂应用开发过程中代码组织问题,但是随着我们引入模块,我们的应用也会产生新的问题:1.ES Modules 存在环境兼容问题(主流浏览器都兼容这种特性,但是我们不能控制统一用户浏览器使用问题)2.模块文件过多,网络请求频繁,会影响应用的使用模块化能够在开发环境中将一些新的特性(ES6)在生成阶段编译成Es5,就不会存在兼容的问题啦,同时将所有的散落文件打包到一起(bundle.js),就解决了用户对文件进行频繁的请求的问题,最后它能够支持所有不同种类类型的文件(图片、样式、文字等)同时在开发过程中当成模块化来使用,但是在生产环境中就不用划分模块化,统统将他们打包到同一个文件中。可以总结为:新特性代码编译、模块化JavaScript打包、支持不同类型资源模块。
webpack 1.首先webpack作为模块打包工具,本身就能解决javaScript模块打包的问题(直接将零散的js通过webpack打包的一个js文件当中,同时将那些有环境兼容问题的代码通过模块加载器loader对其进行编译和转换) 2.webpack具有代码拆分的能力,能够按照我们的需要进行打包,可以避免所有文件全部打包到一起的问题(我们可以将初始必须打包的模块都打包到一起)其他模块通过异步引入 3.webpack支持我们任意引入各种其他的资源模块文件(import 引入css,这些css文件最终通过style标签进行工作)