Javascript ECMAScript-6是否导入嵌套函数?

Javascript ECMAScript-6是否导入嵌套函数?,javascript,ecmascript-6,Javascript,Ecmascript 6,嗨,我刚才切换到ECMAScript-6JavaScript语法,我很喜欢它!有一件事我注意到了,但没有找到一个明确的答案,那就是在导入中使用嵌套破坏语法。我的意思是这样的 假设我有一个这样的文件 export const SomeUtils = _.bindAll({ //lodash _ someFunc1(params){ // .... stuff here }, someFunc2(params){ // .... stuff h

嗨,我刚才切换到ECMAScript-6JavaScript语法,我很喜欢它!有一件事我注意到了,但没有找到一个明确的答案,那就是在导入中使用嵌套破坏语法。我的意思是这样的

假设我有一个这样的文件

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但我似乎不知道如何使用import语句来实现这一点

不,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';

你是说
导出类Utils
?@saadq不,它只是一个带有实用函数的对象。在这种情况下,你的语法似乎不正确。你是说?在
{
并且你需要在方法之间添加逗号。@saadq是的,这只是我动态编写的一个简单示例。但是是的。我会用更多的细节更新它,使其语法正确。问题是这个实用程序文件有分组实用程序。所以一些用于url,一些用于媒体..等等(大约100个实用程序函数).这是我没有制作的工作文件(我开始在这里工作时就在那里).但是谢谢你的回答。我会继续做我一直在做的事情!你可能想把它分成多个模块。否则,只需要两行代码就可以了destructuring@JohnRuddell当前位置我的回答是假设您的完整UTIL文件与您发布的内容相似,如果不是这样的话,请忽略第二部分。我可能会将任务交给do在不久的将来更新所有文件。我知道,如果不发布太多代码,就很难发布所有相关内容。lol。别担心。我会再处理一些,看看最好的方法是什么:)@JohnRuddell:只需使用
..//很多这样的
,就可以解决问题:-)它似乎不起作用。还有这里没有名为
someFunc2
的导出。@Maroshii我没有投反对票,但我可以告诉你,这不起作用,因为从文件导入某些内容(你建议的方式)必须导出。默认值是其子对象为someFunc2..的对象,该子对象无效。该导入表示导入名为someFunc2的UTIL的同级对象,而不是的子对象Utils@Bergi.更新了答案。它确实有效。只是
default const
无法内联声明。我刚刚尝试了它。仍然无效。而且它也不起作用r我的问题是,即使它真的起作用了,它也只适用于默认情况,而不适用于任何其他情况functions@Maroshii:是的,它可能引用同一个对象,但属性和导出是两个不同的东西。如果不是,这就是非标准传输的工作方式。