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为每个使用相同变量的模块命名,用于区分,避免发生冲突