如何在多个智能包中扩展名称空间

时间:2013-08-29 09:10:08

标签: meteor

我需要创建由多个流星智能包组成的功能或模块,并共享相同的命名空间。问题是,如果我api.export所有package.js文件中的命名空间,那么链接器会创建一个结果:

/* Imports */
var Meteor = Package.meteor.Meteor;
var MyModule = Package['mymodule-base'].MyModule;

/* Package-scope variables */
var MyModule;

因此它覆盖了MyModule变量,使旧范围在其他模块包中不可用。如果我只在一个包中导出变量那么它很好,但是一旦我尝试将该变量的赋值包含在代码中,就像:

(function (MyModule) {
    MyModule.SomeFeature = ...
})(MyModule || (MyModule = {}));

然后再次出现同样的问题,链接器声明变量两次,导致导入的变量无用。

为什么这可能是有意的还是一个错误?或者我该如何解决这种情况。

现在我修改了流星代码,如果它已经被声明为导入变量,则不会声明包范围变量。

0 个答案:

没有答案