最近經手了一個蠻舊的專案,看了一下用的 js 並不多,於是就順便把 jQuery 拆掉,改用原生的 js 。

過程中除了用 ChatGPT 之類的輔助以外,主要還是參考 You might not need jQueryMDN

一開始先拆 jQuery.storejson2
專案建立的當時還需要支援舊版的 Internet Explorer ,現在不用管 IE 了。
拆掉的過程遇到的問題是 jQuery.store 在儲存時有把值轉成 json 格式,字串帶了引號;但我想要改寫成直接存取 localStorage 的值,花了不少時間在這上面。

接下來拆的是 jQuery.post()jQuery.getJSON() ,替代的是已經在 Baselinefetch()
比較需要消化的是傳遞的部份, MDN 給的範例是用 async functionawait ;我對 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 本體,重新走一次原本的需求流程確認沒問題,上線收工。


arrow
arrow
    創作者介紹
    創作者 repeat ❤️ 的頭像
    repeat ❤️

    旅行的記憶

    repeat ❤️ 發表在 痞客邦 留言(0) 人氣()