Meteor.JS使用外部脚本(在服务器上)

时间:2014-11-10 04:25:03

标签: javascript jquery meteor server

我是Meteor.JS的新手,并尝试在服务器上使用脚本。当我在客户端上需要一个脚本时,我只是使用jQuery的$ .getScript(my-script.js)来加载它,但是在服务器上,我收到$ is not defined错误,大概是因为jQuery isn& #39; t加载到服务器上。如何在$ .getScript()调用中获得与服务器端类似的结果?

3 个答案:

答案 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

并非所有代码都在客户端和服务器上运行。