RequireJS 主入口加载模块经常会加载失败的问题

在接入requirejs时,在main入口遇到了这样的问题,使用jquery,刷新10次页面会有3-4次加载失败,找不到$符号等等

require.config({
    'baseUrl': './modules',
    'paths': {
        'jquery': '../../../jquery/jquery-1.8.0.min',
        'request' : 'request',
        'helper' : 'helper',
        'log' : 'log',
        'pageBar' : 'pageBar',
        'supplier' : '../supplier/supplier'
    },
    'waitSeconds': 0
});

require(['jquery','request','helper','log','pageBar'],function ($, request, helper, log, pageBar) {
    $(function () {
        require(['supplier']);
    });
});

在百度找了好久也没有找到合适的答案,到官方文档寻求帮助时,看到了module_id的概念,我是第一次使用,没有好好阅读文档,第一次知道有这个东西来区分不同模块

原因是我多个模块中都使用了jquery,定义了$,由于requirejs是异步加载,不按照按顺序加载,就可能发生后面的模块比前面的模块先加载,个人理解,可能也不是这么回事,但暂时解决了问题。

修改前:

define('jquery',function ($) {
    return {
        refash: function (name, funcName) {
            ...
        }
    }
})

修改后:

define('pageBar','jquery',function ($) {
    return {
        refash: function (name, funcName) {
            ...
        }
    }
})

使用module_id为每个使用相同变量的模块命名,用于区分,避免发生冲突

posted on 2017-12-06 16:02  東風missile  阅读(683)  评论(0编辑  收藏  举报

导航