0

私は RequireJS で非常に奇妙で苛立たしい問題を抱えています。依存関係のリストを持つモジュールに対して require を呼び出すと、コールバックで利用可能なすべての依存関係が単一のモジュールを参照します。これはおそらくコードで説明する方が簡単です:

require.js スクリプトを含む (data-main 属性なし)

<script type="text/javascript" src="/js/common/require.min.js" ></script>

その下に、require my 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();
});

home.js

define(function(){
  this.init = function(){
    console.log('in home page'); 
  }
  return this;
});

searchbar.js

define(function(){
  this.init = function(){
    console.log('Now in the searchbar init')
  }
  return this;
});

この問題は、home_page.js モジュールのホームと検索バーの両方が同じものを参照していることにあります。奇妙なことに、この例を単純化した今では、どちらを選択するかはかなりランダムに見えます。ほとんどの場合、それは検索バーですが、数回更新するたびにホームになります。

誰にもアイデアがありますか?それはひどく明白なことですか?

編集: 簡略化された例とすべてのモジュール ソースを提供します。

4

1 に答える 1