美文网首页
webpack 模块化的原理

webpack 模块化的原理

作者: yplgreenlotus | 来源:发表于2017-12-15 13:16 被阅读0次

通过实例来说明webpack 模块化的原理

1、company.js文件:

export default {

        company:'lexin'

};

2、lotus.js文件:

import company from './company';

export default {

        name:'greenlotus'

        age : 28

};

console.log(company);

3、webpack.config.js文件

const path = require('path');

module.exports = {

        entry: './lotus.js',

        output: {

                path: path.resolve(__dirname, 'dist'),

                filename: 'bundle.js',

        }

};

4、webpack 编译后的精简代码

(function(modules) {

        function __webpack_require__(moduleId) {

                var module = {

                        i: moduleId,

                        l: false,

                        exports: {}

                };

                modules[moduleId].call(module.exports, module, module.exports, __webpack_require__);

                return module.exports;

        }

        return __webpack_require__(0);

})([

        (function(module, __webpack_exports__, __webpack_require__) {

                "use strict";

                //__esModule 表明这是个由 es6 转换来的commonjs规范输出

                Object.defineProperty(__webpack_exports__, "__esModule", { value: true });

                //引入依赖的模块(也就是'import company from './company')

                var __WEBPACK_IMPORTED_MODULE_0__company__ = __webpack_require__(1);

                //lotus.js default export

                __webpack_exports__["default"] = ({

                        name:'greenlotus'

                        age : 28

                });

                //输出company对象

                console.log(__WEBPACK_IMPORTED_MODULE_0__company__["company"]);

        }),

        (function(module, __webpack_exports__, __webpack_require__) {

                "use strict";

                //company.js default export

                __webpack_exports__["company"] = ({company:'lexin'});

        })

]);

实例重点讲解:

1、通过上面代码发现,入口是一个自执行函数:(function(modules){ ... })([arg1,arg2,...]);

2、arg1代表入口文件lotus.js 实例化函数、arg2就是依赖的company.js实例化函数

3、代码主要函数:__webpack_require__,它所做的就是定义module对象 , 然后调用arg1、arg2 实例化module.exports对象,最后返回 module.exports。

相关文章

  • webpack 模块化的原理

    通过实例来说明webpack 模块化的原理 1、company.js文件: export default { co...

  • webpack解惑

    1、webpack的模块化原理webpack 本身维护了一套模块系统,这套模块系统兼容了所有前端历史进程下的模块规...

  • webpack模块化原理

    我们通常将webpack称作模块打包机,今天我们就来看看webpack到底如何实现模块化的 一句话概括,webpa...

  • webpack学习

    webpack 说起 Webpack,大家都知道这是一个模块化构建(打包)工具,那么究竟什么是模块化呢? 模块化 ...

  • react源码分析(0)

    前言     用多了模块化工具,webpack,jsx,babel,简便了我们敲代码的同时,也让我们对内部的原理越...

  • Webpack 高频面试题汇总

    # 什么是 webpack webpack 是一个打包模块化 JavaScript 的工具,专注构建模块化项目,在...

  • 四、webpack模块化原理

    Webpack打包的代码,允许我们使用各种各样的模块化,但是最常用的是CommonJS、ES Module。需要的...

  • 2018-07-29

    # Webpack入门 标签(空格分隔): webpack --- ##模块化 >模块化是指将一个复杂的系统分解为...

  • bunny笔记|手写webpack

    学习目标 了解webpack打包原理 了解webpack的loader原理 了解webpack的插件原理 了解as...

  • webpack

    webpack有什么优点或者缺点 webpack是模块化打包工具优点:— 可以模块化的打包任何资源,适配任何模块系...

网友评论

      本文标题:webpack 模块化的原理

      本文链接:https://www.haomeiwen.com/subject/csbrwxtx.html