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

生命週期鉤子

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

應用程式鉤子 (runtime)

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

鉤子引數環境描述
app:createdvueApp伺服器 & 用戶端當初始 vueApp 實例建立時呼叫。
app:errorerr伺服器 & 用戶端當發生嚴重錯誤時呼叫。
app:error:cleared{ redirect? }伺服器 & 用戶端當發生嚴重錯誤時呼叫。
vue:setup-伺服器 & 用戶端當 Nuxt 根目錄的設定初始化時呼叫。此回呼必須是同步的。
vue:errorerr, target, info伺服器 & 用戶端當 vue 錯誤傳播到根元件時呼叫。了解更多
app:renderedrenderContext伺服器當完成 SSR 渲染時呼叫。
app:redirected-伺服器在 SSR 重定向之前呼叫。
app:beforeMountvueApp用戶端在掛載應用程式之前呼叫,僅在用戶端呼叫。
app:mountedvueApp用戶端當 Vue 應用程式初始化並在瀏覽器中掛載時呼叫。
app:suspense:resolveappComponent用戶端Suspense resolved 事件中。
app:manifest:update{ id, timestamp }用戶端當偵測到應用程式有較新版本時呼叫。
app:data:refreshkeys?用戶端refreshNuxtData 被呼叫時呼叫。
link:prefetchto用戶端<NuxtLink> 被觀察到預先擷取時呼叫。
page:startpageComponent?用戶端Suspense pending 事件中呼叫。
page:finishpageComponent?用戶端Suspense resolved 事件中呼叫。
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 應用程式鉤子 (runtime, server-side)

請參閱 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