2014-01-17 20 views
2

在我的html文件,我这样做:<script src ...>如何让其他文件访问它们导入的库?

<script src="http://[node server]:3000/socket.io/socket.io.js"></script> 
<script type="text/javascript" src="file.js"></script> 

在我file.js,我现在可以使用socket.io功能。

socket.io如何让file.js可见?

+3

src只是指向一个外部JavaScript文件,在这种情况下,一个来自节点服务器和'file.js',我在这里丢失了什么吗? –

+0

http://www.w3.org/TR/html5/webappapis.html#create-a-script-from-a-node – Quentin

+1

您的浏览器正在将所有这些函数编译到DOM中,所有该库都将可用,因为它实际上包含在你的HTTP请求中。 – Mike

回答

2

包括这样的任何脚本并不在自己的环境中运行。相反,所有脚本都是在加载它们的窗口的上下文中执行的,这意味着加载在一个脚本中的任何对象或方法都可以在同一窗口中执行的其他脚本中使用。

订单也很重要。如果首先包含file.js,则对socket.io中定义的对象或函数的任何引用都将是未定义的。也就是说,除非你在file.js中有某种延迟执行机制,等待文档的其余部分被加载执行。

而且,当然,这也适用于内联脚本。例如:

<!-- defines myFunc --> 
<script type="text/javascript" src="my.js"></script> 
<script type="text/javascript"> 
    myFunc(); // call myFunc 
</script> 
3

如果你是来自包括严格的语言,这在思想上有点奇怪。 Javascript在全球范围内,只要你在一个'较低'的文件中引用它之前包含一个JavaScript文件,你就可以访问第一个JavaScript中的所有内容。

把它看成是粘贴所有到一个大的单个文件,我想...... :)

相关问题