从Node.js公开方法的最佳方式是什么?

从Node.js公开方法的最佳方式是什么?,node.js,module,Node.js,Module,假设我想公开一个名为Print 绑定方法为原型: 保存为Printer.js的文件 var printerObj = function(isPrinted) { this.printed = isPrinted; } printerObj.prototype.printNow = function(printData) { console.log('= Print Started ='); }; module.exports =

假设我想公开一个名为
Print

  • 绑定方法为原型:
  • 保存为Printer.js的文件

    var printerObj = function(isPrinted) {
                this.printed = isPrinted;        
        }
    
    printerObj.prototype.printNow = function(printData) {
            console.log('= Print Started =');
    };
    module.exports = printerObj;
    
    然后通过在任何外部.js节点程序文件中放置code
    require('Printer.js').printNow()
    来访问
    printNow()

  • 使用
    模块导出方法本身。导出
  • 保存为Printer2.js的文件

    var printed = false;   
    function printNow() {
    console.log('= Print Started =');
    }    
    module.exports.printNow = printNow;
    
    然后通过在任何外部.js节点程序文件中放置code
    require('Printer2.js').printNow()
    来访问
    printNow()


    有人能告诉我Node.js的区别和最好的方法吗?

    当然是第一种方法。它被称为
    子堆栈模式
    ,你可以在Mikeal Rogers的网站上阅读到它。可以在解析器的中找到一些代码示例:

    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();
      }
    };
    

    在第一个示例中,您正在创建一个类,理想情况下,您应该在调用者程序中将其与“new”一起使用:

    var PrinterObj = require('Printer.js').PrinterObj;
    var printer = new PrinterObj();
    printer.PrintNow();
    
    这是一本很好的读物:

    在第二个示例中,返回一个函数


    不同之处在于,您可以有第一个示例的多个实例(前提是您使用如图所示的新实例),但只有第二种方法的一个实例

    以什么方式“暴露”?作为一个网络应用?或者你在询问CommonJS约定?@7zark7作为my Node.js web app的模块..+1用于子堆栈模式参考和链接。虽然我认为Amol在两个例子中都使用了这个模式,因为他在两种情况下都只返回一个函数,对吗?是的,没错!作为对答案的补充,Arnol在不编写构造函数时应该使用小写变量。否则解释得好@根据您的建议,zeMirco变量现在处于驼峰状态。谢谢