我可以将别名与 NodeJS require 函数一起使用吗?

Can I use alias with NodeJS require function?

我有一个导出两个常量的 ES6 模块:

export const foo = "foo";
export const bar = "bar";

我可以在另一个模块中执行以下操作:

import { foo as f, bar as b } from 'module';
console.log(`${f} ${b}`); // foo bar

当我使用 NodeJS 模块时,我会这样写:

module.exports.foo = "foo";
module.exports.bar = "bar";

现在,当我在另一个模块中使用它时,我能以某种方式重命名导入的变量,就像 ES6 模块一样吗?

const { foo as f, bar as b } = require('module'); // invalid syntax
console.log(`${f} ${b}`); // foo bar

如何重命名 NodeJS 模块中导入的常量?

我会说这是不可能的,但替代方案是:

const m = require('module');
const f = m.foo;
const b = m.bar;

有可能(使用 Node 8.9.4 测试):

const {foo: f, bar: b} = require('module');
console.log(`${f} ${b}`); // foo bar

当然,只需使用对象解构语法:

 const { old_name: new_name, foo: f, bar: b } = require('module');

是的,一个简单的解构就可以满足您的要求。

而不是:

var events = require('events');
var emitter = new events.EventEmitter();

你可以这样写:

const emitter = {EventEmitter} = require('events');

emitter() 将别名方法 EventEmitter()

只记得实例化你的命名函数:var e = new emitter();