导出对象与函数NodeJs
导出对象{}
与导出function
我正在开发一个练习应用程序,我遇到了这个问题什么时候需要导出一个对象而不是一个函数类?
场景示例:
我正在使用对象样式构build一个简单的authenticationmodule
。
// file auth.js module.exports = { login: function() { // code login }, logout: function() { // code logout }, register: function() { // code register } }
在这里我使用匿名函数样式
module.exports = function() { return { login: function() { // code login }, logout: function() { // code logout }, register: function() { // code register } } }
要求
当我想要这个模块,我只是做:
var auth = require('auth'); auth.login(); // trigger login function via object auth().login() // trigger login function via function
这将与两种方法一起工作,但我很困惑,select哪个更合适,为什么。
问题
-
你如何理解你的devise中的一个模块,什么时候适用于导出,一个对象 , 匿名函数 , 命名函数到Instantiate ?
-
当需要这些函数或对象时,哪些是不同的以及require方法的行为?
你如何理解你的devise中的一个模块,什么时候适用于导出,一个对象,匿名函数,命名函数到Instantiate?
- 真正的极简主义者的目的是出口一个单一的function,如果这样就够了。 这是基于你的模块的范围,并假设一个小而重点的目的。
- 当需要一组函数来获得一组有意义的function时,导出相关函数的对象。 例如,一个
tempConversion
模块可能同时具有cToF
和fToC
函数。 - 如果你在做OO,导出构造函数就没问题。
- 返回实际有效负载(可以是对象或函数)的闭包函数对configuration选项很有用。 例如
var tip = require('computeTip')(18);
可以存储18封闭,并返回一个函数,计算18%时提示与一个号码。
这里有一条经验法则 :如果只输出一个命名函数require('average').average(listOfNumbers)
,它是多余的,所以直接导出average
函数使其更加简洁。 如果您想要公开多个函数,请使用属性为函数的对象。
当需要这些函数或对象时,哪些是不同的以及require方法的行为?
- 没有区别。
require
有一个适应这些技术的单一行为。
在你的例子中你实际上返回一个对象而不是一个函数类。 在第二种情况下,通过执行该函数来获取对象。 为了使用这个函数作为一个类,你应该返回一个作为构造函数的函数,然后用new运算符实例化。
这就是说,如果我认为我的模块是一个单例,那么我会更喜欢一个类的对象,对于包含它的每个文件都是通用的。 一个例子是一个模块,实现了我的数据库的公共访问层。
如果你想多次实例化一个类,那么这个类更有意义。 一个例子就是你的数据库模式的一个特定的模型类,就像一个User类。
- 用Javascript函数调用)(
- 为什么JavaScript“this”在Node和Browser环境中返回不同的值?
- JavaScript的术语:我(调用/调用/执行)的function?
- 当执行一个Function对象时,节点“ReferenceError:require is not defined”
- 通过refence javascript传递基元variables
- 使用dependency injection在javascript中返回一个函数
- 我如何做一个函数的asynchronous工作,然后完成后从该函数返回一个值?
- 模块导出function
- JS / node.js:大型开关块与function集合