首页 > 其他分享 >Vite 与 Pinia 的实战应用

Vite 与 Pinia 的实战应用

时间:2025-01-23 13:29:18浏览次数:3  
标签:实战 vue js Vue Pinia import Vite

目录

Vue 极速入门 第 14 节:Vue 开发工具与生态优化:Vite 与 Pinia 的实战应用

引言

Vue.js 是一款高效的前端框架,但随着应用规模的扩大,开发工具和状态管理的重要性日益凸显。本文将带你深入探讨 Vue 开发工具与生态优化,结合 Vite 与 Pinia 的实战应用,助你提升开发效率与状态管理能力。


1. 使用 Vite 提升开发体验:快速启动与热更新

1.1 什么是 Vite?

Vite 是一个现代化的前端构建工具,专为 Vue.js 设计,提供快速的启动和热更新功能。
1

1.2 Vite 的安装与配置

vite.config.js

import { defineConfig } from 'vite';
import vue from '@vitejs/plugin-vue';

export default defineConfig({
  plugins: [vue()]
});

main.js

import { createApp } from 'vue';
import App from './App.vue';

createApp(App).mount('#app');
Vite 目录结构
project/
├── src/
│   ├── main.js
│   ├── App.vue
│   └── components/
│       └── HelloWorld.vue
├── vite.config.js
├── index.html
└── package.json

文件解释:

  • vite.config.js:Vite 配置文件。
  • main.js:Vue 应用的入口文件。
  • App.vue:Vue 主组件。

2. 集成 Pinia 状态管理:轻量级替代 Vuex

2.1 什么是 Pinia?

Pinia 是一个轻量级的状态管理库,专为 Vue.js 设计,提供简单易用的 API 和强大的类型支持。
Pina

2.2 Pinia 的安装与配置

store/index.js

import { defineStore } from 'pinia';

export const useCounterStore = defineStore('counter', {
  state: () => ({
    count: 0
  }),
  actions: {
    increment() {
      this.count++;
    }
  }
});

main.js

import { createApp } from 'vue';
import { createPinia } from 'pinia';
import App from './App.vue';

const app = createApp(App);
app.use(createPinia());
app.mount('#app');
Pina 目录结构
project/
├── src/
│   ├── store/
│   │   └── index.js
│   ├── main.js
│   ├── App.vue
│   └── components/
│       └── HelloWorld.vue
├── vite.config.js
├── index.html
└── package.json

文件解释:

  • store/index.js:Pinia 状态管理文件。
  • main.js:Vue 应用的入口文件,集成 Pinia。

3. 实战案例:设计一个计数器应用

3.1 需求分析

我们需要设计一个计数器应用,包含以下功能:

  • 展示当前计数。
  • 增加计数。

3.2 实现步骤

3.2.1 使用 Vite 创建项目

具体过程请移步:Vue 环境搭建到第一个应用#2.2

npm create vite@latest my-vue-app --template vue
cd my-vue-app
npm install
npm run dev
3.2.2 集成 Pinia

在创建好的项目 my-vue-app 终端所在路径输入如下命令:

npm install pinia

install

3.2.3 创建计数器组件

components/Counter.vue

<template>
  <div>
    <p>当前计数:{{ count }}</p>
    <button @click="increment">增加</button>
  </div>
</template>

<script>
import { useCounterStore } from '../store';
import { mapState, mapActions } from 'pinia';

export default {
  computed: {
    ...mapState(useCounterStore, ['count'])
  },
  methods: {
    ...mapActions(useCounterStore, ['increment'])
  }
};
</script>

App.vue

<template>
  <div id="app">
    <Counter />
  </div>
</template>

<script>
import Counter from './components/Counter.vue';

export default {
  components: {
    Counter
  }
};
</script>

main.js

import { createApp } from 'vue'
import './style.css'
import App from './App.vue'
import { createPinia } from 'pinia';

const app = createApp(App)
app.use(createPinia());
app.mount('#app')

store/index.js

import { defineStore } from 'pinia';

export const useCounterStore = defineStore('counter', {
  state: () => ({
    count: 0
  }),
  actions: {
    increment() {
      this.count++;
    }
  }
});
目录结构
project/
├── src/
│   ├── store/
│   │   └── index.js
│   ├── components/
│   │   └── Counter.vue
│   ├── main.js
│   ├── App.vue
│   └── components/
│       └── HelloWorld.vue
├── vite.config.js
├── index.html
└── package.json

文件解释:

  • Counter.vue:计数器组件。
  • App.vue:主组件,使用 Counter 组件。

测试结果:

  • 计数器应正确渲染。
  • 点击按钮后,计数应增加。
    运行结果

4. 总结

通过本文的学习,你应该已经掌握了 Vue 开发工具与生态优化的核心技巧,包括使用 Vite 提升开发体验和集成 Pinia 进行状态管理。这些技巧能够帮助你构建高效、可维护的 Vue 应用。

