我有这个 js 文件,其中包含一些功能,例如 file x.js
。
我需要x.js
在其他文件中重用这些函数,所以我不会两次编写相同的函数。我尝试了“dojo/request/script”,但它不起作用。
关于如何导入这些功能有什么建议吗?
我有这个 js 文件,其中包含一些功能,例如 file 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');
});
(请注意,没有.js
扩展my/AB
!)
这样做的好处是您的函数AB.js
不再在全局范围内,即它们不会与其他人的函数发生冲突。它还允许您稍后使用 Dojo 构建系统部署优化的组合文件。
然而,这并不总是可能的。也许其他 JS 文件依赖f1
并f2
处于全局范围内。但是您也可以使用 Dojo 的加载器加载非 AMD 的常规文件,只需添加.js
扩展名即可。
require(['my/AB.js'], function() {
window.f1('foo');
window.f2('bar');
});
请注意,在所有这些情况下,我都假设您的代码位于名为my
. 无论您实际调用什么目录,您都需要在 dojoConfig.xml 中告诉 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');
});