我对 RequireJS 有一个非常奇怪和令人沮丧的问题。当我为具有依赖项列表的模块调用 require 时,回调中可用的所有依赖项都引用单个模块。这可能更容易用代码解释:
包括 require.js 脚本(没有 data-main 属性)
<script type="text/javascript" src="/js/common/require.min.js" ></script>
在此之下,我包括了需要我的 main.js(在网站的所有页面中使用),它在回调中需要我的页面特定 js。
<script type="text/javascript">
require(['/js/require/main.js'], function () {
require(['page/home_page']);
});
</script>
main.js
requirejs.config({
baseUrl: 'js/require'
});
requirejs(['base'],
function() {
var base = require('base');
base.init();
});
home_page.js
define(['home','searchbar'], function (home,searchbar){
console.log(home.init == searchbar.init); // This is always true !!!
home.init();
searchbar.init();
});
主页.js
define(function(){
this.init = function(){
console.log('in home page');
}
return this;
});
搜索栏.js
define(function(){
this.init = function(){
console.log('Now in the searchbar init')
}
return this;
});
问题在于 home_page.js 两个模块 home 和 searchbar 引用了相同的东西。奇怪的是,现在我已经简化了这个例子,它选择哪一个似乎很随机。大多数时候它是搜索栏,但每隔几次刷新它就会回家。
有人有想法吗?这是非常明显的事情吗?
编辑:简化示例并提供所有模块源。