第 2 章:配置项目基本依赖
1. Vant 配置
1.1 安装依赖
Vant 是一套轻量、可靠的移动端 Vue 组件库,我们将使用它来构建聊天界面。
添加 Vant 的 Nuxt 模块:
pnpm add @vant/nuxt
添加到项目配置 nuxt.config.ts
:
export default defineNuxtConfig({
modules: [
'@vant/nuxt',
],
})
这个模块自动配置了 Vant 的按需引入,无需编写其他配置或编写额外的 import
语句来导入模块。
由于 Vant 是针对移动端定制的,有时我们需要让它兼容桌面端。编写 app/app.vue
:
<script setup lang="ts">
import '@vant/touch-emulator'
</script>
<template>
<div class="h-screen w-full overflow-hidden">
<NuxtRouteAnnouncer />
<NuxtLoadingIndicator />
<van-config-provider>
<NuxtLayout>
<NuxtPage
:page-key="(route) => route.fullPath"
:keepalive="{ max: 10 }"
/>
</NuxtLayout>
</van-config-provider>
</div>
</template>
Vant 还提供了一些钩子函数,可以先安装以便稍后使用:
pnpm add @vant/use
1.2 样式配置
我们阻止页面由用户缩放,并支持页面过渡动画,配置 nuxt.config.ts
:
export default defineNuxtConfig({
app: {
head: {
charset: 'utf-8',
viewport: 'width=device-width, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0, viewport-fit=cover, user-scalable=0',
},
layoutTransition: { mode: 'out-in', name: 'layout' },
pageTransition: { mode: 'out-in', name: 'page' },
},
ssr: false,
})
此外,我们还禁止了 SSR,因为我们希望这些页面是仅客户端的。
2. 常见工具
2.1 Pinia 状态管理
安装 Pinia 相关依赖,我们将使用它来管理应用的状态:
pnpm add pinia @pinia/nuxt
添加到项目配置 nuxt.config.ts
:
export default defineNuxtConfig({
modules: [
'@pinia/nuxt',
],
})
2.2 辅助工具
我们安装常见的工具库,以便稍后使用:
pnpm add @nuxt/icon @nuxtjs/color-mode @vueuse/core @vueuse/integrations @vueuse/nuxt
@nuxt/icon
是 Nuxt 官方提供的图标库,可使用数十万个图标。@nuxtjs/color-mode
是 Nuxt 社区提供的颜色模式插件,可支持适配各种主题。@vueuse/*
是 VueUse 提供的组合式工具库,用于扩展 Vue 3 的功能。
添加到项目配置 nuxt.config.ts
:
export default defineNuxtConfig({
modules: [
'@nuxt/icon',
'@nuxtjs/color-mode',
'@vueuse/nuxt',
],
colorMode: {
preference: 'system',
dataValue: 'theme',
classSuffix: '',
},
})
2.3 国际化
我们使用 Nuxt i18n 来实现国际化:
pnpm add @nuxtjs/i18n
添加国际化配置:
export default defineNuxtConfig({
modules: [
'@nuxtjs/i18n',
],
i18n: {
defaultLocale: 'zh-CN',
detectBrowserLanguage: {
cookieKey: 'i18n_redirected',
redirectOn: 'root',
useCookie: true,
},
locales: [
{
code: 'en-US',
language: 'en-US',
name: 'English',
file: 'en-US.yaml',
},
{
code: 'zh-CN',
language: 'zh-CN',
name: '简体中文',
file: 'zh-CN.yaml',
},
],
lazy: true,
langDir: 'app/assets/i18n/',
restructureDir: '.',
strategy: 'no_prefix',
},
})
我们首先支持两种语言,英文和简体中文。语言文件存放在 app/assets/i18n/
目录下,文件名分别为 en-US.yaml
和 zh-CN.yaml
。所以需要创建这两个文件。
2.4 其他工具
安装其他常见的工具库:
pnpm add dayjs dayjs-nuxt es-toolkit zod
Day.js 是一个轻量的日期处理库,我们将使用它来处理日期时间。dayjs-nuxt
是 Day.js 的 Nuxt 插件,用于在 Nuxt 中使用 Day.js。es-toolkit
是一个工具库,提供了一些常用的工具函数,可代替 lodash
。zod
是一个 TypeScript-first 的验证库,用于验证数据。
添加到项目配置 nuxt.config.ts
:
export default defineNuxtConfig({
modules: [
'dayjs-nuxt',
],
})