Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/meteor/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript Meteor中全局变量的处理_Javascript_Meteor_Scope_Global Variables - Fatal编程技术网

Javascript Meteor中全局变量的处理

Javascript Meteor中全局变量的处理,javascript,meteor,scope,global-variables,Javascript,Meteor,Scope,Global Variables,我在服务器和客户端pub/sub上都使用了一个查询,所以我在几个不同的位置都有类似的查询 const FOO = 'bar'; Collection.find({property:FOO}) Foo可能会发生更改,而不是在不同的位置更新我的代码,我认为将其抽象为客户端和服务器都可见的全局变量是值得的 我创建了一个新文件'lib/constants.js',并简单地执行了FOO='bar;注意没有关键字。这似乎很管用。我发现这个解决方案是公认的答案 我的问题是,这是否是流星,甚至是一般JS所希望

我在服务器和客户端pub/sub上都使用了一个查询,所以我在几个不同的位置都有类似的查询

const FOO = 'bar';
Collection.find({property:FOO})
Foo可能会发生更改,而不是在不同的位置更新我的代码,我认为将其抽象为客户端和服务器都可见的全局变量是值得的

我创建了一个新文件'lib/constants.js',并简单地执行了FOO='bar;注意没有关键字。这似乎很管用。我发现这个解决方案是公认的答案

我的问题是,这是否是流星,甚至是一般JS所希望的模式

我知道我可以把它抽象成一个模块,但在这种情况下,这可能是过分的。我还认为使用会话/反应式VAR是不安全的,因为它可能导致远距离的行动。我甚至不会考虑使用Stutux.JSON,因为它只适用于环境变量。
有什么见解吗?

这实际上是一种b̶a̶d̶不利的模式,因为使用全局变量,您无法跟踪事物的变化,通常构建模块化和可替换的组件要好得多。这种模式之所以成为可能,是因为Meteor早期还不支持导入目录/模式,并且您将在服务器和客户端之间拆分整个代码

你可以在网上找到很多关于它的评论和答案,所以我不想再重复那些显而易见的

使用settings.json变量不是一个选项,因为我们可能会动态更改,那么我们的选项是什么?对我来说,我会说:

将其存储到数据库中,然后使用具有适当访问范围的方法发布或检索它。您还可以使用authorDB更改的方法动态修改它

或者,您可以尝试使用Meteor.EnvironmentVariable。如果我说我知道如何正确地使用它,那我是在撒谎,但我已经看到它被用于两个Meteor项目,以解决类似的情况


这实际上是一种b,a,d,不利的模式,因为有了全局变量,你就无法跟踪事物发生了什么变化,一般来说,构建模块化和可更换的组件要好得多。这种模式之所以成为可能,是因为Meteor早期还不支持导入目录/模式,并且您将在服务器和客户端之间拆分整个代码

你可以在网上找到很多关于它的评论和答案,所以我不想再重复那些显而易见的

使用settings.json变量不是一个选项,因为我们可能会动态更改,那么我们的选项是什么?对我来说,我会说:

将其存储到数据库中,然后使用具有适当访问范围的方法发布或检索它。您还可以使用authorDB更改的方法动态修改它

或者,您可以尝试使用Meteor.EnvironmentVariable。如果我说我知道如何正确地使用它,那我是在撒谎,但我已经看到它被用于两个Meteor项目,以解决类似的情况


我认为这种模式没有那么糟糕。但我会将该文件放在/imports中并显式导入它

或者,您可以从服务器写入Meteor.settings.public,例如在启动时,这些值将在同一位置的客户端上可用。您可以在没有设置文件的情况下执行此操作,这很好,因为它不需要您在开发和生产之间进行任何更改

服务器:

Meteor.startup=>{ //启动时在服务器上运行的代码 Meteor.settings.public.FOO='bar'; }; 客户:

>console.logMeteor.settings.public.FOO; 酒吧
我认为这种模式没有那么糟糕。但我会将该文件放在/imports中并显式导入它

或者,您可以从服务器写入Meteor.settings.public,例如在启动时,这些值将在同一位置的客户端上可用。您可以在没有设置文件的情况下执行此操作,这很好,因为它不需要您在开发和生产之间进行任何更改

服务器:

Meteor.startup=>{ //启动时在服务器上运行的代码 Meteor.settings.public.FOO='bar'; }; 客户:

>console.logMeteor.settings.public.FOO; 酒吧
是的,如果您使用的是旧版本的meteor,那么您可以使用setting.json,但对于更新版本,我们有导入选项。

是的,如果您使用的是旧版本的meteor,那么您可以使用setting.json,但是对于更新版本,我们有导入选项。

啊,不知道meteor.settingsAh,不知道meteor.settings