从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
var printerObj = function(isPrinted) {
this.printed = isPrinted;
}
printerObj.prototype.printNow = function(printData) {
console.log('= Print Started =');
};
module.exports = printerObj;
然后通过在任何外部.js节点程序文件中放置coderequire('Printer.js').printNow()
来访问printNow()
使用模块导出方法本身。导出:
保存为Printer2.js的文件
var printed = false;
function printNow() {
console.log('= Print Started =');
}
module.exports.printNow = printNow;
然后通过在任何外部.js节点程序文件中放置coderequire('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变量现在处于驼峰状态。谢谢