zoukankan      html  css  js  c++  java
  • Webpack 模块处理

    webpack模块处理

    1. ES6 静态Import

    ES6的import会被转化为commonjs格式或者是AMD格式,babel默认会把ES6的模块转化为commonjs规范的。

    import list from './list';
    //等价于
    var list = require('./list');
    

    两种写法只需选一种,避免在代码中同时使用造成混淆。

    2. ES6 动态Import

    语法:Import.then Promise回调
    动态的加载模块,import调用点会被解析为模块分割入口点,生成单独chunk。

    import('lodash').then(_ => {
      // Do something with lodash (a.k.a '_')...
    });
    
    

    3. CommonJS同步

    var $ = require('jquery');
    var myModule = require('my-module');
    var a = require('./a');
    //此时webpack会将a.js打包进引用它的文件中,这是最普遍的情形。
    
    • require.resolve
      同步模块抽取,编译器会保证依赖被打包到输出bundle。

    4. CommonJS异步

    语法:require.ensure
    注:require.ensure() 被webpack包装为import() Promise.
    webpack 在编译时,会静态地解析代码中的 require.ensure(),同时将模块添加到一个分开的 chunk 当中。这个新的 chunk 会被 webpack 通过 jsonp 来按需加载。

    require.ensure([], function(require){
        var list = require('./list');
        list.show();
    });
    //打包输出:1.XXXX.js
    //
    require.ensure([], function(require){
        var list = require('./list');
        list.show();
    }, 'list');
    //打包输出: list.XXX.js
    
    require.ensure([], function(require){
        var list = require('./list');
        list.show();
        var edit = require('./edit');
        edit.display();
    }, 'list_and_edit');
    //打包输出: list_and_edit.XXX.js
    
    

    4. AMD

    webpack既支持commonjs规范也支持AMD规范,这就意味着AMD的经典语法是可以正常使用的,如:

    require(['./list'], function(list){
        list.show();
    });
    //打包输出:1.XXX.js
    
    require(['./list', './edit'], function(list, edit){
        list.show();
        edit.display();
    });
    //不支持自定义文件名
    
    //同require.ensure, 给定的依赖b会被打包为单独bundlle并在需要时可进行异步加载.
    require(['b'], function(b) {
      var c = require('c');
    });
    

    refs:
    https://webpack.js.org/api/module-methods/#import
    https://blog.csdn.net/huang100qi/article/details/78060086

  • 相关阅读:
    提取RDLC reporting相关dll的方式,打包客户端时需要用
    VS2012程序打包部署详解
    快速打包你的应用程序——Inno Setup
    "RDLC"报表-参数传递及主从报表
    如何在多个页中显示行标题和列标题 (Reporting Services)
    编译cocos2d-x 4.0版本
    2080Ti评测结果
    (转)u3d设计模式
    java基础知识(一)
    Java8新特性学习(一)--lambda表达式
  • 原文地址:https://www.cnblogs.com/full-stack-engineer/p/9665540.html
Copyright © 2011-2022 走看看