【问题标题】:ES6 equivalent of Node.js require function call [duplicate]ES6 等效的 Node.js 需要函数调用 [重复]
【发布时间】:2015-12-28 20:17:44
【问题描述】:

下面require 函数调用的最短 ES6 等效项是什么?

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

require('./routes')(app);

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

【问题讨论】:

    标签: javascript node.js ecmascript-6


    【解决方案1】:

    我刚刚开始深入研究 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

    【讨论】:

    • 那只是导入。我有兴趣内联调用导入的函数。
    • 对不起,我误解了你的问题。让我仔细检查一下语法,看看是否可以进一步更新。
    • 是的,所以我们在 ES6 模块中得到 2 行,而在 Node.js 中得到 1 行 require('...')()。有单行吗?
    • @kyrylkov import 语句语法不提供将导入值用作表达式一部分的任何方法。它所做的只是将值绑定到一个符号。
    • @kyrylkov 没有单线。此外,我不确定imports 是否必须位于文件的顶部,而节点 commonJS 您可以在文件中的任何位置使用require。当然,对于 babel 转译,您必须提前导入,但我不确定这是转译的限制还是遵循规范。
    猜你喜欢
    • 2018-03-04
    • 1970-01-01
    • 1970-01-01
    • 2016-11-29
    • 1970-01-01
    • 2020-03-27
    • 2015-10-14
    • 2023-01-26
    • 1970-01-01
    相关资源
    最近更新 更多