Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/443.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 流星中的自定义脚本_Javascript_Meteor - Fatal编程技术网

Javascript 流星中的自定义脚本

Javascript 流星中的自定义脚本,javascript,meteor,Javascript,Meteor,我刚开始玩流星,我测试了一些东西。基于这些,我在测试下面的代码,以了解编写包的最佳方法,但我从未成功过。下面的代码有什么问题,编写Meteor应用程序包的好方法是什么(如果不是全部,但至少有几个好方法),该程序包可以放在lib文件夹中 /lib/exports.js /lib/file1.js //mypackage.js bjse.api.Whirlygig = function (name) { var self = this; self.name = name; // name

我刚开始玩流星,我测试了一些东西。基于这些,我在测试下面的代码,以了解编写包的最佳方法,但我从未成功过。下面的代码有什么问题,编写Meteor应用程序包的好方法是什么(如果不是全部,但至少有几个好方法),该程序包可以放在lib文件夹中

/lib/exports.js /lib/file1.js //mypackage.js

bjse.api.Whirlygig = function (name) {
  var self = this;
  self.name = name;  // name of the remote weasel
  self.values = {};  // remote key name -> 0-indexed value

};

_.extend(Whirlygig.prototype, {
  // Take a key/value pair from the remote Weasel and save it locally.
  addValue: function (x) {
    // Weasels use 1-indexed arrays. Subtract 1 to convert to 0-indexed.
    self.values[x.key] = x.value - 1;
  },

  // Return a list of stored values in a format suitable for sending to
  // a Weasel.
  serialize: function () {
    return _.map(self.values, function (v, k) {
      var newVal = mungeValue(v, false /* foldValue */);
      // Weasels use 1-indexed arrays. Add 1 to convert back to 1-indexed.
      newVal = newVal + 1;
      return {key: k, value: newVal};
    });
  }
});
/server/methods.js 但我得到了没有定义的旋转

更新
我想使用bjse作为名称空间,但它总是显示为未在其他文件中定义

导出中
您需要:

if (typeof(org) === 'undefined'){
    var org = {}
}
if(typeof(bjse) === 'undefined'){
    var bjse = {};
    if(typeof exports != "undefined"){
        bjse = exports;
    }
    bjse.api = {};
}

使其成为全局变量,并在package.js中使其在服务器上运行,您可以找到如何使其成为全局变量的更多信息?从Whirlywig中删除
var
。如果您想创建包,您可以使用我的simple lib来检查我是如何完成的,它非常简单,所以您应该毫无问题地阅读它-我不打算创建Atmosphere包,只是尝试从methods.js运行的小型自定义脚本。因此,我尝试如下导出if(bjse==void 0){bjse={};if(typeof exports!=“undefined”){bjse=exports;}bjse.api={};},但在方法中,我仍然看到即使在删除varNo之后,bjse也没有定义,我在Whirlygig之前没有var,甚至我先定义了名称空间,我仍然认为Whirlygig未定义。您无法将未定义的变量与任何东西进行比较(如果(org==void 0)),您必须比较它的类型我更改了导出与您建议的内容,但我仍然需要设置调试器以在file1.js上停止,并逐步检查它的中断位置。加载exports.js文件时,exports或module.exports是未定义的。因此,在删除下面的if(typeof exports!=“undefined”){bjse=exports;}并删除bjse之前的var之后,它就工作了。那么,有没有一种方法可以使用导出来实现呢?
Meteor.methods({
    createConnections: function(){
  ....
 var serializeObj = bjse.api.Whirlygig.serialize(..);
if (typeof(org) === 'undefined'){
    var org = {}
}
if(typeof(bjse) === 'undefined'){
    var bjse = {};
    if(typeof exports != "undefined"){
        bjse = exports;
    }
    bjse.api = {};
}