Skip to content

其他

setResponseStatus

设置 HTTP 响应状态码(仅服务端可用)。

ts
function setResponseStatus(
  event: H3Event,        // 请求事件
  statusCode: number,    // 状态码
  statusMessage?: string // 状态消息
): void
ts
// server/api/created.ts
export default defineEventHandler((event) => {
  setResponseStatus(event, 201)
  return { created: true }
})

// 带状态消息
export default defineEventHandler((event) => {
  setResponseStatus(event, 429, 'Too Many Requests')
  return { error: '请求过于频繁' }
})

常用状态码

状态码含义典型场景
200成功GET 请求返回数据
201已创建POST 创建资源成功
204无内容DELETE 成功
301永久重定向URL 变更
302临时重定向临时跳转
400请求错误参数验证失败
401未认证缺少登录凭证
403禁止访问权限不足
404未找到资源不存在
429请求过多速率限制

TIP

在 API 路由中使用 throw createError({ statusCode }) 也可以设置状态码 setResponseStatus 更适合成功响应


setPageLayout

动态设置页面布局,通常在路由中间件中使用。

ts
function setPageLayout(
  layout: string | false  // 布局名称,false 表示无布局
): void
ts
// app/middleware/set-layout.ts
export default defineNuxtRouteMiddleware((to) => {
  const isMobile = useIsMobile()
  setPageLayout(isMobile.value ? 'mobile' : 'default')
})

// 根据路由前缀选择布局
export default defineNuxtRouteMiddleware((to) => {
  if (to.path.startsWith('/admin')) {
    setPageLayout('admin')
  } else if (to.path.startsWith('/embed')) {
    setPageLayout(false) // 无布局
  }
})

INFO

setPageLayout 必须在中间件中调用 在组件的 setup 中调用无效


updateAppConfig

运行时更新应用配置(App Config)。

ts
function updateAppConfig(
  config: DeepPartial<AppConfig>  // 要合并的配置
): void
ts
const appConfig = useAppConfig()

// 更新主题配置
updateAppConfig({
  theme: {
    primaryColor: '#ff0000',
    darkMode: true,
  },
})

// 运行时切换主题
function toggleDark() {
  updateAppConfig({
    theme: { darkMode: !appConfig.theme.darkMode },
  })
}

TIP

updateAppConfig 是浅合并(shallow merge) 不会深度合并嵌套对象


reloadNuxtApp

强制重新加载 Nuxt 应用(刷新页面)。

ts
function reloadNuxtApp(options?: {
  path?: string    // 重新加载后导航到的路径
  force?: boolean  // 强制刷新(绕过缓存)
}): void
ts
// 重新加载当前页面
reloadNuxtApp()

// 重新加载并跳转到新路径
reloadNuxtApp({ path: '/new-page' })

// 强制刷新(绕过浏览器缓存)
reloadNuxtApp({ force: true })

适用场景

场景说明
切换语言后重新加载以应用新的 i18n 配置
更新关键配置Runtime Config 变更后需重新加载
登录状态异常强制刷新清除可能的状态错误
版本更新检测到新版本后强制用户刷新

INFO

reloadNuxtApp 会导致页面完全刷新 所有状态丢失。仅在必要时使用


onPrehydrate

在 Hydration 前执行代码(高级用途),用于处理 SSR 生成的 DOM。

ts
function onPrehydrate(
  callback: () => void  // Hydration 前执行的函数
): void
ts
// 在组件中使用
onPrehydrate(() => {
  // 这段代码会在 Hydration 前执行
  // 可以直接操作 SSR 生成的 DOM
  const el = document.querySelector('.server-rendered')
  if (el) el.classList.add('pre-hydrated')
})

INFO

️ 这是一个低级 API 通常不需要使用。仅在需要修改 SSR 生成的 DOM(如添加动画类名)时使用。代码在客户端 Hydration 之前立即执行

基于 Nuxt 4 官方文档整理编写