0
我有这个包含一些函数的js文件,例如文件x.js
。在dojo代码中包含javascript函数
我需要在其他文件中重用x.js
中的函数,所以我不写两次相同的函数。我尝试了“dojo/request/script”,但它不起作用。
有没有关于如何导入这些函数的建议?
我有这个包含一些函数的js文件,例如文件x.js
。在dojo代码中包含javascript函数
我需要在其他文件中重用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文件(S),你可以使用require
加载它。
require(['my/AB'], function(AB) {
AB.f1('foo');
AB.f2('bar');
});
(注意,有没有.js
扩展在my/AB
!)
这样做,你在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');
});
完美。 我非常感谢你的帮助Frode。 – Tarek