Nuxt3+Vue3(Composition API)+TS+Vite+Ant Design Vue 搭建

最近官网搭建选择了nuxtjs,由于框架更新了,其中语法也有很多变化,中间遇到了一些问题点做下总结。

nuxt3官方文档地址:https://nuxt.com/docs/getting-started/installation

安装

在安装Nuxt3之前,你需要保证你的node.js大于16.10.0 或者最新版本,我是用得最新版本18

创建一个nuxt项目

复制代码
npx nuxi init <project-name>

切换到刚创建的项目根目录

复制代码
cd <project-name>

下载相关依赖

复制代码
npm install

Nuxt3 的目录结构

  • assets/: 存放静态资源文件,如样式、图片、字体等。
  • components/: 存放组件文件,可以在页面中引用。
  • layouts/: 存放布局文件,可以在页面中引用。
  • middleware/: 存放中间件文件,可以在路由中使用。
  • composables/: 存放可重用的逻辑代码,可以在页面、组件和插件中使用。
  • pages/: 存放页面文件,每个文件对应一个路由。
  • plugins/: 存放插件文件,可以在应用程序中使用。
  • static/: 存放静态文件,如 robots.txt、favicon.ico 等。
  • store/: 存放 Vuex store 文件。
  • server/: 存放服务器端代码,包括中间件、API、插件等等。
  • utils/: 存放工具函数文件。
  • nuxt.config.ts: Nuxt3 的配置文件,使用 TypeScript 编写。
  • package.json: 项目的依赖和脚本配置文件。
  • tsconfig.json: TypeScript 的配置文件。

引入Ant Design Vue

我使用得是最新版本 4.1.2

https://next.antdv.com/components/overview

安装

复制代码
npm install ant-design-vue@4.x --save

plugins文件夹下创建ant-design-vue.ts文件

js 复制代码
// import { Button,Layout } from'ant-design-vue';//局部功能使用
import Antd from 'ant-design-vue'; //全局使用 
export default defineNuxtPlugin((nuxtApp) => {
    nuxtApp.vueApp.use(Antd);  //全局使用 
    // nuxtApp.vueApp.use(Button).use(Layout)//局部功能使用
});

这样就可以

pinia + pinia-plugin-persistedstate 实现数据持久化存储

pinia: https://pinia.vuejs.org/zh/ssr/nuxt.html

pinia-plugin-persistedstate: https://prazdevs.github.io/pinia-plugin-persistedstate/zh/frameworks/nuxt-3.html

在nuxt.config.ts配置
复制代码
export default defineNuxtConfig({
  modules: ['@pinia/nuxt', '@pinia-plugin-persistedstate/nuxt'],
}) 
创建在根目录下创建stores/user.ts
js 复制代码
import { defineStore } from "pinia"; // 引入pinia
//  stores/user
export const useUserStateStore = defineStore("main", {
  state: () => {
    return {
      token: "",
      isAngelUser: '',
      isVIPUser: '',
      userInfo: ''
    };
  },
  persist: process.client && { // 仅在客户端使用
    storage: localStorage, // localStorage 本地存储,可替换sessionStorage
  },
});
在页面中设置和使用
js 复制代码
import { useUserStateStore } from "~/store/user";

export default defineComponent({
  name: 'echartsEdit',
  components: {
    StarOutlined,
    StarFilled,
    StarTwoTone,
    MessageOutlined
  },
  setup() {
    const store = useUserStateStore(); //定义store
    store.token = '123'; // 设置
    return {
      
    }
  },
})

使用

复制代码
const store = useUserStateStore(); 
var a = store.token;
相关推荐
艳阳天_.1 分钟前
web 分录科目实现辅助账
开发语言·前端·javascript
2601_949868368 分钟前
Flutter for OpenHarmony 剧本杀组队App实战04:发起组队表单实现
开发语言·javascript·flutter
风之舞_yjf9 分钟前
Vue基础(27)_脚手架安装
vue.js
小白640219 分钟前
2025年终总结-迷途漫漫,终有一归
前端·程序人生
烟花落o23 分钟前
贪吃蛇及相关知识点讲解
c语言·前端·游戏开发·贪吃蛇·编程学习
kgduu24 分钟前
js之javascript API
javascript
晚霞的不甘27 分钟前
Flutter for OpenHarmony专注与习惯的完美融合: 打造你的高效生活助手
前端·数据库·经验分享·flutter·前端框架·生活
BYSJMG34 分钟前
计算机毕设选题推荐:基于大数据的癌症数据分析与可视化系统
大数据·vue.js·python·数据挖掘·数据分析·课程设计
kogorou0105-bit38 分钟前
前端设计模式:发布订阅与依赖倒置的解耦之道
前端·设计模式·面试·状态模式
止观止1 小时前
像三元表达式一样写类型?深入理解 TS 条件类型与 `infer` 推断
前端·typescript