我是Meteor.JS的新手,并尝试在服务器上使用脚本。当我在客户端上需要一个脚本时,我只是使用jQuery的$ .getScript(my-script.js)来加载它,但是在服务器上,我收到$ is not defined
错误,大概是因为jQuery isn& #39; t加载到服务器上。如何在$ .getScript()调用中获得与服务器端类似的结果?
答案 0 :(得分:2)
您不需要手动加载外部脚本,只需将它们作为文件添加到项目文件夹中即可。您的文件夹中的所有文件都将由meteor加载。请参阅文档的Namespacing部分,以获取有关如何在全局范围内使用定义的说明,而不仅仅是内部脚本。:
// File Scope. This variable will be visible only inside this
// one file. Other files in this app or package won't see it.
var alicePerson = {name: "alice"};
// Package Scope. This variable is visible to every file inside
// of this package or app. The difference is that 'var' is
// omitted.
bobPerson = {name: "bob"};
答案 1 :(得分:0)
我不建议这个过程,特别是在服务器上。这会让您面临很多风险。 .getScript
方法使用eval
在您的应用上创建远程执行代码漏洞。
尽管如此,您可以使用http包
meteor add http
然后你可以检索脚本&执行它:
var jsCode = HTTP.get("<full url>").content;
eval(jsCode);
答案 2 :(得分:0)
如果您使用的是第三方脚本,最佳做法是创建一个包装来包装它。在包中,您要导出包的全局变量:api.export('GlobalVariable')
如果您要在服务器文件夹中添加脚本,请不要使用var
,否则它将仅保留到文件范围的全局。
jQuery在服务器上不存在,原因很简单:你需要一个DOM来使用它。您可以使用phantomj来执行此操作:Server-side jquery
并非所有代码都在客户端和服务器上运行。