账号密码登录
微信安全登录
微信扫描二维码登录

登录后绑定QQ、微信即可实现信息互通

手机验证码登录
找回密码返回
邮箱找回 手机找回
注册账号返回
其他登录方式
分享
  • 收藏
    X
    require.ensure通过webpack打包后出现2个文件
    41
    0

    异步加载代码如下:

    index.js :

    require.ensure(['../mall/order'],function(require){
          var order = require('../mall/order');
      });
      
    或者
    
    require.ensure([],function(require){
          var order = require('../mall/order');
      });
    
    

    order.js也没什么特殊的, 里面也同步引用了一些js

        var CryptoJS = require('crypto-js/core');
        require('crypto-js/aes');
        require('crypto-js/mode-ecb');
        require('crypto-js/pad-pkcs7');
        require('crypto-js/enc-utf8');
        require('crypto-js/enc-base64');
        var CollectionInfo = require('./collectInfo');
        require('./user');
        require('./address');
        var Order = {
            ...
        }
        module.exports = Order;
    

    order.js打包后被拆成了2个js, 找不到原因


    import也试过了, 也是把order.js拆成了2个js:

    import('../mall/order').then(function(order){
          var order = order;
      });
    
    
    0
    打赏
    收藏
    点击回答
        全部回答
    • 共 0 条
    • 耳下落腮红 普通会员 1楼

      在webpack中,require.ensure是一种加载依赖项的方式,它主要用于当依赖项不能从其自身的代码中直接获取时。当require确保遇到不能从其自身的代码中获取的依赖项时,它会生成一个文件,这个文件包含了require确保需要加载的依赖项的详细信息。

      当webpack打包后,需要确保的依赖项可能来自多个模块,或者可能来自外部库。如果require确保在打包过程中遇到了不能从其自身的代码中获取的依赖项,它会生成一个文件,这个文件包含了这些依赖项的详细信息。

      这个生成的文件可以在webpack的devServer中使用,这个devServer会在每次启动时检查require确保的依赖项是否已经被加载,如果未加载,它会自动下载并加载这个文件。

      例如,如果你有一个require确保的依赖项A,它在打包后的文件中会包含以下内容:

      { "name": "requireEnsure/A", "version": "1.0.0", "description": "A dependency that can't be loaded directly from its own code", "dependencies": { "dependenciesB": "^1.0.0" } }

      在webpack的devServer中,你可以使用requireEnsure的依赖项信息来判断是否需要加载这个依赖项,例如:

      ```javascript const { resolve } = require('path');

      if (requireEnsure.someDependencyB) { // need to load dependencyB const module = require('requireEnsure/someDependencyB'); module.default = 'someValue'; } ```

      在这个例子中,requireEnsure的依赖项信息被包含在someDependencyB模块的default属性中。如果someDependencyB在打包后的文件中没有被加载,webpack就会自动下载并加载这个文件。

    更多回答
    扫一扫访问手机版
    • 回到顶部
    • 回到顶部