咨询热线:15565668898 联系人:潜龙军 地址:西藏自治省拉萨市色拉路第六安居园
webpack4 系列教程(三): 多页面解决方案--提取公共代码
来源:星投娱乐最新客服 发布时间:2019-11-09 点击量:484
这节课讲解webpack4
打包多页面应用过程中的提取公共代码部分。相比于webpack3
,4.0
版本用optimization.splitChunks
配置替换了3.0
版本的CommonsChunkPlugin
插件。在使用和配置上,更加方便和清晰。
>>> 本节课源码
>>> 所有课程源码
1. 准备工作
按照惯例,我们在src/
文件夹下创建pageA.js
和pageB.js
分别作为两个入口文件。同时,这两个入口文件同时引用subPageA.js
和subPageB.js
,而subPageA.js
和subPageB.js
又同时引用module.js
文件。
代码目录结构如下图所示:
希望大家理清逻辑关系,下面从底层往上层进行代码书写。
module.js
:
export default "module";
subPageA.js
:
import "./module";export default "subPageA";
subPageB.js
:
import "./module";export default "subPageB";
正如我们所见,subPageA.js
和subPageB.js
同时引用module.js
。
最后,我们封装入口文件。而为了让情况更真实,这两个入口文件又同时引用了lodash
这个第三方库。
pageA.js
:
import "./subPageA";import "./subPageB";import * as _ from "lodash";console.log("At page "A" :", _);export default "pageA";
pageB.js
:
import "./subPageA";import "./subPageB";import * as _ from "lodash";console.log("At page "B" :", _);export default "pageB";
好了,到此为止,需要编写的代码已经完成了。>>> src 文件夹项目源码
2. 编写webpack
配置文件
首先我们应该安装先关的库,创建package.json
,输入以下内容:
{ "devDependencies": { "webpack": "^4.15.1" }, "dependencies": { "lodash": "^4.17.10" }}
在命令行中运行npm install
即可。
然后配置webpack.config.js
文件。文件配置如下:
const webpack = require("webpack");const path = require("path");module.exports = { // 多页面应用 entry: { pageA: "./src/pageA.js", pageB: "./src/pageB.js" }, output: { path: path.resolve(__dirname, "dist"), filename: "[name].bundle.js", chunkFilename: "[name].chunk.js" }, optimization: { splitChunks: { cacheGroups: { // 注意: priority属性 // 其次: 打包业务中公共代码 common: { name: "common", chunks: "all", minSize: 1, priority: 0 }, // 首先: 打包node_modules中的文件 vendor: { name: "vendor", test: /[\/]node_modules[\/]/, chunks: "all", priority: 10 } } } }};
着重来看optimization.splitChunks
配置。我们将需要打包的代码放在cacheGroups
属性中。
其中,每个键对值就是被打包的一部分。例如代码中的common
和vendor
。值得注意的是,针对第三方库(例如lodash
)通过设置priority
来让其先被打包提取,最后再提取剩余代码。
所以,上述配置中公共代码的提取顺序其实是:
... ...vendor: { name: "vendor", test: /[\/]node_modules[\/]/, chunks: "all", priority: 10},common: { name: "common", chunks: "all", minSize: 1, priority: 0}... ...
3. 打包和引用
命令行中运行webpack
即可打包。可以看到,我们成功提取了公共代码,如下图所示:
最后,打包的结果在dist/
文件夹下面,我们要在index.html
中引用打包好的js
文件,index.html
代码如下:
<!DOCTYPE html><html lang="en"><head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <meta http-equiv="X-UA-Compatible" content="ie=edge"> <title>Document</title></head><body> <script src="./dist/common.chunk.js"></script> <script src="./dist/vendor.chunk.js"></script> <script src="./dist/pageA.bundle.js"></script> <script src="./dist/pageB.bundle.js"></script></body></html>
使用 Chrome 或者 Firfox 打开index.html
,并且打开控制台即可。
欢迎技术交流,引用请注明出处。个人网站:Yuan Xin原文链接:webpack4 系列教程(三): 多页面解决方案--提取公共代码
相关产品
-
关于吉田的证言,从1990年代起就有人指出缺乏佐证证据。日本《朝日新闻》2014年对有关慰安妇的以往报道进行验证,认为其证言不属实,撤销了20世纪80至90年代的多篇报道。
-
综上,实质性减产还处于初级阶段,成本支撑不足,需求不会出现大的放量,新的政策支撑难以指望,钢材供过于求的局面不会改变。虽然近日钢价出现反弹行情,但中长期的弱势格局恐难改变,技术性反弹的幅度会比较有限。 (作者系国泰君安期货分析师)
-
身为“奇葩前辈”,马东对于何炅的加盟异常兴奋,在现场盛赞何炅:“主持界没有人能排在何炅前面,他是绝对的一线!”马东表示,何炅在哪里都会成为中心,而自己算是“夹缝中生存”。何炅受到盛赞后却压力倍增,谦虚表示不会有比马东更好的“奇葩”主持,自己也没想到会有胆量来,这一“重任”对自己来说也是挑战,何炅谦虚放言:“我现在还战战兢兢,接下来我希望不拖大家的后腿。”(陈达)
-
赛后,科扎克对弟子的表现大加赞赏:“相比那不勒斯,哈姆西克配得上一家更大的俱乐部。他已经为一家真正的大俱乐部准备好了!”
-
台湾女企业家协会由马爱珍女士创立,以“爱心、奉献、美丽、尊严”为精神,由26种行业300余位杰出女企业家组成,被称为目前台湾地区最具影响力的女性工商团体。近年来,该协会与大陆多个省市区妇联、女企业家和港澳相关组织、企业家互动热络。(完)
-
罗伯特·帕克(Robert Parker)给这款2009年份酒的评分为95分,并评价道,此款酒非常浓郁,结构十分丝滑,口感精致、总体平衡、纯净。
-
“作为一名侨领,我希望能发挥海外侨团的作用,为家乡发展做贡献。”列席会议的港澳台侨事务顾问、澳大利亚宁波同乡会会长徐柏聪如是说道。
-
为了达到这个简单的目的,NFL每年要为此技术支付512万美元的专利使用费,平均每场比赛就是2万美元。这条线其实就和冰球比赛里的轨迹效果一样,只是方便观众而已——看不懂?不要紧,你看电视上都有呢。
热点资讯
- 保险创新三层次:产品、技术和监管2019-06-18
- 40亿美元,消息称软银愿景基金正寻求贷款2019-06-18
- 陈皮泡水喝的禁忌陈皮与这些食物相克2019-11-09
- 重楼种植技术重楼栽培过程中的要点2019-06-18
- 샌즈투런홈런2019-06-18
- 滴滴9月15日恢复深夜出行服务,试行夜运营规则2019-10-29
- 《地铁:离去》长度超前两作之和,不会有跑腿任务2019-06-18
- 如果没了马斯克特斯拉该怎么办?2019-06-18