有没有办法禁用var范围?

时间:2013-04-05 00:22:18

标签: meteor

Meteor 0.6.0中引入的文件级JavaScript变量范围 打破用TypeScript(和CoffeeScript)编写的项目和包 其他的转发器)。有没有办法禁用它?

例如,这个Typescript代码:

declare var Meteor: any;
module Model {
  export var Players = new Meteor.Collection('players');
}

生成此JavaScript不再有效,因为Model不行 更长时间被认为是全球性的:

var Model;
(function (Model) {
    Model.Players = new Meteor.Collection('players');
})(Model || (Model = {}));

预先this.Model = null;是一种解决方法,但它是多余的,您必须将它应用于与Meteor一起使用的所有代码(至少打破了我的一个Meteorite软件包)。

引入Meteor特定JavaScript语言语义的原因是什么?

1 个答案:

答案 0 :(得分:0)

它的方式有点好,因为在让所有这些文件共享变量之前有点奇怪。 Meteor将每个javascript文件一起处理,就像它们是一个一样。拥有更大的项目(> 20 js文件)使得模块化应用程序非常困难

我对打字稿不太确定,但建议使用@制作一些全局内容,然后在coffeescript中声明它:http://docs.meteor.com/#coffeescript,也许有类似的东西打字稿? (@来自coffeescript)

@myFunction = -> 123