最近經手了一個蠻舊的專案,看了一下用的 js 並不多,於是就順便把 jQuery 拆掉,改用原生的 js 。
過程中除了用 ChatGPT 之類的輔助以外,主要還是參考 You might not need jQuery 和 MDN 。
一開始先拆 jQuery.store
和 json2 。
專案建立的當時還需要支援舊版的 Internet Explorer ,現在不用管 IE 了。
拆掉的過程遇到的問題是 jQuery.store
在儲存時有把值轉成 json 格式,字串帶了引號;但我想要改寫成直接存取 localStorage
的值,花了不少時間在這上面。
接下來拆的是 jQuery.post()
和 jQuery.getJSON()
,替代的是已經在 Baseline 的 fetch()
。
比較需要消化的是傳遞的部份, MDN 給的範例是用 async function
和 await
;我對 async
& await
沒那麼熟,看了一下 Postman 給的範例是用 .then()
,就依樣畫葫蘆。
fetch()
發出 POST 請求時,用到 URLSearchParams
來送出 body 。 不一樣的是 Postman 的範例是用 fetch().then((response) => response.text())
,我改成用 fetch().then((response) => response.json())
,最後再接回 .then((result) => { /* 處理 json 的 function */ })
。
再來拆 jQuery.query
,一樣用 URLSearchParams
取得目前頁面的查詢參數:
let params = new URLSearchParams(location.href);
而且十分貼心的直接把網址前面的 ?
處理掉了。
參數有網址的話,大部份的狀況不用再自己做 encodeURIComponent()
或 decodeURIComponent()
,直接丟進 URLSearchParams
處理就行。
然後拆掉 jQuery.cookie
。
最後確認沒有用到 $.
了,就拆掉 jQuery 本體,重新走一次原本的需求流程確認沒問題,上線收工。
留言列表