HTML: 使用带有导入语句的外部 .js 文件
HTML: using external .js file with import statements
我有一个 HTML 文件 ~/docs/index.html
,它有一个内部 JavaScript 脚本允许 input/output 有两个文本区域。这个内部 JS 脚本又调用一个外部 JS 脚本 ~/src/Main.js
,我在 HTML 文件的头部导入了它。
一切似乎都很好,直到我的 ~/src/Main.js
需要导入其他外部 JS 文件。然后,事情似乎不再有效。
~/docs/index.html
:
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<base href="../" target="_blank">
<!-- JavaScript imports -->
<script type="module" src="src/Main.js"></script>
</head>
<body>
<main>
<div>
<textarea
id="input"
oninput="update()"
placeholder="Type here!"
></textarea>
<textarea id="output" readonly>no way</textarea>
</div>
<!-- Textarea script -->
<script>
// Updates the textarea
function update() {
let input = document.getElementById("input");
let output = document.getElementById("output");
output.value = doubleIt(input.value);
}
</script>
</main>
</body>
</html>
~/src/Main.js
:
import "./OtherClass.js"; // THIS LINE BREAKS THINGS
export function doubleIt(input) {
return input + input;
}
我看过 但那里的解决方案似乎对我不起作用。任何帮助表示赞赏。
每个使用 DOM 中包含的 import
/ export
语法的脚本都必须具有 type="module"
属性。
如果内联脚本使用模块中的任何函数,则也需要先导入它们。
注意: 避免像 oninput
这样的内联事件监听器并通过 JavaScript 添加事件监听器,因为对于模块 update
函数将不会不再是全局值。
<script type="module">
import { doubleIt } from "./src/Main.js";
let input = document.getElementById("input");
let output = document.getElementById("output");
function update() {
output.value = doubleIt(input.value);
}
input.addEventListener('input', update)
</script>
我有一个 HTML 文件 ~/docs/index.html
,它有一个内部 JavaScript 脚本允许 input/output 有两个文本区域。这个内部 JS 脚本又调用一个外部 JS 脚本 ~/src/Main.js
,我在 HTML 文件的头部导入了它。
一切似乎都很好,直到我的 ~/src/Main.js
需要导入其他外部 JS 文件。然后,事情似乎不再有效。
~/docs/index.html
:
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<base href="../" target="_blank">
<!-- JavaScript imports -->
<script type="module" src="src/Main.js"></script>
</head>
<body>
<main>
<div>
<textarea
id="input"
oninput="update()"
placeholder="Type here!"
></textarea>
<textarea id="output" readonly>no way</textarea>
</div>
<!-- Textarea script -->
<script>
// Updates the textarea
function update() {
let input = document.getElementById("input");
let output = document.getElementById("output");
output.value = doubleIt(input.value);
}
</script>
</main>
</body>
</html>
~/src/Main.js
:
import "./OtherClass.js"; // THIS LINE BREAKS THINGS
export function doubleIt(input) {
return input + input;
}
我看过
每个使用 DOM 中包含的 import
/ export
语法的脚本都必须具有 type="module"
属性。
如果内联脚本使用模块中的任何函数,则也需要先导入它们。
注意: 避免像 oninput
这样的内联事件监听器并通过 JavaScript 添加事件监听器,因为对于模块 update
函数将不会不再是全局值。
<script type="module">
import { doubleIt } from "./src/Main.js";
let input = document.getElementById("input");
let output = document.getElementById("output");
function update() {
output.value = doubleIt(input.value);
}
input.addEventListener('input', update)
</script>