ES6相当于Node.js需要函数调用

krl*_*krl 5 javascript node.js ecmascript-6

require下面的函数调用的最短ES6相当于什么?

module.exports = function(app) {...};

require('./routes')(app);
Run Code Online (Sandbox Code Playgroud)

换句话说,ES6模块中是否存在单行等效?

roc*_*est 5

我刚刚开始深入研究ES6,但我相信这将是:

import * as routes from './routes';
Run Code Online (Sandbox Code Playgroud)

...假设./routes是ES6模块导出的东西.

然后可以立即使用它:

import * as routes from './routes';

doAThing( routes.myVar, routes.myMethod() );
Run Code Online (Sandbox Code Playgroud)

如果模块只有一个命名导出,它仍然需要导入两行,然后调用:

import { name } from './routes';
name();
Run Code Online (Sandbox Code Playgroud)

对于任何数量的导出都是一样的:

import { name1, name2 } from './routes';
name1();
name2();
Run Code Online (Sandbox Code Playgroud)

更好的导入如上所述:

import * as routes from './routes';
routes.foo();
routes.bar();
Run Code Online (Sandbox Code Playgroud)

我使用了此Axel Rauschmayer帖子中与ES6模块相关的"推荐"格式,但根据模块导出的内容,您的import语句可能看起来有所不同:

从'fs'导入*为fs; // 推荐的

我发现这个(导入1行,调用1行)语法清晰可读,所以我喜欢它.对某些人来说,这似乎很不幸.但是,底线是ES6中没有一行导入/调用