Next.js 如何優化匯入函式庫
加速 40% 冷啟動和 28% 建置速度
在 Next.js 最新版本,官方優化了套件匯入,改善了本地開發的效能和正式環境冷啟動的速度。特別適用於使用大型的 Icon ,元件庫,或其他重複 Export 大量模組的相依套件。
加速 40% 冷啟動和 28% 建置速度
在 Next.js 最新版本,官方優化了套件匯入,改善了本地開發的效能和正式環境冷啟動的速度。特別適用於使用大型的 Icon ,元件庫,或其他重複 Export 大量模組的相依套件。
原文連結
備註:本文有略微簡化原文內容並提供一些補充,目標提供一個較簡化流暢容易理解的版本。另外本文改寫了 tsx 的範例希望能更容易了解觀念。
提到建置網頁應用程式,React 已經成為主流好一陣子了(目前 2023),並且採用率持續在上升。常見搭配 React 開發網站的方式中,Next.js 是比較主流的選項之一。
自從去年他們發佈了 App Router 等重大更新以來也一直備受關注。新的路由架構採用了嵌套佈局(Nested Layouts)並緊密整合了 React Server Component
和 Suspense
。
首先,參考以下的實務範例:
1 | async function main() { |
這是一段 OpenAI Node SDK 的範例,使用 GPT-4 搭配串流的方式。
如過您希望製作像 Airbnb 那樣自訂標記的樣式,動態顯示一些資訊並且當用戶和其互動時可以渲染自訂的 React 元件,那麼您來對地方了。
本範例嘗試使用 Google 官方的 React Wrapper 函式庫實作 Google Map 功能,目標為自訂 MapOverView 達成在 Map 上加入複雜的 Marker。 例如像 Airbnb 點擊房源時可以展開。這個範例我們會支援 Marker Clustering。
完整教學與範例請參考 Github
使用者介面(UI)是由許多不同“部分”組成,而每個部分會以不同的頻率回應使用者的操作。有些例如表單的輸入欄位(<input>
),需要即時回應使用者的操作,而其他像是內容很長的“篩選列表”或切換頁面則稍微慢一些。
在同步渲染的情況下,也就是沒有併發功能的 React 或者大部分的 JavaScript UI 框架/函式庫。一些回應比較慢的介面操作就會阻塞執行而拖累較快回應的部分。
React 併發功能就是為了解耦/分離回應快和慢的介面,使渲染慢的部分在背景繼續執行而不阻塞較快的部分,達到每個部分可以各自回應使用者的操作。
併發渲染並不會讓應用程式提升效率變快,只是利用上敘分離的方式讓使用起來感覺體驗變快了。
本文將探討 React 併發功能(React Concurrent),了解其解決的問題以及如何利用。
本文的核心為將 Next.js 部署至 Google Cloud Run,CI 的部分會使用 Gitlab CI,主要會依據採用不同服務分成兩種流程:
本文希望可以儘量補充其他教學遺失的環節,幫助您可以自行選擇想用的服務調整流程。
[toc]
雖然 ref
是一個可變更 (mutable 物件在建立後可被修改) 的容器,我們理論上可以儲存任何資料。通常我們會拿來處理存取 DOM 節點:
1 | const ref = React.useRef(null); |
ref
是一個內建的屬性,React 會在渲染後儲存 DOM 節點,當元件卸載後也會設為 null
。