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;
相关推荐
暮冬十七14 小时前
[特殊字符] Vue3 项目最佳实践:组件命名、目录结构与类型规范指南
前端·前端架构·vue3项目搭建
F_Director15 小时前
简说Vue3 computed原理
前端·vue.js·面试
行走的陀螺仪15 小时前
Flutter 开发环境配置教程
android·前端·flutter·ios
焦糖小布丁15 小时前
代码签名证书如何有效消除Windows系统警告?
前端
icebreaker15 小时前
重新思考 weapp-tailwindcss 的未来
前端·javascript·css
焦糖小布丁15 小时前
为什么IP地址SSL证书比域名证书更贵?
前端
光影少年15 小时前
WEBNN是什么,对前端工程带来哪些优势
前端·web3·web
djk888815 小时前
极简后台框架
前端·css·css3
LilySesy15 小时前
ABAP+如果在join的时候需要表1的字段某几位等于表2的字段的某几位,需要怎么做?
服务器·前端·数据库·sap·abap·alv
涤生啊16 小时前
一键搭建 Coze 智能体对话页面:支持流式输出 + 图片直显,开发效率拉满!
javascript·html5