Dav*_*kee 14 javascript constants meteor ecmascript-6
我按照文档将常量放在lib/constants.js文件中.
问题:如何在我的客户端html和js文件中访问这些常量?
Kyl*_*yll 43
Meteor中的变量是文件范围的.
通常情况下,a var myVar会进入全局Node上下文,但是在Meteor中它会保留在文件中(这使得编写更透明的代码非常有用).会发生什么是Meteor会将所有文件包装在IIFE中,确定该函数中的变量,从而有效地在文件中.
要定义全局变量,只需删除var/ let/ const关键字,Meteor将注意导出它.您必须通过相同的机制(myFunc = function myFunc() {}或myFunc = () => {})创建功能.该出口要么是客户端的代码是否在client目录或服务器端,如果它是在server目录中,或两者如果是在其他一些不那么特殊的目录.
不要忘记遵循以下规则:
main.最后加载lib/接下来加载任何目录中的文件现在,如果您尝试立即访问此全局变量,则可能会遇到服务器端问题,但Meteor尚未实例化它,因为它尚未运行定义变量的文件.所以你必须与文件和文件夹名称作斗争,或者尝试欺骗Meteor.startup()(祝你好运).这意味着不太可读,易碎的位置相关代码.你的一位同事移动了一个文件,你的应用程序中断了.
或者,您可能只是不想每次添加文件时都返回到文档,以运行五个步骤以了解放置此文件的位置以及如何命名.
从流星1.3开始,这个问题有两个解决方案:
Meteor 1.3(目前处于测试阶段)允许您使用软件包(或)在应用程序中使用模块.modulesmeteor add modulesapi.use('modules')
模块有很长的路要走,这是一个直接从上面链接中获取的简单示例:
文件:( a.js首先加载传统的加载顺序规则):
import {bThing} from './b.js';
// bThing is now usable here
Run Code Online (Sandbox Code Playgroud)
文件:( b.js使用传统的加载顺序规则加载第二个):
export const bThing = 'my constant';
Run Code Online (Sandbox Code Playgroud)
Meteor 1.3将负责加载b.js文件,a.js因为它已被明确告知.
声明全局变量的最后一个选项是创建包.
meteor create --package global_constants
Run Code Online (Sandbox Code Playgroud)
声明没有var关键字的每个变量都会导出到整个包中.这意味着您可以在自己的文件中创建变量,对加载顺序进行细化api.addFiles,控制是否应该转到客户端,服务器或两者.它还允许您api.use在其他包中使用这些变量.
这意味着清晰,可重复使用的代码.你想添加常量吗?要么在已创建的文件中执行,要么创建一个api.addFiles.
您可以在doc中阅读有关包管理的更多信息.
以下是"构建应用程序"的引用:
这[使用包]是代码分离,模块化和可重用性的终极选择.如果将每个功能的代码放在一个单独的包中,则一个功能的代码将无法访问除导出之外的其他功能的代码,从而使每个依赖项都显式化.这也允许最简单的功能独立测试.您还可以发布包并在多个应用中使用它们
meteor add.
将这两种方法与Meteor 1.3 结合起来真是太棒了.模块比包更简单,更轻松,因为使用它们只需要export一行和多个imports而不是整个包创建过程,但不能作为防笨错误(忘记import在文件顶部写行)包.
一个好的选择是首先使用模块,然后在他们厌倦写入时切换到包,或者因为它而发生错误(写错了import......).
如果您正在做比POC更大的事情,请确保避免依赖传统的加载顺序.
Dav*_*don 13
您需要将它们设为全局变量,以便其他文件可以看到它们.
/lib/constants.js
THE_ANSWER = 42; // note the lack of var
Run Code Online (Sandbox Code Playgroud)
/client/some-other-file.js
console.log(THE_ANSWER);
Run Code Online (Sandbox Code Playgroud)
/lib/constants.coffee
@THE_ANSWER = 42
Run Code Online (Sandbox Code Playgroud)
/client/some-other-file.coffee
console.log THE_ANSWER
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
9256 次 |
| 最近记录: |