繁体   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