gpt4 book ai didi

javascript - 导出对象与函数 NodeJs

转载 作者:数据小太阳 更新时间:2023-10-29 04:13:36 27 4
gpt4 key购买 nike

导出对象 {} 与导出函数

我正在开发一个练习应用程序,我遇到了这个问题我什么时候需要导出对象 {} 而不是函数类?

场景示例:

我正在使用对象样式构建一个简单的身份验证模块

// 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

这两种方法都适用,但我不知道选择哪种更适合以及为什么。

问题

  • 在设计模块时,您如何理解何时适合导出、对象匿名函数命名函数来实例化?

  • require 方法在需要这些函数对象 时有何区别?

最佳答案

How do you understand in your design of a module, when is appropriate to exports, an object, anonymous function, named function to Instantiate?

  • 真正的极简主义者旨在导出单个功能(如果这就足够的话)。这基于您的模块的范围,并假设有一个小而集中的目的。
  • 当您需要一组函数以具有一组有意义的功能时,导出相关函数的对象。例如,tempConversion 模块可能同时具有 cToFfToC 函数。
  • 如果你在做面向对象的,导出构造函数就可以了。
  • 返回实际负载(可以是对象或函数)的闭包函数对于配置选项很有用。例如,var tip = require('computeTip')(18); 可以将 18 存储在闭包中并返回一个函数,该函数在使用数字调用时会计算 18% 的小费。

这里有一个经验法则:如果您只导出一个命名函数,如 require('average').average(listOfNumbers),它是多余的,所以只需导出直接使用average 函数使其更加简洁。如果您要公开多个函数,请使用一个属性为函数的对象。

Which are the difference and how the require method behave, when requiring these functions or Objects ?

  • 没有区别。 require 有一个单一的行为来适应这些技术中的每一个。

关于javascript - 导出对象与函数 NodeJs,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27581246/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com