我试图通过使用专注于某些特定任务的多个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
我不明白为什么没有定义。
答案 0 :(得分:3)
您的JS文件应该只定义函数并调用同一JS文件中的函数。如果您要从另一个JS文件中调用函数,则需要首先加载该JS文件。我会将所有调用代码(有点像你的“主要”函数在其他语言中,如C)放在一个地方,最好是在你的html文档的末尾。毕竟,加载了其他JS文件(和标记)。这不是你不能从file2调用file1中的函数,而是它们应该在代码开始运行之前完全加载。
您的设置应该按原样运行,但请务必调用第一个不需要在JS文件中运行的函数,而是在HTML文档的末尾。
答案 1 :(得分:1)
问题看起来像是在脚本标记中引用了src属性。在HTML中试试这个:
<script src="file1.js"></script>
<script src="file2.js"></script>
答案 2 :(得分:1)
也许您正在寻找像require.js
这样的东西:通过指定加载模块的顺序等,您可以轻松管理多个JS文件之间的依赖关系。
除此之外,建议在生产环境中只有一个包含所有您的代码(第三方库通常仍然是独立的)的JavaScript文件 - 然后可以缩小此文件,从而使其成为可能比多个文件更小,更快下载。但是在开发过程中这并不重要,你应该意识到它。
编辑:顺便说一句,require.js
还提供了一种从所有模块中生成单个缩小文件的简便方法。