【发布时间】:2015-12-28 20:17:44
【问题描述】:
下面require 函数调用的最短 ES6 等效项是什么?
module.exports = function(app) {...};
require('./routes')(app);
换句话说,在 ES6 模块中是否存在单行等效项?
【问题讨论】:
标签: javascript node.js ecmascript-6
下面require 函数调用的最短 ES6 等效项是什么?
module.exports = function(app) {...};
require('./routes')(app);
换句话说,在 ES6 模块中是否存在单行等效项?
【问题讨论】:
标签: javascript node.js ecmascript-6
我刚刚开始深入研究 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();
我使用了this Axel Rauschmayer post 中与 ES6 模块相关的“推荐”格式,但根据模块导出的内容,您的导入语句可能看起来不同:
import * as fs from 'fs'; // 推荐
我发现这个(导入 1 行,调用 1 行)语法清晰易读,所以我喜欢它。对某些人来说,这似乎很不幸。但是,底线是there is no one line import/invoke in ES6
【讨论】:
require('...')()。有单行吗?
import 语句语法不提供将导入值用作表达式一部分的任何方法。它所做的只是将值绑定到一个符号。
imports 是否必须位于文件的顶部,而节点 commonJS 您可以在文件中的任何位置使用require。当然,对于 babel 转译,您必须提前导入,但我不确定这是转译的限制还是遵循规范。