webpack生成代码
来源:互联网 发布:通信网络集成资质取消 编辑:程序博客网 时间:2024/05/16 02:14
webpack.config.js
const path = require('path');module.exports = { entry: './file.js', output: { path: path.resolve(__dirname, 'dist'), filename: 'bundle.js' }};
file.js
var tmp = require('./test.js');console.log(tmp.name)
test.js
var a= require('./2.js');module.exports = {name: 'ok'}
2.js
module.exports = {name:"hello"}
打包后,生成的bundle.js
(function(modules) { // webpackBootstrap // The module cache var installedModules = {};/******/ // The require function function __webpack_require__(moduleId) {/******/ // Check if module is in cache if(installedModules[moduleId]) { return installedModules[moduleId].exports; } // Create a new module (and put it into the cache) var module = installedModules[moduleId] = { i: moduleId, l: false, exports: {} };/******/ // Execute the module function modules[moduleId].call(module.exports, module, module.exports, __webpack_require__);/******/ // Flag the module as loaded module.l = true;/******/ // Return the exports of the module return module.exports; }/******//******/ // expose the modules object (__webpack_modules__) __webpack_require__.m = modules;/******/ // expose the module cache __webpack_require__.c = installedModules;/******/ // define getter function for harmony exports __webpack_require__.d = function(exports, name, getter) { if(!__webpack_require__.o(exports, name)) { Object.defineProperty(exports, name, { configurable: false, enumerable: true, get: getter }); } };/******/ // getDefaultExport function for compatibility with non-harmony modules __webpack_require__.n = function(module) { var getter = module && module.__esModule ? function getDefault() { return module['default']; } : function getModuleExports() { return module; }; __webpack_require__.d(getter, 'a', getter); return getter; };/******/ // Object.prototype.hasOwnProperty.call __webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };/******/ // __webpack_public_path__ __webpack_require__.p = "";/******/ // Load entry module and return exports return __webpack_require__(__webpack_require__.s = 0);})/************************************************************************/([/* 0 *//***/ (function(module, exports, __webpack_require__) {var tmp = __webpack_require__(1);console.log(tmp.name)/***/ }),/* 1 *//***/ (function(module, exports, __webpack_require__) {var a= __webpack_require__(2);module.exports = {name: 'ok'}/***/ }),/* 2 *//***/ (function(module, exports) {module.exports = {name:"hello"}/***/ })]);
首先从生成的代码中我们看到,其实是一个立即执行函数,后面的代码就是传进去的参数,是一个数组,也就是我们定义的模块。定义一个webpack_require函数,并且给这个函数挂载了一些属性。
最后执行webpack_require(起始模块id),然后就是递归地解析依赖,并且把require的结果进行缓存。
阅读全文
0 0
- webpack生成代码
- Gulp配合Webpack的时候,如何让Webpack生成生产环境代码
- webpack代码分离 ensure
- Webpack 代码拆分
- Webpack 代码分离
- webpack之代码分离
- webpack简单代码分割
- 深入剖析 webpack 打包生成的一大堆代码到底是啥
- 使用webpack打包ES6代码
- webpack前端代码优化插件
- webpack 代码压缩优化篇
- webpack打包路径问题,生成相对路径
- webpack自动生成项目中的HTML文件
- webpack打包生成zip包的解决办法
- WebPack
- webpack
- webpack
- webpack
- k8s安装
- 廖老师Git学习代码笔记
- OkHttp源码读后感
- Java基本数据类型
- 关于Python中的类普通继承与super函数继承
- webpack生成代码
- apache和tomcat区别
- Kafka入门实例
- ES6语法重构的react组件
- ANR产生的原因及其定位分析
- python Day 1
- (OK) MIMP
- vim剪切指定内容
- (五)抽象工厂模式详解