[TOC]
# Vite + Vue3 + Composition API + Pinia
1. 熟悉 Vue3 的 Composition API 语法。Vue3 支持 Composition API 方式编写组件,这比 Vue2 的选项式 API 语法更加灵活和模块化。
2. 掌握 Vue Router 4。Vue Router 也已发布 4.0 版本,与 Vue3 深度集成。
3. 熟悉 Pinia。Pinia 是 Vuex 5 的替代方案,也与 Vue3 深度集成。
4. 掌握 Vite。Vite 是一个``新兴的前端构建工具``,能够显著提高开发环境下的启动速度。Vue CLI 已集成 Vite,可以快速启动 `Vue3 + Vite` 项目。
5. 了解 Vue Script Setup。这是在 .vue 文件中使用 Composition API 的简写语法。
具备以上条件,我们可以通过 Vue CLI 快速创建一个 Vue3 项目:
```
bash
npm install -g @vue/cli // 安装最新版 Vue CLI
vue create my-app // 创建项目
cd my-app
vue add vite // 添加 Vite 构建支持
vue add pinia // 添加 Pinia 状态管理
```
这样创建出来的项目结构主要如下:
```
├── package.json
├── pnpm-lock.yml
├── public/index.html
├── src/
│ ├── assets/
│ ├── compsition-api/ // Composition API 相关代码
│ ├── pinia/ // Pinia 状态管理
│ ├── router/ // Vue Router
│ ├── views/
│ ├── App.vue
│ └── main.js
├── .eslintrc.js
└── vite.config.js // Vite 配置
```
在 views 目录下编写视图,在 src/composables 目录下可以编写 Composition API 函数组合,src/pinia 中编写 Pinia Store。
使用 Vue Script Setup 语法,我们可以非常简洁地编写 Vue3 组件,如:
```
vue
<template>
<div />
</template>
<script setup>
import { ref } from 'vue'
const count = ref(0)
</script>
```
熟练使用 Vite + Vue3 + Composition API + Pinia 等技术栈,我们可以极速开发 Vue3 应用程序。如果您遇到任何疑问,欢迎提出,我很乐意提供详细说明和指导。
# 示例
~~~
vue
<script setup>
// 使用 <script setup> 语法开启 Composition API
import { ref } from 'vue'
// 从 vue 导入 ref
import { useCounterStore } from '@/stores/counter'
// 导入 Pinia 的 counter store
const count = ref(0)
// 创建一个响应式的 count 数据 ref
const doubleCount = computed(() => count.value * 2)
// 使用 computed 派生一个双倍的计算属性
const counter = useCounterStore()
// 获得 counter store,用于 dispatch action
watch(count, (newVal) => {
// 观察 count,当其改变时进行副作用操作
counter.commit('setCount', newVal)
})
function increment() {
// 定义一个 increment 方法以增加 count
count.value++
}
</script>
<template>
// 模板中使用 Composition API 定义的响应式数据和方法
<p>{{ count }}</p>
<p>{{ doubleCount }}</p>
<button @click="increment">Increment</button>
</template>
~~~
~~~
js
// 在 src/stores/counter.js 中定义 counter store
import { defineStore } from 'pinia'
export const useCounterStore = defineStore({
state: () => {
count: 0
},
actions: {
increment() {
this.count++
}
},
mutations: {
setCount(state, newCount) {
state.count = newCount
}
}
})
~~~
~~~
js
// 在 src/main.js 中安装并使用 Pinia
import { createApp } from 'vue'
import { createPinia } from 'pinia'
const app = createApp({ /* ... */ })
const pinia = createPinia()
app.use(pinia)
~~~
在这个示例中:
\- 使用‘`<script setup>`' 和 `Composition API` 定义组件逻辑
\- 从 Pinia 创建一个 `counter store` 来管理状态
\- 在组件中使用 `ref` 和 `computed` 创建响应式数据
\- 监听数据变化并触发 `store mutation` 的变化
\- 定义方法来分发 `store action`
\- 在模板中使用 `Composition API` 定义的响应式数据和方法
- 系统设计
- 需求分析
- 概要设计
- 详细设计
- 逻辑模型设计
- 物理模型设计
- 产品设计
- 数据驱动产品设计
- 首页
- 逻辑理解
- 微服务架构的关系数据库优化
- Java基础架构
- 编程范式
- 面向对象编程【模拟现实】
- 泛型编程【参数化】
- 函数式编程
- 响应式编程【异步流】
- 并发编程【多线程】
- 面向切面编程【代码复用解耦】
- 声明式编程【注解和配置】
- 函数响应式编程
- 语法基础
- 包、接口、类、对象和切面案例代码
- Springboot按以下步骤面向切面设计程序
- 关键词
- 内部类、匿名类
- 数组、字符串、I/O
- 常用API
- 并发包
- XML
- Maven 包管理
- Pom.xml
- 技术框架
- SpringBoot
- 项目文件目录
- Vue
- Vue项目文件目录
- 远程组件
- 敏捷开发前端应用
- Pinia Store
- Vite
- Composition API
- uniapp
- 本地方法JNI
- 脚本机制
- 编译器API
- 注释
- 源码级注释
- Javadoc
- 安全
- Swing和图形化编程
- 国际化
- 精实或精益
- 精实软件数据库设计
- 精实的原理与方法
- 项目
- 零售软件
- 扩展
- 1001_docker 示例
- 1002_Docker 常用命令
- 1003_微服务
- 1004_微服务数据模型范式
- 1005_数据模型
- 1006_springCloud
- AI 流程图生成
- Wordpress_6
- Woocommerce_7
- WooCommerce常用的API和帮助函数
- WooCommerce的钩子和过滤器
- REST API
- 数据库API
- 模板系统
- 数据模型
- 1.Woo主题开发流程
- Filter
- Hook
- 可视编辑区域的函数工具
- 渲染字段函数
- 类库和框架
- TDD 通过测试来驱动开发
- 编程范式对WordPress开发
- WordPress和WooCommerce的核心代码类库组成
- 数据库修改
- 1.WP主题开发流程与时间规划
- moho
- Note 1
- 基础命令