Skip to content

Lifecycle Hooks

Lifecycle Hooks คือจุดที่เราสามารถเข้าไปแทรกแซงการทำงานของ Nuxt ในช่วงเวลาต่างๆ ของการทำงานของแอพพลิเคชั่น

App Hooks (runtime)

App Hooks คือ hooks ที่ทำงานในระหว่างที่แอพกำลังทำงาน (runtime) ทั้งฝั่ง server และ client

HookArgumentsEnvironmentคำอธิบาย
app:createdvueAppServer & Clientเรียกเมื่อมีการสร้าง vueApp instance แรกเริ่ม
app:errorerrServer & Clientเรียกเมื่อเกิด fatal error
app:error:clearedServer & Clientเรียกเมื่อเกิด fatal error
app:data:refreshkeys?Server & Client(internal)
vue:setup-Server & Client(internal)
vue:errorerr, target, infoServer & Clientเรียกเมื่อ vue error กระจายไปถึง root component
app:renderedrenderContextServerเรียกเมื่อการ render SSR เสร็จสิ้น
app:redirected-Serverเรียกก่อนการ redirect SSR
app:beforeMountvueAppClientเรียกก่อนการ mount app เฉพาะฝั่ง client
app:mountedvueAppClientเรียกเมื่อ Vue app ถูกเริ่มต้นและ mount ในเบราว์เซอร์
app:suspense:resolveappComponentClientเมื่อ Suspense resolved event
app:manifest:updateClientเรียกเมื่อตรวจพบเวอร์ชันใหม่ของแอพ
link:prefetchtoClientเรียกเมื่อ <NuxtLink> ถูกสังเกตว่าจะมีการ prefetch
page:startpageComponent?Clientเรียกเมื่อ Suspense pending event
page:finishpageComponent?Clientเรียกเมื่อ Suspense resolved event
page:loading:start-Clientเรียกเมื่อ setup() ของหน้าใหม่กำลังทำงาน
page:loading:end-Clientเรียกหลังจาก page:finish
page:transition:finishpageComponent?Clientหลังจาก page transition onAfterLeave event
dev:ssr-logslogsClientเรียกพร้อมอาร์เรย์ของ server-side logs ที่ถูกส่งไปยัง client
page:view-transition:starttransitionClientเรียกหลังจาก document.startViewTransition ถูกเรียก

Nuxt Hooks (build time)

Nuxt Hooks คือ hooks ที่ทำงานในระหว่างการ build แอพพลิเคชั่น ใช้สำหรับปรับแต่งกระบวนการ build

