ECMAScript-6导入嵌套函数

ECMAScript-6 import a nested function?

本文关键字:函数 嵌套 导入 ECMAScript-6      更新时间:2023-09-26

嗨,我不久前切换到ECMAScript-6 javascript语法,我很喜欢它!有一件事我注意到了,但找不到确切的答案,那就是在导入时使用嵌套破坏语法。我的意思是这样的。。

假设我有一个看起来像这样的文件。

export const SomeUtils = _.bindAll({ //lodash _
    someFunc1(params){
        // .... stuff here
    },
    someFunc2(params){
        // .... stuff here
    },
    someFunc3(params){
        // .... stuff here
    }
});
// ... many more of these

我一直在做这样的事情来获得一个特定的功能

import {Utils} from '../some/path/to/utils';
var {someFunc2} = Utils;

开门见山。。有没有办法为someFunc2执行单行导入?比如如何使用括号进行嵌套对象销毁分配?(阿卡语:{Utils: [{someFunc2}]})?

我曾经做过var someFunc2 = require('../some/path/to/utils').someFunc2;,但我似乎不知道如何使用导入语句

不,ES6模块导入不提供析构函数选项。它们唯一的功能是命名导出(但没有嵌套)。它们旨在完全取代您的require(…).someFunc2模式。

在您的特定情况下,我看不出有任何理由将单个对象导出为命名导出。只需使用

export function someFunc1(params){
    // .... stuff here
}
export function someFunc2(params){
    // .... stuff here
}
export function someFunc3(params){
    // .... stuff here
}

这样你就可以进行

import {someFunc2} from '../some/path/to/utils';

要实现您想要的目标,您需要导出为默认值:

const Utils = _.bindAll({ //lodash _
    someFunc1(params){
        // .... stuff here
    },
    someFunc2(params){
        // .... stuff here
    },
    someFunc3(params){
        // .... stuff here
    }
});
export default Utils;

然后,您可以导入所需的全部内容。。。

import Utils, { someFunc2 } from '../some/path/to/utils';