如何在流星中正确导入js文件

时间:2015-11-16 10:00:15

标签: javascript meteor

我喜欢保持我的javascript文件尽可能小并使用architectural pattern。这通常意味着在服务,控制器,模型,视图等中分割我的js文件。

Meteor自动加载所有js文件。但是,任何js文件中定义的每个变量都将作为该文件的局部变量处理。为了能够访问它们,我必须像这样定义它们:

unsigned int

定义不带关键字//global my_global_function = function(){ } //not global var my_global_function = function(){ } //not global function my_global_function(){ } var的变量/函数不是好习惯。有哪些可能的选择?

2 个答案:

答案 0 :(得分:3)

最佳选择是使用ES2015模块。

Meteor本身不支持模块,但有些软件包可以提供这种支持。

例如,universe:modules

使用模块,您可以导入和导出一些变量/函数/类/等:

// module1.import.js
import alertSomething from './module2'

Meteor.startup(() => {
  alertSomething();
});

// module2.import.js
export default function alertSomething() {
  alert('something');
}

universe:modules不是唯一的解决方案,还有其他类似的项目。我特别喜欢这个https://github.com/thereactivestack/kickstart-simple。它用WebPack取代Meteor的构建系统,并在使用React时启用热重新加载。

<强>更新

Meteor现在支持ES6模块

答案 1 :(得分:2)

由于您似乎对正确的建筑设计非常感兴趣,我建议您查看Meteor软件包。基本上,您必须在package.js配置中声明任何全局公开的变量,这是您想要的:尽可能少的&#34;泄漏&#34;尽可能。在一个软件包中,你可以稍微草率一点,但你仍然可以使用var(并且没有var)来在包中进行更细粒度的控制。这可以在Meteor中完成。

您可以在package documentation中找到大部分信息。最简单的入门方法是使用meteor create --package [package-name]创建一个包。这设置了一个基本结构。 api.export函数控制公开的变量。请参阅文档here

此外,请注意在内在的Meteor建筑设计之上添加不必要的图层。模板视图,服务器端方法服务等。只有一些东西你不能开箱即用,所以通常你&#39;添加类似Astronomy或SimpleSchema的内容。

添加太多自己的架构可能最终会与你对抗Meteor框架本身......