HookArgumentsคำอธิบาย
kit:compatibilitycompatibility, issuesอนุญาตให้ขยายการตรวจสอบความเข้ากันได้
readynuxtเรียกหลังจากการเริ่มต้น Nuxt เมื่อ Nuxt instance พร้อมทำงาน
closenuxtเรียกเมื่อ Nuxt instance กำลังปิดตัวลงอย่างสมบูรณ์
restartต้องเรียกเพื่อรีสตาร์ท Nuxt instance ปัจจุบัน
modules:before-เรียกระหว่างการเริ่มต้น Nuxt ก่อนติดตั้ง user modules
modules:done-เรียกระหว่างการเริ่มต้น Nuxt หลังติดตั้ง user modules
app:resolveappเรียกหลังจากการ resolve app instance
app:templatesappเรียกระหว่างการสร้าง NuxtApp
app:templatesGeneratedappเรียกหลังจาก templates ถูก compile เข้าสู่ virtual file system
build:before-เรียกก่อน Nuxt bundle builder
build:done-เรียกหลังจาก Nuxt bundle builder เสร็จสมบูรณ์
build:manifestmanifestเรียกระหว่างการสร้าง manifest โดย Vite และ webpack
builder:generateAppoptionsเรียกก่อนการสร้างแอพ
builder:watchevent, pathเรียกในช่วง build time ในโหมด development เมื่อ watcher พบการเปลี่ยนแปลง
pages:extendpagesเรียกหลังจาก page routes ถูกสแกนจาก file system
pages:resolvedpagesเรียกหลังจาก page routes ถูกเพิ่มเติมด้วย metadata ที่สแกนได้
pages:routerOptions{ files: Array<{ path: string, optional?: boolean }> }เรียกเมื่อ resolve router.options files
server:devHandlerhandlerเรียกเมื่อ dev middleware กำลังถูกลงทะเบียน
imports:sourcespresetsเรียกตอนตั้งค่าเพื่อให้ modules ขยาย sources
imports:extendimportsเรียกตอนตั้งค่าเพื่อให้ modules ขยาย imports
imports:contextcontextเรียกเมื่อ unimport context ถูกสร้าง
imports:dirsdirsอนุญาตให้ขยาย import directories
components:dirsdirsเรียกภายใน app:resolve เพื่อขยาย directories
components:extendcomponentsอนุญาตให้ขยาย components ใหม่
nitro:confignitroConfigเรียกก่อนเริ่มต้น Nitro
nitro:initnitroเรียกหลังจาก Nitro ถูกเริ่มต้น
nitro:build:beforenitroเรียกก่อนการสร้าง Nitro instance
nitro:build:public-assetsnitroเรียกหลังจากคัดลอก public assets
prerender:routesctxอนุญาตให้ขยาย routes ที่จะถูก pre-rendered
build:errorerrorเรียกเมื่อเกิดข้อผิดพลาดในช่วง build time
prepare:typesoptionsเรียกก่อน Nuxi เขียนไฟล์การตั้งค่า
listenlistenerServer, listenerเรียกเมื่อ dev server กำลังโหลด
schema:extendschemasอนุญาตให้ขยาย default schemas
schema:resolvedschemaอนุญาตให้ขยาย resolved schema
schema:beforeWriteschemaเรียกก่อนเขียน schema ที่กำหนด
schema:written-เรียกหลังจาก schema ถูกเขียน
vite:extendviteBuildContextอนุญาตให้ขยาย Vite default context
vite:extendConfigviteInlineConfig, envอนุญาตให้ขยาย Vite default config
vite:configResolvedviteInlineConfig, envอนุญาตให้อ่าน resolved Vite config
vite:serverCreatedviteServer, envเรียกเมื่อ Vite server ถูกสร้าง
vite:compiled-เรียกหลังจาก Vite server ถูก compile
webpack:configwebpackConfigsเรียกก่อนการตั้งค่า webpack compiler
webpack:configResolvedwebpackConfigsอนุญาตให้อ่าน resolved webpack config
webpack:compileoptionsเรียกก่อนการ compilation
webpack:compiledoptionsเรียกหลังจากโหลด resources
webpack:changeshortPathเรียกเมื่อมีการเปลี่ยนแปลงบน WebpackBar
webpack:error-เรียกเมื่อเสร็จสิ้นถ้ามีข้อผิดพลาดบน WebpackBar
webpack:done-เรียกเมื่อ allDone บน WebpackBar
webpack:progressstatesArrayเรียกเมื่อมีความคืบหน้าบน WebpackBar

Nitro App Hooks (runtime, server-side)

Nitro App Hooks คือ hooks ที่ทำงานในระหว่าง runtime บนฝั่ง server โดยเฉพาะ ใช้จัดการกับการทำงานของ Nitro server

HookArgumentsคำอธิบาย
dev:ssr-logsเรียกเมื่อสิ้นสุด request cycle พร้อม logs array
render:responseresponse,เรียกก่อนส่ง response
render:htmlhtml,เรียกก่อนสร้าง HTML
render:islandislandResponse,เรียกก่อนสร้าง island HTML
close-เรียกเมื่อ Nitro ถูกปิด
errorerror,เรียกเมื่อเกิดข้อผิดพลาด
requesteventเรียกเมื่อได้รับ request
beforeResponseevent,เรียกก่อนส่ง response
afterResponseevent,เรียกหลังส่ง response

Import meta

Import meta เป็นวิธีการเข้าถึง metadata และค่าต่างๆ ของ module ในระหว่างการทำงานของแอพพลิเคชั่น

Runtime (App) Properties

Properties ที่สามารถใช้ได้ในระหว่าง runtime เพื่อตรวจสอบสภาพแวดล้อมการทำงานของแอพ

PropertyTypeคำอธิบาย
import.meta.clientbooleanเป็นจริงเมื่อทำงานบนฝั่ง client
import.meta.browserbooleanเป็นจริงเมื่อทำงานบนฝั่ง client
import.meta.serverbooleanเป็นจริงเมื่อทำงานบนฝั่ง server
import.meta.nitrobooleanเป็นจริงเมื่อทำงานบนฝั่ง server
import.meta.devbooleanเป็นจริงเมื่อรัน Nuxt dev server
import.meta.testbooleanเป็นจริงเมื่อรันใน test context
import.meta.prerenderbooleanเป็นจริงเมื่อ render HTML บน server ในขั้นตอน prerender ของการ build

Builder Properties

Properties ที่มีให้ใช้ในระหว่างการ build แอพพลิเคชั่น

PropertyTypeคำอธิบาย
import.meta.envobjectเท่ากับ process.env
import.meta.urlstringเส้นทางที่สามารถ resolve ได้สำหรับไฟล์ปัจจุบัน