透過 100 多個技巧的集合來學習 Nuxt!

生命週期鉤子

Nuxt 提供一個強大的鉤子系統,可以使用鉤子擴展幾乎每個方面。
文件 > 指南 > 深入了解 > 鉤子 中閱讀更多資訊。

應用程式鉤子(運行時)

請查看 應用程式原始碼 以取得所有可用的鉤子。

鉤子參數環境說明
app:createdvueApp伺服器 & 用戶端在建立初始 vueApp 實例時呼叫。
app:errorerr伺服器 & 用戶端當發生嚴重錯誤時呼叫。
app:error:cleared{ redirect? }伺服器 & 用戶端當發生嚴重錯誤時呼叫。
app:data:refreshkeys?伺服器 & 用戶端(內部)
vue:setup-伺服器 & 用戶端(內部)
vue:errorerr, target, info伺服器 & 用戶端當 Vue 錯誤傳播到根元件時呼叫。了解更多
app:renderedrenderContext伺服器當 SSR 渲染完成時呼叫。
app:redirected-伺服器在 SSR 重定向之前呼叫。
app:beforeMountvueApp用戶端在掛載應用程式之前呼叫,僅在用戶端呼叫。
app:mountedvueApp用戶端當 Vue 應用程式在瀏覽器中初始化並掛載時呼叫。
app:suspense:resolveappComponent用戶端Suspense 解析事件時呼叫。
app:manifest:update{ id, timestamp }用戶端當偵測到您的應用程式有較新版本時呼叫。
link:prefetchto用戶端當觀察到 <NuxtLink> 被預取時呼叫。
page:startpageComponent?用戶端Suspense 待處理事件時呼叫。
page:finishpageComponent?用戶端Suspense 解析事件時呼叫。
page:loading:start-用戶端當新頁面的 setup() 正在執行時呼叫。
page:loading:end-用戶端page:finish 之後呼叫。
page:transition:finishpageComponent?用戶端在頁面轉換 onAfterLeave 事件之後呼叫。
dev:ssr-logslogs用戶端當伺服器端記錄傳遞到用戶端時呼叫(如果 features.devLogs 已啟用)。
page:view-transition:starttransition用戶端實驗性 viewTransition 支援啟用 後,在呼叫 document.startViewTransition 之後呼叫。

Nuxt 鉤子(建置時)

請查看 結構描述原始碼 以取得所有可用的鉤子。

鉤子參數說明
kit:compatibilitycompatibility, issues允許擴展相容性檢查。
readynuxt在 Nuxt 初始化之後,當 Nuxt 實例準備好工作時呼叫。
closenuxt當 Nuxt 實例正常關閉時呼叫。
restart{ hard?: boolean }呼叫以重新啟動目前的 Nuxt 實例。
modules:before-在 Nuxt 初始化期間,在安裝使用者模組之前呼叫。
modules:done-在 Nuxt 初始化期間,在安裝使用者模組之後呼叫。
app:resolveapp在解析 app 實例之後呼叫。
app:templatesappNuxtApp 產生期間呼叫,以允許自訂、修改或新增檔案到建置目錄(虛擬或寫入到 .nuxt)。
app:templatesGeneratedapp在範本編譯到 虛擬檔案系統 (vfs) 之後呼叫。
build:before-在 Nuxt 捆綁器之前呼叫。
build:done-在 Nuxt 捆綁器完成後呼叫。
build:manifestmanifest在 Vite 和 webpack 建置 manifest 期間呼叫。這允許自訂 Nitro 將用來在最終 HTML 中呈現 <script><link> 標籤的 manifest。
builder:generateAppoptions在產生應用程式之前呼叫。
builder:watchevent, path在開發中的建置時呼叫,當監看器發現專案中的檔案或目錄有變更時呼叫。
pages:extendpages在從檔案系統掃描頁面路由之後呼叫。
pages:resolvedpages在頁面路由已使用掃描的中繼資料擴增之後呼叫。
pages:routerOptions{ files: Array<{ path: string, optional?: boolean }> }當解析 router.options 檔案時呼叫。陣列中較晚的項目會覆寫較早的項目。
server:devHandlerhandler當開發中介軟體正在 Nitro 開發伺服器上註冊時呼叫。
imports:sourcespresets在設定期間呼叫,允許模組擴充來源。
imports:extendimports在設定期間呼叫,允許模組擴充匯入。
imports:contextcontext當建立 unimport 內容時呼叫。
imports:dirsdirs允許擴充匯入目錄。
components:dirsdirsapp:resolve 內呼叫,允許擴充掃描自動匯入元件的目錄。
components:extendcomponents允許擴展新的元件。
nitro:confignitroConfig在初始化 Nitro 之前呼叫,允許自訂 Nitro 的設定。
nitro:initnitro在初始化 Nitro 之後呼叫,允許註冊 Nitro 鉤子並直接與 Nitro 互動。
nitro:build:beforenitro在建置 Nitro 實例之前呼叫。
nitro:build:public-assetsnitro在複製公用資產之後呼叫。允許在建置 Nitro 伺服器之前修改公用資產。
prerender:routesctx允許擴展要預先渲染的路由。
build:errorerror當建置時發生錯誤時呼叫。
prepare:typesoptions在 Nuxi 寫入 .nuxt/tsconfig.json.nuxt/nuxt.d.ts 之前呼叫,允許在 nuxt.d.ts 中新增自訂參考和宣告,或直接修改 tsconfig.json 中的選項
listenlistenerServer, listener當開發伺服器正在載入時呼叫。
schema:extendschemas允許擴充預設結構描述。
schema:resolvedschema允許擴展已解析的結構描述。
schema:beforeWriteschema在寫入給定的結構描述之前呼叫。
schema:written-在寫入結構描述之後呼叫。
vite:extendviteBuildContext允許擴展 Vite 預設內容。
vite:extendConfigviteInlineConfig, env允許擴展 Vite 預設設定。
vite:configResolvedviteInlineConfig, env允許讀取已解析的 Vite 設定。
vite:serverCreatedviteServer, env當建立 Vite 伺服器時呼叫。
vite:compiled-在編譯 Vite 伺服器後呼叫。
webpack:configwebpackConfigs在設定 webpack 編譯器之前呼叫。
webpack:configResolvedwebpackConfigs允許讀取已解析的 webpack 設定。
webpack:compileoptions在編譯之前立即呼叫。
webpack:compiledoptions在載入資源後呼叫。
webpack:changeshortPath在 WebpackBar 上的 change 時呼叫。
webpack:error-如果在 WebpackBar 上有錯誤,則在 done 時呼叫。
webpack:done-在 WebpackBar 上的 allDone 時呼叫。
webpack:progressstatesArray在 WebpackBar 上的 progress 時呼叫。

Nitro 應用程式鉤子(執行時,伺服器端)

請參閱 Nitro 以取得所有可用的鉤子。

鉤子參數說明類型
dev:ssr-logs{ path, logs }伺服器在請求週期結束時呼叫,並帶有伺服器端記錄的陣列。
render:responseresponse, { event }在傳送回應之前呼叫。response, event
render:htmlhtml, { event }在建構 HTML 之前呼叫。html, event
render:islandislandResponse, { event, islandContext }在建構島嶼 HTML 之前呼叫。islandResponse, event, islandContext
close-當 Nitro 關閉時呼叫。-
errorerror, { event? }當發生錯誤時呼叫。error, event
requestevent當收到請求時呼叫。event
beforeResponseevent, { body }在傳送回應之前呼叫。event, unknown
afterResponseevent, { body }在傳送回應之後呼叫。event, unknown