我创建了一个字符串构建器JavaScript对象,我在项目中使用了许多不同的.js文件。
我可以在一个单独的.js文件中创建这个类,并从实例化它的所有其他脚本中调用它,就像C#类文件一样吗?
这可能,或者我是否继续将其复制并粘贴到使用它的每个.js文件的底部?
答案 0 :(得分:5)
是的,这应该不是问题。只需在html页面中以正确的顺序包含.js文件。
答案 1 :(得分:4)
如果您将文件与其他js一起包含在主HTML页面中,则可以根据需要使用“课程”:
<script src="js1.js" type="text/javascript"></script>
<script src="js2.js" type="text/javascript"></script>
在上面的示例中,您现在可以使用js2.js中的代码从js1.js实例化对象的新实例。要使用纯javascript执行此操作,您必须将脚本标记添加到DOM,或使用AJAX获取脚本文件并eval()
。
// Create a <script> element
var scriptEl = document.createElement("script");
scriptEl.src = "js2.js";
scriptEl.type = "text/javascript";
// Append it to the <head>
document.getElementsByTagName("head")[0].appendChild(scriptEl);
答案 2 :(得分:1)
完全正确,重要的不是包含的顺序,而是执行代码的顺序。在大多数情况下,Andy和Segfault的说明都很好,但有时候在消费者不足之前包括类文件。例如,如果您使用ExtJS,并且碰巧在onReady
处理程序中定义了您的类,如下所示:
Ext.onReady(function() {
myClass = ...
}.bind(this));
然后,当你的第二个src文件被包含在页面中并执行时,它将不会被执行。
我知道,这个例子有点牵强:)但只要确保你的代码以正确的顺序执行,而不仅仅是按照正确的顺序执行。
答案 3 :(得分:0)
我遇到了这个问题,我想添加一些东西(几年前可能不存在)。
即使您认为可以将每个脚本添加到“index.html”中,这也不是一个非常漂亮的练习(imho)。特别是如果你认为你可能想要写一个扩展(〜框架)。你不想用他必须添加到他的代码中的一堆脚本标签来惹恼用户。你想要的是这样一行:
<script src="yourFramework" (...) />
但是,使用RequireJS,您就可以实现这一目标。您可以自由地分离代码,而“您的用户”仍然无需在他的“脚本部分”中添加小说。