【问题标题】:How to access functions between different JS files? [closed]不同JS文件之间如何访问函数? [关闭]
【发布时间】:2013-01-03 08:55:07
【问题描述】:

我试图通过使用多个专注于某些特定任务的 javascript 文件来分离我的应用程序的逻辑。

JSfiles 中定义的函数需要在文件之间访问。

我知道调用函数的顺序很重要,定义“全局”与“本地”范围很重要。在以下文件中,文件未包装在函数中,因此我认为它们在全局范围内。

file1.js

function addingToDOM(stuff) {
...  
...
}

file2.js

// call addingToDOM
addingToDOM(someStuff);
function doOtherTHings() {
...
...
}

HTML(文件顺序)

<script src="file1.js"></script>
<script src="file2.js"></script>

错误
addingToDOM is not defined

file2.js 在 HTML 中的 file1.js 之后调用 file1.js
我不明白为什么它没有定义。

【问题讨论】:

  • 肯定还有更多。如果addingToDOM 在全局范围内定义,它将起作用。由于它似乎不起作用,您必须提供更多信息。 file1.js 真的加载了吗?
  • 双重检查...未加载。菜鸟错误。关闭。

标签: javascript html scope


【解决方案1】:

您的 JS 文件应该只定义函数并调用同一个 JS 文件中的函数。如果要从另一个 JS 文件中调用函数,则需要先加载该 JS 文件。我会将所有调用代码(有点像其他语言(如 C)中的“主”函数)放在一个地方,最好放在 html 文档的末尾。毕竟,加载了其他 JS 文件(和标记)。并不是你不能从file2调用file1中的函数,而是它们都应该在你的代码开始运行之前完全加载。

您的设置应该按原样运行,但请确保调用第一个需要运行的函数,而不是从 JS 文件中,而是在 HTML 文档的末尾。

【讨论】:

  • 很好,@Tyler 先生。我的编辑(以及我所做的小改进)没有被考虑,但你有机会自己编辑。你做得很好:)。恭喜。
【解决方案2】:

问题看起来像是在脚本标签中引用了您的 src 属性。在 HTML 中试试这个:

<script src="file1.js"></script>
<script src="file2.js"></script>

【讨论】:

  • 复制/粘贴错误。它在源代码中被双引号引用。谢谢
【解决方案3】:

也许您正在寻找类似require.js 的东西:它可以让您轻松管理多个 JS 文件之间的依赖关系,通过指定加载模块的顺序等。

http://requirejs.org/

此外,建议在生产环境中只包含一个包含所有您的代码的 JavaScript 文件(第三方库通常仍然是独立的) - 然后可以缩小该文件,从而使其比多个文件更小,下载速度更快。但这在开发过程中并不重要,您应该意识到这一点。

编辑:顺便说一句,require.js 还提供了一种简单的方法,可以从所有模块中生成单个缩小文件以用于生产。

【讨论】:

  • 感谢单个 javascript 文件的提示
猜你喜欢
  • 2017-07-07
  • 2014-07-11
  • 2019-07-14
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多