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

How to properly import js files in meteor

本文关键字:js 文件 流星 何正确 导入      更新时间:2023-09-26

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

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

//global
my_global_function = function(){
}
//not global
var my_global_function = function(){
}
//not global
function my_global_function(){
}

定义一个没有关键字varfunction的变量/函数不是一个好的做法。有哪些可能的替代方案?

最好的选择是使用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模块

由于您似乎对正确的架构设计非常感兴趣,我建议您查看Meteor软件包。本质上,您必须在package.js配置中声明任何全局暴露的变量,这正是您想要的:尽可能少的"泄漏"。在一个包中,您可以稍微马虎一点,但您仍然可以使用var(以及没有var)在包中进行更细粒度的控制。这可以在流星内完成。

您可以在软件包文档中找到大多数信息。最简单的入门方法是使用meteor create --package [package-name]创建一个包。这就建立了一个基本的游戏结构。api.export函数控制公开的变量。请参阅此处的文档。

此外,要小心在Meteor建筑设计的基础上添加不必要的层。模板视图,服务器端方法是服务等等。只有一些东西是开箱即用的,所以通常你会添加一些东西,比如Astronomy或SimpleSchema。

添加太多自己的架构可能会以对抗Meteor框架本身而告终。。。