最近經手了一個蠻舊的專案,看了一下用的 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 本體,重新走一次原本的需求流程確認沒問題,上線收工。
 
         留言列表
 留言列表 
            
 
 
 日常 (10)
 日常 (10) 



