因为webpack是基于nodejs的一款工具,所以在学习过程中涉及到的nodejs知识也会进行解释进行发散性拓展。
webpack中文文档
模块。出口={ 条目:“。/道路//我/条目/file.js” }; >之前出口变量是在模块的文件级作用域内可用的,且在模块执行之前赋值给模块。出口在nodejs中,提供了出口和需要两个对象,其中出口是模块公开的接口,需要用于从外部获取一个模块的接口,即所获取模块的出口对象。而在出口抛出的接口中,如果你希望你的模块就想为一个特别的对象类型,请使用module.exports;如果希望模块成为一个传统的模块实例,请使用exports.xx方法;module.exports才是真正的接口,出口只不过是它的一个辅助工具。最终返回给调用的是module.exports而不是出口。这里引用nodejs官网的一个,例子
功能要求(/*…*/){ const模块={出口:{}}; ((模块、出口)=比;{“请输入代码”//模块代码在这。在这个例子中,定义了一个函数。 函数someFunc () {} 出口=someFunc;//也就是说你单独给出口赋值时候出口不属于模块了是一个单独的变量//此时,出口不再是一个模块。出口的快捷方式,//且这个模块依然导出一个空的默认对象。 模块。出口=someFunc;//这里导出的函数是挂在模块里的所以会被导入//此时,该模块导出someFunc,而不是默认对象。 })(模块,module.exports); 返回module.exports;//这里是这句话的解释(最终返回给调用的是module.exports而不是出口) } >之前
条目入口起点,条目所配置的文件路径所指向的文件为项目的入口文件也就是内部依赖的开始会根据入口文件去逐层加载依赖.Chunk和打包时入口文件配置有关如果入口是一个字符串或数组,就只会生成一个块,这时块的名称是主要的,如果入口是一个对象,就可能会出现多个块,这时块的名称是对象键值对里键的名称。
条目接受三种类型值
1。例:单入口写法字符串
条目:“。/app//我/条目/file.js ' 条目:{主要:“。/app//我/条目/file.js’”} >之前2。单入口数组写法阵例:
条目:['。/应用程序/entry1”、“/app/entry2 ']。 >之前,在你想要多个依赖文件一起注入,并且将它们的依赖导向(图)到一个“块”时,传入数组的方式就很有用。也就是说合并了多个文件的依赖模块。
3。对象语法对象例:
条目:{:”。/应用程序/条目一个”,b: [’。/应用程序/entry-b1”、“。/app/entry-b2 ']}分离第三方模块和公共模块
分离第三方模块和webpack运行文件等类似公共模块是为了避免加载等问价过大等待时间长的优化,当你不同的入口文件都依赖了相同的第三方模块这时候需要把他们抽离出来。这里主要应用了入口的对象语法和CommonsChunkPlugin。实际应用举例:
1。分离业务模块和公共模块(webpack文件,第三方模块,自定义公共模块)
const path=要求(“路径”); const webpack=要求(“webpack”); const packagejson=要求(“。/package.json”); 常量配置={ 条目:{ 第一:“。/src/first.js ',//引入了common.j和vue.js 第二:“。/src/second.js ',//引入了common.j和vue.js 供应商:种(packagejson.dependencies)//获取生产环境依赖库的//模块名称,返回一个数组,这里涉及的是单入口数组写法将多个依赖合并到一个块中//在这里vue作为第三方库会被合并 }, 输出:{ 路径:path.resolve (__dirname '。/dist '), 文件名:“[名字]. js” }, 插件:[ 新webpack.optimize.CommonsChunkPlugin ({ 名称:“供应商”,//指定已经存在的这一块里指向的是供应商, 公共部分模块都会合并到这个块名对应的文件,不指定默认生成的名字为下议院的块。 文件名:“[名字]. js”//抽离出公共部分的文件名 }), ] } 模块。出口=配置; >之前2。详细分离业务模块第三方依赖公共模块webpack运行文件
插件:[//这一步把webpack运行文件抽离出来 新webpack.optimize.CommonsChunkPlugin({//先抽离所用的公共模块 名称:“供应商”, 文件名:“[名字]. js” }), 新webpack.optimize.CommonsChunkPlugin({//再指定供应商从中抽离webpack运行文件 名称:“运行时”, 文件名:“[名字]. js”, 块(“供应商”): }), 新webpack.optimize.CommonsChunkPlugin ({ 名称:“供应商”,“运行时”, 文件名:“[名字]. js”, minChunks:∞//只有当入口文件(块)在=3才生效,//用来在第三方库中分离自定义的公共模块 }), 新webpack.optimize.CommonsChunkPlugin ({ 名称:“常见”, 文件名:“[名字]. js”, minChunks: 2//默认为2,意思是模块被多少个块引用才被抽离//由共同被于第一和第二引用所以会被抽离 块:['第一次','第二']//从first.js和第二。js中抽取块 }), ]浅谈webpack四个核心概念之条目