3

と呼ばれるメソッドを公開したいと考えてくださいPrint

  1. バインド方法prototype

Printer.jsとして保存されたファイル

var printerObj = function(isPrinted) {
            this.printed = isPrinted;        
    }

printerObj.prototype.printNow = function(printData) {
        console.log('= Print Started =');
};
module.exports = printerObj;

次に、外部の.jsノードプログラムファイルprintNow()にコードを挿入してアクセスします。require('Printer.js').printNow()

  1. を使用してメソッド自体をエクスポートしmodule.exportsます。

Printer2.jsとして保存されたファイル

var printed = false;   
function printNow() {
console.log('= Print Started =');
}    
module.exports.printNow = printNow;

次に、外部の.jsノードプログラムファイルprintNow()にコードを挿入してアクセスします。require('Printer2.js').printNow()

Node.jsとの違いとそれを行うための最良の方法は誰か教えてもらえますか?

4

2 に答える 2

4

間違いなく最初の方法です。これは と呼ばれ、Twitterと Mikeal Rogers のブログsubstack patternで読むことができます。いくつかのコード例は、パーサーのjade github リポジトリにあります。

var Parser = exports = module.exports = function Parser(str, filename, options){
  this.input = str;
  this.lexer = new Lexer(str, options);
  ...
};

Parser.prototype = {

  context: function(parser){
    if (parser) {
      this.contexts.push(parser);
    } else {
      return this.contexts.pop();
    }
  },

  advance: function(){
    return this.lexer.advance();
  }
};
于 2013-01-25T07:53:56.807 に答える
3

最初の例では、クラスを作成しています。理想的には、呼び出し元プログラムで「new」を使用してクラスを使用する必要があります。

var PrinterObj = require('Printer.js').PrinterObj;
var printer = new PrinterObj();
printer.PrintNow();

これは主題に関する良い読み物です:http ://www.2ality.com/2012/01/js-inheritance-by-example.html

2番目の例では、関数を返しています。

違いは、最初の例のインスタンスを複数持つことができますが(示されているようにnewを使用する場合)、2番目のアプローチのインスタンスは1つだけです。

于 2013-01-25T15:33:47.097 に答える