每一年的開始大家都會有一個 new year resolution 新年新希望,我們吃飯的工具 web 整體我也好奇及許願看過去這一年發生了什麼事情和今天有可能會往什麼方向走
過去的這一年因為 ChatGPT 和 OpenAI 的 API,讓很多公司網站直接嵌入 GPT 套一下自己的邏輯做出了聊天機器人或客服等等,同樣的方式弄了一個自定義的 prompt 也做出了很多所謂套殼的 GPT 網站,有一些比較不一樣的比如把 resume 給 AI 看哪裡可以進步等等,不過就在上禮拜 OpenAI 的 GPT store 正式上線,可以透過自定義的 prompt 來定義一個屬於自己的或是提供專門功能的 GPT,不曉得到時候整體市場會有什麼改變畢竟這樣等於把很多市場上有的 GPT 功能都打趴了。另一點我想提的是目前這些 AI 功能都是一定要打一個 API 都後端或是直接打給 OpenAI 的 API,這些 large language model 做完 inference 再把結果傳回來,我是蠻想看到有沒有辦法在 client 端就做這些事情,不用全部但至少部分可以在 client 端,這樣離線也可以用,整體可能取決於可以把 model 縮到多小和整體效能,像 Google 之前發表的 Gemini 就有一個叫 Gemini Nano 是已經在 Pixel 8 local 跑了,但網頁除非用 WebAssembly 這類貼近 low level 語言架構要不然我猜效能可能不太好,如果整體比打 API 還慢那就沒有意義了。
AI 除了當作應用當作一個 feature 以外也幫助很多 developer 工作,github copilot 或是直接把 code 複製貼上 ChatGPT 問這段 function 在幹嘛或是如何實現一個 feature,也有一些 project 透過 prompt 把 UI 生出來給你甚至把 code 給你像是 Vercel 出的 v0 或是有人把 figma 設計圖轉成 React component,million.js 創辦人後來開發一個 million copilot 是幫忙分析我們的 app 的效能和提供解決辦法,我相信未來會有更多類似的工具來幫助工程師做好每天的工作
現在前端框架有種想要把整個 web 吃掉的感覺,以前的框架就是真的在 client 上面跑的 code,我叫 API 拿資料然後把這些資料呈現在畫面上,那 SPA 我要思考一下這些 state 應該放哪裡才比較容易互相共用,但現在框架有直接往 server 走的趨勢,不光這樣這些框架也會多利用 server 來幫助比如 caching 和 rendering 的效能,因為這樣前端的定義或是 client 與 server 之間的定義已經開始模糊了,比如 Nextjs 的 React Server Component 和 Nuxt Server Components,如果以前寫過 SSR 的人會覺得這不陌生唯一最大的改變就是之前 SSR 還沒有這麼嚴格的說 client code 不能在 server 跑但 RSC 或是 Nextjs app router 就有比較多的限制。有點離題了但框架會慢慢往 server 走甚至多多利用 server 來幫助 rendering,不管是傳統意義上的 server 還是 Edge Server 來達到最短的 response time。
2023 年除了 RSC server 這類話題最大的 topic 可能是 Signal 吧尤其是 Angular 也把底層架構和 state management 轉到 Signal,對大部分工程師來說可能只是語法上的不同但實際上底層架構不同導致渲染機制也不同,大概就是 Signal 可以知道這一個 state 是對應到哪一個 DOM 所以更新時候可以直接點到那個 DOM 做更新而不用像 React 需要做 reconciliation 的動作,整體速度會快很多且跳過了這個步驟也可以把整體 bundle size 壓小一點,目前幾乎各個框架都在用或是類似方案,除了 React 沒在管以外,話說 React Forget 什麼時候會出來?時間拖太久了,到了一個它出來我也不會覺得興奮的地步了哈哈
近幾年我們看到越來越多前端的工具慢慢的被別的語言取代了比如 Babel JS 換成 Go 寫的 esbuild 或是 Rust 寫的 SWC,然後格局開始放大,Turbopack, Rolldown 想要把 build tool 整個換成 Rust 或是像 Bun 這種也想要把整個 node runtime 吃掉的,今年肯定也會有更多的前端工具被 Rust 化或是越來越成熟,我就還蠻想要看看今年能不能正式的把工作的 project 用上 Turbopack 和 Bun,最近有人嘗試把 eslint 弄掉,看看有沒有人把 prettier 也弄掉
如果你還沒開始學 TypeScript 的話我覺得你應該得開始了,越來越多 project 開始轉到 TypeScript 甚至一開始就是用TypeScript,外面教課也常常是TypeScript為基礎教框架,因為 TypeScript 而讓 IDE 可以更智能的告訴你這些 function arguments 要什麼或是這個 component 的 props 是哪一種,從 stackoverflow 的 survey 中 TypeScript popularity 從 2022 到 2023 要上升的趨勢然後越來越多公司希望新進員工會 TypeScript 所以有空的話看一下吧
手機 app 開發對 JavaScript developer 應該沒什麼特別的發展,除了 native 以外最知名的還是 React Native、NativeScript 或是 Flutter,下個月 Apple Vision 會上市而我比較期待會不會早就一些新的玩法、新的 API、或是 React Native 會怎麼更新來迎合這新的設備
今年應該更會讓前端或後端或是 server client 的定義更模糊,前端工程師要碰的東西也會越來越廣和多,還沒碰過類似 Nextjs 框架的人可以看一下他們的 tutorial 看看是個什麼感覺,會讓你也思考在 server 怎麼開發,沒有用過 AI 輔助的也應該平常試一下,不管你是不是覺得東西很簡單不需要問到 AI 但給自己有個經驗,了解 AI 的極限在哪裡,我們工程師還是要和新工具共處也要了解可以怎麼利用這些新工具,Rust 除非你工作上會直接用到要不然可以不用學,現階段不搞 CLI 工具的應該不會用到,坊間有那種 Rust web framework 什麼的但還是偏小眾