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.**整体路由设计

相关推荐
Amumu121381 小时前
CSS:字体属性
前端·css
凯里欧文4272 小时前
html与CSS伪类技巧
前端
UIUV2 小时前
构建Git AI提交助手:从零到全栈实现的学习笔记
前端·后端·typescript
wuhen_n2 小时前
JavaScript 防抖与节流进阶:从原理到实战
前端·javascript
百慕大三角2 小时前
AI Agent开发之向量检索:一篇讲清「稀疏 + 稠密 + Hybrid Search」怎么落地
前端·agent·ai编程
打瞌睡的朱尤2 小时前
Vue day11商品详细页,加入购物车,购物车
前端·javascript·vue.js
温言winslow2 小时前
Elpis NPM 包抽离过程
前端
用户600071819102 小时前
【翻译】Rolldown工作原理:模块加载、依赖图与优化机制全揭秘
前端
SuperEugene2 小时前
《对象与解构赋值:接口数据解包的 10 个常见写法》
前端·javascript