博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
webpack使用require.ensure进行代码分割
阅读量:6091 次
发布时间:2019-06-20

本文共 2036 字,大约阅读时间需要 6 分钟。

代码分割

实例来自于

假定我们有下面的项目结构

.├── dist├── js│   ├── a.js│   ├── b.js│   ├── c.js│   └── entry.js└── webpack.config.js

文件内容

entry.js

require('./a');require.ensure(['./b'], function(require){    require('./c');    console.log('done!');});

a.js

console.log('***** I AM a *****');

b.js

console.log('***** I AM b *****');

c.js

console.log('***** I AM c *****');

下面我们看一下webpack.config.js的配置

const path = require('path')module.exports =  {        entry : './js/entry.js'        ,        output : {            filename : 'bundle.js'            , path : path.resolve(__dirname, 'dist')            , publicPath: './dist/' //当使用代码分割时,publicPath很重要,它将告诉webpack从哪儿去加载其他打包的文件            , pathinfo : true        }    }

执行webpack打包之后,我们可以看到结果

执行webpack打包

我们发现,webpack打包生成了bundle.js以及1.bundle.js两个文件

查看文件的内容,我们可以发现

//bundle.js/******/ (function(modules) { // webpackBootstrap/******/     /*                webpack 集成的代码,这里略            *//******/     __webpack_require__.p = "./dist/"; //按需加载的路径/******/     // Load entry module and return exports/******/     return __webpack_require__(0);/******/ })/************************************************************************//******/ ([/* 0 *//*!*********************!*\  !*** ./js/entry.js ***!  \*********************//***/ function(module, exports, __webpack_require__) {    __webpack_require__(/*! ./a */ 1)    __webpack_require__.e/* nsure */(1, function (require) {        __webpack_require__(/*! ./c */ 3)        console.log('done!')    })/***/ },/* 1 *//*!*****************!*\  !*** ./js/a.js ***!  \*****************//***/ function(module, exports) {    console.log('I am a')/***/ }/******/ ]);
//1.bundle.jswebpackJsonp([1],[/* 0 */,/* 1 */,/* 2 *//*!*****************!*\  !*** ./js/b.js ***!  \*****************//***/ function(module, exports) {        console.log('I am b')/***/ },/* 3 *//*!*****************!*\  !*** ./js/c.js ***!  \*****************//***/ function(module, exports) {    console.log('I am c')/***/ }]);

a.js的内容被打包到bundle.js之中,而b.js,c.js则位于1.bundle.js中,b.js,c.js从主入口文件中分离了出来,而且只有c.js的内容被执行了

转载地址:http://hvmwa.baihongyu.com/

你可能感兴趣的文章
我的友情链接
查看>>
用yum安装mariadb
查看>>
一点IT"边缘化"的人的思考
查看>>
WPF 降低.net framework到4.0
查看>>
搭建一个通用的脚手架
查看>>
开年巨制!千人千面回放技术让你“看到”Flutter用户侧问题
查看>>
开源磁盘加密软件VeraCrypt教程
查看>>
本地vs云:大数据厮杀的最终幸存者会是谁?
查看>>
阿里云公共镜像、自定义镜像、共享镜像和镜像市场的区别 ...
查看>>
shadowtunnel v1.7 发布:新增上级负载均衡支持独立密码
查看>>
Java线程:什么是线程
查看>>
mysql5.7 创建一个超级管理员
查看>>
【框架整合】Maven-SpringMVC3.X+Spring3.X+MyBatis3-日志、JSON解析、表关联查询等均已配置好...
查看>>
要想成为高级Java程序员需要具备哪些知识呢?
查看>>
带着问题去学习--Nginx配置解析(一)
查看>>
onix-文件系统
查看>>
java.io.Serializable浅析
查看>>
我的友情链接
查看>>
多线程之线程池任务管理通用模板
查看>>
CSS3让长单词与URL地址自动换行——word-wrap属性
查看>>