![](/img/trans.png)
[英]Why can't I use functions from javascript-files that are imported by require()?
[英]Can I use imported functions and classes globally in JavaScript?
我想從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>
我收到錯誤消息,即未定義函數(或在其他情況下為類)。 那么,實現導入功能的全局使用的方法是什么? 客戶實際上可以通過這種方法查看我的整個源代碼嗎?
在模塊中導入的標識符在外部不可見。
兩種解決方案,按個人喜好順序排列:
<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;
這樣,無需任何導入即可在代碼,HTML或JS中的任何位置訪問writeAlert
。 但這恰恰違背了使用導入的目的,並且不那么優雅。 這是一個不完整的答案。 但是,相同的想法可以進一步擴展。
在main.js中:
import {writeAlert} from './test.js';
window.writeAlert = writeAlert;
之后,可以從HTML文件訪問“ writeAlert”。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.