自从版本0.6.0以后,Meteor将每个Javascript文件封装到(function() { ... })中。这对我自己的Javascript文件来说很有意义,但对于第三方库来说就不是了。例如,我正在使用来自crypto-js的sha3.js,它位于client/lib中。在0.5.9之前,这非常完美。但现在,sha3中的函数不再可用。请问这个封装是否可以关闭?
函数闭包最初在服务器端引入(仅限于服务器端),有两个主要原因:
Npm.require
功能所必需的技术手段Node/Meteor 的一个主要功能是能够在客户端和服务器上运行相同的文件。这就是为什么变量作用域需要在客户端和服务器上具有相同的行为方式,以及为什么 Meteor 现在在客户端上也包含函数闭包。
不能关闭封装(除非更改 Meteor/tools
代码)。
该行为很快将通过对链接器分支的工作进行改进,它将自动解决您的文件依赖关系(基于变量名),然后1.按正确顺序包含 JavaScript 文件2.导出需要的变量到全局范围。
目前,您将不得不手动导出需要在全局范围内的对象。