为什么meteor 0.6.0将所有内容都包装成(function(){...})

Dav*_*raf 7 meteor

从版本0.6.0开始,meteor将每个javascript文件包装成(function(){...}).这对我自己的javascript文件非常有意义.但不适用于第三方图书馆.例如,我正在使用来自crypto-js的sha3.js.这个.位于client/lib.这是完美的,直到0.5.9.但是现在,sha3的功能不再可用了.

可以关掉这个包装吗?

mqu*_*lle 4

函数闭包首先在服务器端引入(并且仅在服务器上),主要原因有两个:

  • 作用域变量是避免变量冲突同时保留简单变量名称的好方法
  • Npm.require功能在技术上是必需的

Node/Meteor 的关键功能之一是能够在客户端和服务器上运行相同的文件。这就是变量作用域需要在客户端和服务器上具有相同行为的原因,也是 Meteor 现在在客户端上包含函数闭包的原因。

无法关闭包装(不更改代码Meteor/tools)。

通过链接器分支上的工作,这种行为很快就会得到改善,该分支将自动解决文件依赖关系(基于变量名称),然后 1. 以正确的顺序包含 javascript 文件 2. 在全局范围内导出需要的变量。

现在,您必须手动导出需要处于全局范围内的对象。