require
下面的函数调用的最短ES6相当于什么?
module.exports = function(app) {...}; require('./routes')(app);
换句话说,ES6模块中是否存在单行等效?
我刚刚开始深入研究ES6,但我相信这将是:
import * as routes from './routes';
...假设./routes
是ES6模块导出的东西.
然后可以立即使用它:
import * as routes from './routes'; doAThing( routes.myVar, routes.myMethod() );
如果模块只有一个命名导出,它仍然需要导入两行,然后调用:
import { name } from './routes'; name();
对于任何数量的导出都是一样的:
import { name1, name2 } from './routes'; name1(); name2();
更好的导入如上所述:
import * as routes from './routes'; routes.foo(); routes.bar();
我使用了此Axel Rauschmayer帖子中与ES6模块相关的"推荐"格式,但根据模块导出的内容,您的import语句可能看起来有所不同:
从'fs'导入*为fs; // 推荐的
我发现这个(导入1行,调用1行)语法清晰可读,所以我喜欢它.对某些人来说,这似乎很不幸.但是,底线是ES6中没有一行导入/调用