Javascript Meteor中全局变量的处理
我在服务器和客户端pub/sub上都使用了一个查询,所以我在几个不同的位置都有类似的查询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所希望
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