从对象导入属性

时间:2016-07-27 07:42:44

标签: javascript ecmascript-6

我正在尝试从函数文件中导入单个函数。函数文件看起来像这样。

const Functions = {
    url(path = '') {
        path = path.replace(/^\/+/, '');
        return `${document.baseURI}/${path}`;
    },

    asset(path = '') {
        return this.url(path);
    }
};

export default Functions;

然后我尝试像这样导入url函数。

import {url} from "../Utils/Functions";

当我这样做时,我在browserify中的浏览器中收到以下错误。

  

未捕获的TypeError:(0,_Functions.url)不是函数

根据MDN文档,此导入应该在url对象中Functions时有效。

我做错了什么?

2 个答案:

答案 0 :(得分:3)

你做了什么 - 导出了一个对象。

在这种情况下,您需要导入一个对象并访问其属性:

import Functions from "../Utils/Functions";
Functions.url();

如果要进行命名导出 - 您需要更改导出和定义它的方式:

function url(path = '') {
    path = path.replace(/^\/+/, '');
    return `${document.baseURI}/${path}`;
}

function asset(path = '') {
    return this.url(path);
}

export { url, asset };

export function url(path = '') {
    path = path.replace(/^\/+/, '');
    return `${document.baseURI}/${path}`;
}

export function asset(path = '') {
    return this.url(path);
}

另一个注意事项:即使它看起来很相似,也不是解构。标准将其命名为ImportsList并定义其自己的语义,与解构的语义不同。

参考文献:

答案 1 :(得分:0)

如果您使用'默认导出'那么导入应该是:

import Functions from "../Utils/Functions";

实际上,您可以使用您喜欢的任何标识符导入它(不仅仅是'功能')