type="module" javascript 文件都是相互隔离的吗?
Are type="module" javascript files all isolated from each other?
我的 HTML 文档底部引用了两个外部脚本:
<script type="module" src="/scripts-1.js"></script>
<script type="module" src="/scripts-2.js"></script>
我已经 运行 进行了一些测试,我可以看到如果我添加:
const logHelloWorld = () => console.log('Hello World');
logHelloWorld();
到任一外部文件然后函数将执行。
但是如果我将函数声明添加到 /scripts-1.js
并将 logHelloWorld();
添加到 /scripts-2.js
,则控制台显示错误:
ReferenceError: logHelloWorld
is not defined
是不是因为所有type="module"
脚本都是相互隔离的?
是的。其他模块使用的资源必须显式export
ed,并在需要的地方import
ed。
Here 是 ES6 模块系统的众多指南之一。
模块实际上 "insulated" 来自彼此。您可以 export
一个模块中的东西,然后 import
将它们放到另一个模块中。一般来说,type="module"
标志被认为是一种未来的功能,目前一般不使用。最好使用其他工具将所有 JS 文件捆绑在一起,例如 webpack。
我的 HTML 文档底部引用了两个外部脚本:
<script type="module" src="/scripts-1.js"></script>
<script type="module" src="/scripts-2.js"></script>
我已经 运行 进行了一些测试,我可以看到如果我添加:
const logHelloWorld = () => console.log('Hello World');
logHelloWorld();
到任一外部文件然后函数将执行。
但是如果我将函数声明添加到 /scripts-1.js
并将 logHelloWorld();
添加到 /scripts-2.js
,则控制台显示错误:
ReferenceError:
logHelloWorld
is not defined
是不是因为所有type="module"
脚本都是相互隔离的?
是的。其他模块使用的资源必须显式export
ed,并在需要的地方import
ed。
Here 是 ES6 模块系统的众多指南之一。
模块实际上 "insulated" 来自彼此。您可以 export
一个模块中的东西,然后 import
将它们放到另一个模块中。一般来说,type="module"
标志被认为是一种未来的功能,目前一般不使用。最好使用其他工具将所有 JS 文件捆绑在一起,例如 webpack。