javascript - 非amd/cmd/umd/common规范的模块用r.js打包后,报错: jQuery is not defined
黄舟
黄舟 2017-04-10 17:10:55
[JavaScript讨论组]

比如有一个a.js,这是一个没有按amd规范包装的库,代码的写法为:

(function($){
    //do some stuff..
})(jQuery);

build.js配置为:

({
    appDir: './amd',
    baseUrl: './',
    dir: '../dist/static/js',
    findNestedDependencies: false,
    optimize : 'none',
    mainConfigFile: './amd/config/config.js',
    modules: [
        {
            name: 'common',
            exclude:['jquery']   //手动排除不需要合并的依赖项
        }
    ]
})

由于我不想将jquery和其他库打包到一起,common.js依赖a.js,a.js依赖jquery.js。打包后,在common.js里的a模块无法找到jquery。我自己试了一下将a.js手动包装成amd后是可以解决问题的,但是有很多库都可能没有包装过,所以想问一下有没有办法不包装也可以在打包后正常运行呢?
补充:
shim有正常配置了

'a': {
    deps: ['jquery']
}
黄舟
黄舟

人生最曼妙的风景,竟是内心的淡定与从容!

全部回复(1)
黄舟

可以将a.js用
`
(function (factory) {

'use strict';
if (typeof define === 'function' && define.amd) {
    // Register as an anonymous AMD module:
    define(['jquery'], factory);
} else {
    // Browser globals:
    factory(window.jQuery);
}

}
`
包装一下,具体参考jquery源码的写法。

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

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