实例来自于webpack
假定咱们有下面的项目结构javascript
. ├── dist ├── js │ ├── a.js │ ├── b.js │ ├── c.js │ └── entry.js └── webpack.config.js
文件内容
entry.jsjava
require('./a'); require.ensure(['./b'], function(require){ require('./c'); console.log('done!'); });
a.jswebpack
console.log('***** I AM a *****');
b.jsweb
console.log('***** I AM b *****');
c.jside
console.log('***** I AM c *****');
下面咱们看一下webpack.config.js
的配置ui
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打包以后,咱们能够看到结果spa
咱们发现,webpack打包生成了bundle.js
以及1.bundle.js
两个文件
查看文件的内容,咱们能够发现code
//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.js webpackJsonp([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
的内容被执行了ip