我可以在NodeJS require函数中使用别名吗?

时间:2018-02-23 16:55:33

标签: javascript node.js ecmascript-6 commonjs

我有一个导出两个常量的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模块中重命名导入的常量?

4 个答案:

答案 0 :(得分:21)

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

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

答案 1 :(得分:6)

可能(使用Node 8.9.4测试):

{{1}}

答案 2 :(得分:0)

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

代替:

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

您可以写:

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

emitter()将为方法EventEmitter()

别名

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

答案 3 :(得分:-1)

我会说这是不可能的,但另一种选择是:

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