关键点总结:

  • Vite 提供快速的启动和热更新功能。
  • Pinia 是轻量级的状态管理库,替代 Vuex。
  • 实战案例展示了如何设计一个计数器应用。

5. 进一步学习

如果你对 Vue 开发工具与生态优化感兴趣,可以参考以下资源:


6. 互动与分享

欢迎在评论区分享你的学习心得或提出问题,我将尽快回复。你也可以通过以下链接分享本文:


上一篇:Vue 组件设计最佳实践:从单一职责到通信优化
下一篇:Vuex 状态管理:从基础到高级应用

标签:实战,vue,js,Vue,Pinia,import,Vite
From: https://blog.csdn.net/2503_90093283/article/details/145309946

相关文章

  • 混元API的加密机制与原生集成实战
    今天,我们将重点讨论在对接混元大模型时需要特别关注的几个要点。首先,最为关键的一点是,混元大模型的加密方式相比于其他大模型更为复杂和严密。在对接过程中,我们通常避免使用混元官方提供的SDK进行集成,主要是因为官方SDK的应用场景存在一定的限制。若能实现原生对接,将能够提供更加......
  • RealtimeGI 实战篇(下)|ReSTIR 时空重采样降噪管线
    【USparkle专栏】如果你深怀绝技,爱“搞点研究”,乐于分享也博采众长,我们期待你的加入,让智慧的火花碰撞交织,让知识的传递生生不息!承上启下在上一篇文章中,我们从0到1实现了一套完整的软件光追管线。我们使用稀疏的体素来存储场景的Material信息和Radiance,体素的颜色并不直接运用......
  • 利用进化计算改进深度学习模型初始权重分布:基于多目标优化的实战分析
    深度学习模型的性能往往受到初始权重分布的显著影响。然而,传统随机初始化方法可能无法充分捕捉数据分布的多样性,从而影响训练收敛速度和最终性能。为了解决这一问题,本文探讨了利用进化计算方法优化深度学习模型初始权重分布的可行性,并结合多目标优化策略进行了实战分析。进化计算......
  • vue3+ts+vite适配低版本浏览器白屏
    前言vite需要引入多个包来适配低版本浏览器,如果只是用网上常规的@vitejs/plugin-legacy来配置还是会出现部分android9的出现白屏问题 第一步package.json引入 "core-js":"^3.39.0","regenerator-runtime":"^0.14.1","@vitejs/plugin-legacy":"^5.4.2&qu......
  • python实战(十五)——中文手写体数字图像CNN分类
    一、任务背景    本次python实战,我们使用来自Kaggle的数据集《ChineseMNIST》进行CNN分类建模,不同于经典的MNIST数据集,我们这次使用的数据集是汉字手写体数字。除了常规的汉字“零”到“九”之外还多了“十”、“百”、“千”、“万”、“亿”,共15种汉字数字。二、......
  • uni-app+egg.js实战直播app全栈开发
    uni-app实战直播app全栈开发1.课程介绍(买前必看).mp42h-9-4h18-uni-app+egg.js实战直播app全栈开发·node.js直播服务器搭建socket.io实时送礼物、实时弹幕功能·全栈开发兼容Android、ioS、小程序等9.登录注册页开发1.项目介绍10.个人中心页开发2.环境搭建和项目创建11.eg......
  • 【Docker项目实战】使用Docker部署LinkWarden书签服务
    【Docker项目实战】使用Docker部署LinkWarden书签服务一、LinkWarden介绍1.1LinkWarden简介1.2主要特点1.3主要使用场景二、本次实践规划2.1本地环境规划2.2本次实践介绍三、本地环境检查3.1检查Docker服务状态3.2检查Docker版本3.3检查doc......
  • 交叉注意力机制在YOLO目标检测优化中的应用:结合余弦退火学习率调度的实战解析
    在目标检测领域,YOLO(YouOnlyLookOnce)因其高效性和准确性而被广泛采用。然而,随着任务复杂性的提升,如何优化YOLO算法以实现更高的性能成为研究热点。本文探讨了交叉注意力机制与余弦退火学习率调度在YOLO优化中的结合,提供了一种高效的实战方案。一、什么是交叉注意力机制?交......
  • 「全网最细 + 实战源码案例」设计模式——简单工厂模式
    ​核心思想简单工厂模式是一种创建者模式,它通过一个工厂类负责创建不同类型的对象,根据传入的参数决定实例化的具体类,也被称为“静态工厂方法”模式,因为工厂方法通常是静态的。结构1.工厂类:提供一个静态方法,根据不同条件创建并返回具体的产品对象。2.产品接口(抽象类)......
  • 「全网最细 + 实战源码案例」设计模式——工厂方法模式
    核心思想简单工厂模式是一种创建者模式,它通过一个工厂类负责创建不同类型的对象,根据传入的参数决定实例化的具体类,也被称为“静态工厂方法”模式,因为工厂方法通常是静态的。结构1.工厂类:提供一个静态方法,根据不同条件创建并返回具体的产品对象。2.产品接口(抽象类)定......