在服务器/和私有/中定义全局变量有什么区别?

时间:2015-05-14 05:13:38

标签: meteor

例如,我想在Meteor启动时将一些init json数据插入到db中。我有两种方式。

1。在server / init.js中定义它

server/data.js:
data1 = [{ "data": "to insert"}];
server/init.js
Meteor.startup(function() { insertToDb(data1); });

2。在private / data.json中定义它

private/data.json
[{ "data": "to insert"}];
server/init.js
Meteor.startup(function() { 
  var data2 =  Assets.getText("data.json");
  insertToDb(data2); 
});

一个。 data1一直都有效吗?如果是这样,如果数据很大,会浪费一些内存吗?

B中。什么是缺点和优点?

℃。 private的一般目的或情景?

1 个答案:

答案 0 :(得分:0)

它与您是从文件加载数据还是静态定义数据以及更多地与数据变量范围有关。如果您在全局范围内定义了某些内容,那么它将在进程的生命周期内存储在内存中。如果在函数内本地定义它,那么一旦函数退出,所有内存都将被释放。

例如,你可以这样做:

服务器/ init.js

Meteor.startup(function() { 
  var data1 = [{ "data": "to insert"}];
  insertToDb(data1);
});

话虽如此,如果你愿意阅读它,这是一个意见: 从逻辑上讲,任何大数据块都不应该静态定义。将其保存在单独的文件中,以便于更新。一个例子是本地化文件。