在Node.js中的JavaScript ES6中定义静态类私有属性的最佳实践方法是什么?
我有以下Log
课程:
'use strict';
const moment = require('moment');
const LOG_DATE_FORMAT = 'YYYY-MM-DDTHH:mm:ss.SSSZ';
module.exports = class {
static debug(txt) {
console.log(`${moment().utc().format(LOG_DATE_FORMAT)} [debug] ${txt}`);
}
static info(txt) {
console.info(`${moment().utc().format(LOG_DATE_FORMAT)} [info] ${txt}`);
}
static warn(txt) {
console.warn(`${moment().utc().format(LOG_DATE_FORMAT)} [warn] ${txt}`);
}
static error(txt) {
console.error(`${moment().utc().format(LOG_DATE_FORMAT)} [error] ${txt}`);
}
};
在moment
之外定义DATE_FORMAT
和module.exports
,因此类定义正确的方法吗?
答案 0 :(得分:1)
是的,这是一种可接受的做事方式。由于您要定义在所有静态方法中共享的一些变量,因此基本上有四种选择:
将它们定义为类的静态,以便您可以使用类名作为前缀来引用它们。这有利或不利(取决于您的需要),使其可以在您导出的课程中公开访问。
将它们定义为模块级变量。这使得它们可以通过所有静态方法访问,但是将它们的使用保密为模块。
在每种方法中单独重新定义它们。
将它们定义为全局。
选项#3似乎很多重复,当然也不会很干。
选项#4似乎不是一个好方法,因为没有理由制作这些全局变量(你几乎不想使用带有node.js的全局变量)。
因此,它归结为选项#1或#2,选择完全取决于您是否希望在模块外部访问它们的值。如果您也想要导出它们,那么在类上创建静态属性并使用类前缀引用它们。如果您只想在模块中使用它们,那么您所做的就是完美的。