如何正确导入流星中的js文件
How to properly import js files in meteor
我喜欢保持javascript文件尽可能小,并使用架构模式。这通常意味着在服务、控制器、模型、视图等中拆分js文件。
Meteor自动加载所有js文件。然而,任何js文件中定义的每个变量都被处理为该文件的局部变量。为了能够访问它们,我必须这样定义它们:
//global
my_global_function = function(){
}
//not global
var my_global_function = function(){
}
//not global
function my_global_function(){
}
定义一个没有关键字var
或function
的变量/函数不是一个好的做法。有哪些可能的替代方案?
最好的选择是使用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框架本身而告终。。。
- JS文件的路径正在消失
- 我的外部js文件无法加载
- 在不破坏未定义函数的情况下,对多个视图使用单个js文件
- 动态加载和卸载js文件
- 如何将变量传递到另一个js文件
- 如何将所有JS文件连接到一个文件夹中
- 从Chrome扩展名中的popup.html文件在background.js文件中运行一个函数
- 如何使用php文件中的GET来获取我在.js文件中声明的变量
- 如何将模板中的标记脚本移动到.js文件中
- 什么's是连接供应商js文件的最佳方式
- 如何在定义js文件后为外部javascript文件设置变量
- 如何在JS文件中获取资源(.resx)字符串
- 将*.js文件的内容放入Object中
- 如何从onclick函数设置全局变量并将其传递给另一个JS文件
- 导致内容安全策略(CSP)冲突错误的本地jquery.js文件
- 如何使用Gmail运行.js文件
- 如何定义一个模块并使用它来分离js文件
- Angular JS文件上传到托管服务器
- 如何引用HTML中节点模块中的js文件
- 如何将JS文件从其他文件夹链接到页面