[英]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文件依賴於全局范圍內的f1
和f2
。 但是,只需添加.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.