簡體   English   中英

在Dojo代碼中包含javascript函數

[英]Include javascript functions in dojo code

我有一個包含一些功能的js文件,例如文件x.js

我需要在其他文件中重用x.js中的函數,所以我不會兩次編寫相同的函數。 我嘗試了“ dojo / request / script”,但是沒有用。

關於如何導入這些功能有什么建議嗎?

理想情況下,應將文件放入AMD模塊。 例如,如果您的my/AB.js包含以下內容:

function f1(x) { /*..*/ }
function f2(y) { /*..*/ }

您應該將其重寫為:

define([], function() {
  return {
    f1: function(x) { /*..*/ },
    f2: function(y) { /*..*/ }
  }
});

然后,在其他JavaScript文件中,您可以使用require加載它。

require(['my/AB'], function(AB) {
  AB.f1('foo');
  AB.f2('bar');
});

請注意my/AB沒有.js擴展名!)

這樣的好處是,您在AB.js中的功能不再位於全局范圍內,即它們不會與其他人的功能發生沖突。 它還允許您稍后使用Dojo構建系統來部署優化的組合文件。

但是,這並不總是可能的。 也許其他JS文件依賴於全局范圍內的f1f2 但是,只需添加.js擴展名,您也可以使用Dojo的加載器加載非AMD常規文件。

require(['my/AB.js'], function() {
  window.f1('foo');
  window.f2('bar');
});

請注意,在所有這些情況下,我都假定您的代碼位於名為my的目錄中。 無論實際目錄是什么,都需要在dojoConfig中將其告知Dojo加載器。

<script type="text/javascript">
  var dojoConfig = {
    baseUrl: ".....",
    // your other config parameters,
    packages: [ 'my', '../folder/relative/to/baseUrl/my' ]
  };
</script>
<!-- your inclusion of dojo.js somewhere below this -->

PS:您實際上也可以從任意位置加載JS文件:

require(['http://example.com/js/my/AB.js'], function() {
  window.f1('foo');
  window.f2('bar');
});

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM