如何使用es6模块导入和导出js文件

时间:2019-06-06 10:55:12

标签: javascript

在最基本的级别上使用es6模块功能时遇到麻烦。

在查看MDN文档时,我看到了使用该功能的许多变体,但是没有一个对我有用。请考虑以下代码段:


//importer.js
"use strict";

import * as imported from "./exporter";

imported.foo();

//exporter.js
"use strict";

export const foo = () => console.log('success');

//main.html
<html>
<head>
<script src = "./importer.js"></script>
</head>
</html>

我希望以下代码记录“成功”,因此我知道“导入的模块”设法从“导出的模块”导入foo函数。

我尝试了其他一些变体,例如带括号{}的导出或默认的导出(如MDN所写)。

很明显,我缺少一些基本知识。 您的帮助将不胜感激。

2 个答案:

答案 0 :(得分:1)

请在您的html脚本元素中添加type="module"属性,并在导入程序文件中添加文件扩展名

 import * as imported from "./exporter.js";

答案 1 :(得分:0)

CORS位于HTTP之上,因此除了HTTP https chrome和chrome-extension之外,CORS在某种程度上毫无意义,因为后3个(我在这里缺少文档)可能依赖于与HTTP相同的规则。

目前尚未定义CORS的其他协议行为。因此Chrome阻止了它。

要分别回答每个问题:

1)不,他们只是认为由于未为其他协议定义CORS,因此最安全的方法是崩溃并显示“未实现”错误。

2)由于1)答案为否,因此该问题不适用。但是,如果Chrome放开了请求,则取决于未知协议来正确处理CORS,这可能不会正确完成

3)Firefox和Chrome之间的区别在于,Firefox首先检查请求者文档的来源和请求的资源是否相同(如果允许,则允许它通过,否则,它遵循CORS流程),而Chrome始终遵循在检查原点匹配之前进行CORS处理。

-我不知道哪种行为最符合Fetch规范-似乎两者都可以,因为该规范的一部分说了

“文件”“ ftp”

就目前而言,不幸的是,文件和ftp URL留给读者练习。

如有疑问,请返回网络错误。

我唯一看到的危害是Firefox会让脚本在屏幕上显示来自file:///的敏感信息,从而使肩膀的间谍无法抓住。那和CORS无关。