javascript - 如何在webpack中实现一个requireAsync方法?
PHP中文网
PHP中文网 2017-04-10 17:50:32
[JavaScript讨论组]

在旧项目中有一个方法requireAsync实现异步加载一个或多个模块:

/**
 * 异步请求模块文件
 * @param   {String}    uri       [模块路径,支持路径数组]
 * @param   {Function}  callback  [模块请求成功后的回调函数]
 * @param   {Function}  context   [作用域]
 */
function requireAsync(uri, callback, context) {
    // Seajs
    if (util.isFunc(require.async)) {
        require.async(uri, function() {
            callback.apply(context, arguments);
        });
    }
    // requirejs
    else {
        require(typeof uri === 'string' ? [uri] : uri, function() {
            callback.apply(context, arguments);
        });
    }
},

最近项目要改成webpack的部署方式,结果这个方法就报错了:

WARNING in ./src/module.js
Critical dependencies:
103:18-25 require function is used in a way in which dependencies cannot be statically extracted
104:3-10 require function is used in a way in which dependencies cannot be statically extracted
109:23-30 require function is used in a way in which dependencies cannot be statically extracted
110:3-10 require function is used in a way in which dependencies cannot be statically extracted
 @ ./src/module.js 103:18-25 104:3-10 109:23-30 110:3-10

查了下是因为webpack下require是不能传变量或数组的,那么怎样才能在webpack的编译中实现一个requireAsync的函数,并且能在脱离webpack后能正常使用呢?

PHP中文网
PHP中文网

认证高级PHP讲师

全部回复(2)
伊谢尔伦

参考这个:https://github.com/webpack/webpack/issues/240

ringa_lee

遇到了同样的问题,发现了一个东西:seajs-loader
直接直接将require.async转为webpack的ensure语法
并异步加载

热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 意见反馈 讲师合作 广告合作 最新更新 English
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号