我想从html头文件中的所有类切换到模块方法。
我想在按钮和其他元素上使用一些方法和功能。
在我的index.html头部:
<script src="js/main.js" type="module" defer></script>
在main.js内部:
import {writeAlert} from './test.js';
在test.js内部:
export function writeAlert () {
alert('I am an alert');
}
在index.html的body元素内部
<button onlick="writeAlert()">Alert</button>
我收到错误消息,指出未定义函数(或在其他情况下为类)。那么,实现导入功能的全局使用的方法是什么?客户实际上可以通过这种方法查看我的整个源代码吗?
答案 0 :(得分:3)
模块中导入的标识符在外部不可见。
按个人喜好排序的两种解决方案:
<button id="alertButton">Alert</button>
main.js
或另一个导入writeAlert
的模块中:document.addEventListener("DOMContentLoaded", () => {
document.getElementById("alertButton").onclick = writeAlert;
});
writeAlert
”导出到window
上:
import { writeAlert } from "./test.js";
window.writeAlert = writeAlert;
这样,writeAlert
可以在代码,HTML或JS中的任何位置访问,而无需任何导入。但这恰恰违背了使用导入的目的,而且不够优雅。答案 1 :(得分:2)
这是一个不完整的答案。但是,相同的想法可以进一步扩展。
在main.js中:
import {writeAlert} from './test.js';
window.writeAlert = writeAlert;
之后,可以从HTML文件访问“ writeAlert”。