Vue 2.11

一、Pinia 快速入门

**1.**什么是Pinia

Pinia 是 Vue 的最新 状态管理工具 ,是 Vuex 的 替代品

(1)提供更加简单的API (去掉了 mutation )

(2)提供符合,组合式风格的API (和 Vue3 新语法统一)

(3)去掉了 modules 的概念,每一个 store 都是一个独立的模块

(4)配合 TypeScript 更加友好,提供可靠的类型推断

**2.**手动添加Pinia到Vue项目

(1)使用 Vite 创建一个空的 Vue3 项目

npm create vue@latest

(2)按照官方文档 安装 pinia 到项目中

**3.**Pinia基础使用 - 计数器案例

(1)定义store

(2)组件使用store

**4.**getters实现

Pinia中的 getters 直接使用 computed函数 进行模拟, 组件中需要使用需要把 getters return出去

**5.**action异步实现

(1)编写方式:异步action函数的写法和组件中获取异步数据的写法完全一致

(2)接口地址:http://geek.itheima.net/v1_0/channels

(3)需求:在Pinia中获取频道列表数据并把数据渲染App组件的模板中

**6.**storeToRefs工具函数

使用storeToRefs函数可以辅助保持数据(state + getter)的响应式解构

**7.**Pinia的调试

Vue官方的 dev-tools 调试工具 对 Pinia直接支持,可以直接进行调试

**8.**Pinia持久化插件

(1)官方文档:https://prazdevs.github.io/pinia-plugin-persistedstate/zh/

(2)安装插件 pinia-plugin-persistedstate

npm i pinia-plugin-persistedstate

(3)main.js 使用

import persist from 'pinia-plugin-persistedstate'

...

app.use(createPinia().use(persist))

(4)store仓库中,persist: true 开启

**9.**总结

二、Vue3 大事件管理系统

**1.**大事件项目介绍 和 创建

(1)Vue3 大事件管理系统

①在线演示:https://fe-bigevent-web.itheima.net/login

②接口文档: https://apifox.com/apidoc/shared-26c67aee-0233-4d23-aab7-08448fdf95ff/api-93850835

③基地址:http://big-event-vue-api-t.itheima.net

(2)pnpm 包管理器 - 创建项目

一些优势:比同类工具快2倍左右、节省磁盘空间... https://www.pnpm.cn/

安装方式:npm install -g pnpm

创建项目:pnpm create vue

(3)创建项目

① 进入项目目录 ② 安装依赖 ③ 启动项目

=>

**2.**Eslint 配置代码风格

配置文件 .eslintrc.cjs

(1)prettier 风格配置 https://prettier.io

① 单引号 ② 不使用分号 ③ 宽度80字符

④ 不加对象|数组最后逗号 ⑤ 换行符号不限制(win mac 不一致)

(2)vue组件名称多单词组成(忽略index.vue)

(3)props解构(关闭)

提示:安装Eslint且配置保存修复,不 要开启默认的自动保存格式化

**3.**配置代码检查工作流

(1)提交前做代码检查

① 初始化 git 仓库,执行 git init 即可

② 初始化 husky 工具配置,执行pnpm dlx husky-init && pnpm install即可

https://typicode.github.io/husky/

③ 修改 .husky/pre-commit 文件

问题:pnpm lint 是全量检查,耗时问题,历史问题

(2)暂存区 eslint 校验

① 安装 lint-staged 包pnpm i lint-staged -D

② package.json 配置 lint-staged 命令

③ .husky/pre-commit 文件修改

=>

(3)总结

**4.**目录调整

**5.**vue-router4 路由代码解析

(1)路由初始化

=>

  1. 创建路由实例由 createRouter 实现

  2. 路由模式

① history 模式使用 createWebHistory()

② hash 模式使用 createWebHashHistory()

③参数是基础路径,默认/

(2)总结

创建一个路由实例,路由模式是history模式,路由的基础地址是 vite.config.js中的 base 配置的值,默认是 / , 环境变量地址:https://cn.vitejs.dev/guide/env-and-mode.html

**6.**引入 Element Plus 组件库

(1)按需引入 Element Plus

① 安装: pnpm add element-plus

② 配置按需导入:

官方文档:https://element-plus.org/zh-CN/guide/quickstart.html

③ 直接使用组件

④ 彩蛋:默认 components 下的文件也会被 自动注册~

**7.**Pinia 构建仓库 和 持久化

**8.**Pinia 仓库统一管理

(1)pinia 独立维护

现在:初始化代码在 main.js 中,仓库代码在 stores 中,代码分散职能不单一

优化:由 stores 统一维护,在 stores/index.js 中完成 pinia 初始化,交付 main.js 使用

(2)仓库 统一导出

现在:使用一个仓库 import { useUserStore } from `./stores/user.js` 不同仓库路径不一致

优化:stores/index.js统一导出,导入路径统一`./stores`,而且仓库维护在stores/modules 中

**9.**数据交互 - 请求工具设计

**10.**整体路由设计

相关推荐
meilindehuzi_a2 小时前
从零理解并实现 RAG:用 LangChain.js 构建语义检索问答系统
开发语言·javascript·langchain
世界哪有真情3 小时前
拿人类意识卡 AI?等于用 bug 验收正式产品
前端·人工智能·后端
鱼樱前端3 小时前
别再自己拼凑了!这款 Vue 3.5+ 严肃产品级组件库,把 AI 对话、工作流和复杂数据全包了!
javascript·vue.js·github
Listen·Rain4 小时前
Vue3:setup详解
前端·javascript·vue.js
Patrick_Wilson5 小时前
修好 bug 只是开始:一次由监控需求反向重构日志结构的复盘
前端·监控·数据可视化
kyriewen5 小时前
面试官让我优化一个卡死的表格,我打开 Claude 五秒重写,他放下咖啡问我要不要来当组长
前端·javascript·面试
小粉粉hhh6 小时前
React(二)——dom、组件间通信、useEffect
前端·javascript·react.js
Csvn6 小时前
🤖 AI 生成前端代码的 5 个典型翻车现场及修复指南
前端
IT_陈寒7 小时前
SpringBoot自动装配坑了我一天,原来问题出在这
前端·人工智能·后端
索西引擎8 小时前
【React】key 属性:协调算法中的元素标识机制与最佳实践
前端·javascript·react.js