iT邦幫忙

0

使用AJAX做出簡易版元件系統

  • 分享至 

  • xImage

小弟最近經手一個專案,規模說大不大、說小不小,所以盡可能不想依賴過多套件,於是自己做了一個簡易版的元件系統(其實也不算系統),是使用XMLHttpRequest讀取HTML檔,解析DOM後取出需要的元素,插入當前的頁面,如此一來便可複用NAVBAR等每個頁面都會有的元件。

雖然表面上看起來應該是沒問題,但由於經驗不足,還是想請教各位前輩,這麼做會不會導致什麼潛在的問題或風險?

附上部分程式碼供參:

let xhr = new XMLHttpRequest();
xhr.open("GET", "/components/navbar.html", true);
xhr.send();
xhr.onreadystatechange = function () {

  if (this.readyState === 4 && this.statusText === "OK") {
    let parser = new DOMParser();
    let doc = parser.parseFromString(this.responseText, "text/html");
    let navbar = doc.querySelector("nav");
    let oldNavbar = document.querySelector("nav");
    document.body.replaceChild(navbar, oldNavbar);
  }
}
黃彥儒 iT邦高手 1 級 ‧ 2022-09-29 14:14:12 檢舉
比起過多套件,使用成熟的搭配反而好更新好維護
例如Vue.js+Axios+Bootstrap,三套就就可以覆蓋大多數功能,如果沒有太複雜是可以順順升級上去的
菜雞 iT邦新手 5 級 ‧ 2022-09-29 15:07:21 檢舉
之前有稍微學一點Vue,但是由於沒經驗,不敢用在正式要上線的專案上,最後只用了Bootstrap配原生JS
tigernaxo iT邦新手 5 級 ‧ 2022-09-30 12:42:45 檢舉
如果不熟悉前端 CLI 開發的話可以改用 MVC,做成 template 就可以複用了
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

1 個回答

1
Felix
iT邦研究生 2 級 ‧ 2022-09-29 12:19:49

在我看來,有兩點要注意:

  1. 光是載入一次網頁就會發送很多請求,關於這點就要看伺服器能不能承受了。
  2. 元件是 HTML 檔案,因此任何人(網站)都能使用元件,搜尋引擎也能對元件索引,如果不想要被使用或索引就要額外設定。
菜雞 iT邦新手 5 級 ‧ 2022-09-29 13:11:16 檢舉

大致了解,感謝回答!

我要發表回答

立即登入回答