繁体   English   中英

解决出口/进口

[英]Resolving Export / Imports

我有一个类似以下内容的Namespacing.js

(function(){

    window.GlobalObject = {
        foo : function() { console.log("bar"); }
    }

})();

然后我有另一个MyScript.js

GlobalObject.newAttribute = { ... }

所以我现在与webpack捆绑在一起,我试图在此上使用模块,但是我无法做到这一点。

我在Namespacing.js末尾添加了:

export default GlobalObject;

然后我尝试将其导入MyScript.js

import GlobalObject from "Namespacing"

但是后来我的webpack给我一个错误

[14:58:44] GulpUglifyError: unable to minify JavaScript
Caused by: SyntaxError: Unexpected token: name (Kneat) (line: 1, col: 7, pos: 7)

有谁知道进行此导出/导入的好方法吗?

要切换到import / export ,您不能仅将exports添加到现有文件中,您需要(略有更改)更改其结构。

例如,Namespacing.js将具有以下任一功能:

export const GlobalObject = {
    foo : function() { console.log("bar"); }
};

...导出命名符号GlobalObject 可以这样导入:

import { GlobalObject } from './Namespacing.js';

(如果要在导入模块中本地使用其他名称,则可以使用as子句。)

或者,您可以将该对象导出为默认导出:

export default {
    foo : function() { console.log("bar"); }
};

...并像这样导入它:

import GlobalObject from './Namespacing.js';

请注意,在这种情况下,可以在要导入GlobalObject的模块中使用想要的名称作为GlobalObject (不需要as子句)。


不必担心删除IIFE的事实。 模块具有固有的作用域,模块代码不能在全局范围内运行。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM