不能在模块客户端外使用 import 语句
Cannot use import statement outside a module CLIENT-SIDE
在客户端,我只想导入 Javascript 模块的特定部分。
但我想按需执行此操作,例如当用户执行需要模块特定部分的操作时。
我能够在 HTML 文件中完成此操作,方法是:
<script type="module">
import { sayHi } from "/public/js/sayHi.js";
sayHi("John");
</script>
现在我想做同样的事情,但是在我的客户端 JS 文件中,这样我就可以 运行 随时加载(而不是在页面加载时,如上例所示)。我从解决它得到的最接近的是 运行 在我的客户端 JS 文件中解决这个问题:
import("/public/js/sayHi.js")
但问题是最后一个脚本加载了整个模块,而不仅仅是我想要的部分。如果我尝试这样做:
import { sayHi } from "./sayHi.js";
我收到错误消息“无法在模块外使用导入语句”。
如何通过我的客户端 JS 只导入 { sayHi } 部分?
P.S.: 举个例子,我想在我的客户端 JS 中有类似的东西:
buttonX.addEventListener('click', async () => {
const a = await import { sayHi } from "./sayHi.js";;
});
It loads the whole module, not just the part that I want
它总是这样,你无法避免。当您使用 import {…} from '…'
时也会发生这种情况 - 它只是不会将所有内容导入当前模块范围。就像你调用import(…)
一样,你不必使用所有可用的部分:
buttonX.addEventListener('click', async () => {
const { sayHi: a } = await import("./sayHi.js");
a();
});
在客户端,我只想导入 Javascript 模块的特定部分。 但我想按需执行此操作,例如当用户执行需要模块特定部分的操作时。 我能够在 HTML 文件中完成此操作,方法是:
<script type="module">
import { sayHi } from "/public/js/sayHi.js";
sayHi("John");
</script>
现在我想做同样的事情,但是在我的客户端 JS 文件中,这样我就可以 运行 随时加载(而不是在页面加载时,如上例所示)。我从解决它得到的最接近的是 运行 在我的客户端 JS 文件中解决这个问题:
import("/public/js/sayHi.js")
但问题是最后一个脚本加载了整个模块,而不仅仅是我想要的部分。如果我尝试这样做:
import { sayHi } from "./sayHi.js";
我收到错误消息“无法在模块外使用导入语句”。
如何通过我的客户端 JS 只导入 { sayHi } 部分?
P.S.: 举个例子,我想在我的客户端 JS 中有类似的东西:
buttonX.addEventListener('click', async () => {
const a = await import { sayHi } from "./sayHi.js";;
});
It loads the whole module, not just the part that I want
它总是这样,你无法避免。当您使用 import {…} from '…'
时也会发生这种情况 - 它只是不会将所有内容导入当前模块范围。就像你调用import(…)
一样,你不必使用所有可用的部分:
buttonX.addEventListener('click', async () => {
const { sayHi: a } = await import("./sayHi.js");
a();
});