Vue学习笔记(Snippets、Pinia)

news/2024/10/14 21:15:47 标签: vue.js, 前端, javascript

一、Vue3好用的VSCode插件

Vue VSCode Snippets

作用:在vue3文件中输出v3,选择模板后,可生成模板代码

自定义模板的方法:

 

 

打开vue.json,修改模板

 

 

二、Pinia

1.简介

Pinia是一个轻量级的状态管理库

 Pinia官网

       Pinia | The intuitive store for Vue.js

状态管理库是用于管理应用程序全局状态的工具

以登录为例:

使用Pinia创建一个userStore来集中管理用户的登录状态和过期时间

当用户登录成功时:

设置userStore中用户的登录状态为已登录,并设置过期时间

当用户退出登录时:

修改userStore中用户的登录状态为未登录,并删除过期时间

Pinia 和 组件通信 的区别

虽然Vue提供的父传子、子传父以及跨组件通信也可以用于状态共享,

但在大型项目中,随着组件数量的增加,会导致以下问题:

1.组件之间传递大量的props,会使项目变得非常繁琐和难以维护

2.非父子组件间过度依赖provide/inject,使状态散落在各个组件之间

2.安装 Pinia 以及定义和使用 Store

 

在main里面加入

import { createApp } from 'vue'

//导入Pinia的createPinia方法,用于创建Pinia实例(状态管理库)
import { createPinia } from 'pinia'

import App from './App.vue'

//创建一个Pinia实例,用于在应用中集中管理状态(store)
const pinia = createPinia()

//createApp(App).mount('#app')
const app = createApp(App)
app.use(pinia) //将Pinia实例注册到Vue应用中
app.mount('#app')

在src目录下,新建stores文件夹,再新建web.js文件

import { reactive, ref } from 'vue'
import { defineStore } from 'pinia'

/*
  定义一个基于 Pinia 的 Store
  第1个参数 web 是 useWebStore 在应用中的唯一标识符(ID)
  第2个参数是 Setup函数 或 Option对象
*/
export const useWebStore = defineStore('web', () => {
  //定义一个响应式对象,存储网站信息
  const web = reactive({
    title: "编程",
    url: "ruicode.com"
  })

  //定义一个响应式引用,存储用户数
  const users = ref(1000)
  
  //定义方法
  const userAdd = () => {
    users.value++
  }

  return {
    web,
    users,
    userAdd
  }
})

再修改App.vue

<script setup>
    import { useWebStore } from './stores/web.js'

    const webStore = useWebStore()
    
    console.log("webStore.web:",webStore.web)
    console.log("webStore.users:",webStore.users)
</script>

<template>
    {{ webStore.web.url }}

    {{ webStore.users }}

    <button @click="webStore.userAdd" >添加用户</button>
</template>

<style scoped>

</style>

3.Pinia 持久化存储插件 

1.安装插件

 2.修改mian.js

从 pinia-plugin-persistedstate 模块中导入 piniaPluginPersistedstate

将插件添加到 pinia 实例上

import { createApp } from 'vue'

//导入Pinia的createPinia方法,用于创建Pinia实例(状态管理库)
import { createPinia } from 'pinia'

//从 pinia-plugin-persistedstate 模块中导入 piniaPluginPersistedstate
import piniaPluginPersistedstate from 'pinia-plugin-persistedstate'

import App from './App.vue'

//创建一个Pinia实例,用于在应用中集中管理状态(store)
const pinia = createPinia()

//将插件添加到 pinia 实例上
pinia.use(piniaPluginPersistedstate)

//createApp(App).mount('#app')
const app = createApp(App)
app.use(pinia) //将Pinia实例注册到Vue应用中
app.mount('#app')

在web.js的Store中添加

{
  //持久化存储到 localStorage 中
  persist: true
})

 

 

 

 

 

 

 

 


http://www.niftyadmin.cn/n/5705115.html

相关文章

大模型时代,云原生数据底座的创新和实践

本文整理自百度云智峰会 2024 —— 云原生论坛的同名演讲。 大模型毫无疑问是当前技术发展的热点&#xff0c;成为大家默认的提升生产力工具。 但是&#xff0c;大模型训练主要使用互联网上的公开数据为主&#xff0c;没有企业内部的数据&#xff0c;所以大模型本质上自带的都…

单片机教案 1.2 ATmega2560单片机和Arduino IDE编程基础

第一章 迈进单片机的大门 1.1 ATmega2560单片机概述 单片机教案 1.1 ATmega2560单片机概述-CSDN博客 1.2 ATmega2560单片机和Arduino IDE编程基础 ATmega2560单片机 ATmega2560是一款高性能、低功耗的8位AVR微控制器&#xff0c;具有丰富的外设和功能。以下是关于ATmega25…

C语言笔记 12

逻辑类型 bool&#xff1a;在“#include <stdbool.h>”之后就可以使用bool和true、false 并没有真正的bool量的类型 逻辑运算 逻辑运算是对逻辑量进行的运算&#xff0c;结果只有0或1逻辑量是关系运算或逻辑运算的结果 运算符描述示例结果!逻辑非!a如果a是true结果就是…

Mac 窗口切换技巧:大幅提高效率的必备指南

在日常使用 Mac 电脑的过程中&#xff0c;高效地切换窗口可以极大地提升工作效率。无论是在多个文档之间快速切换&#xff0c;还是在不同的应用程序之间自如跳转&#xff0c;掌握一些实用的窗口切换技巧能让你的操作如鱼得水。下面就为大家详细介绍一些 Mac 窗口切换的技巧。 …

AtCoder Beginner Contest 374 A-E

本期封面 画师Li Flag AtCoder Beginner Contest 374 A - Takahashi san 2 题意 字符串是否已san结尾 代码 #include <bits/stdc.h> #define mod 998244353 using namespace std; typedef long long ll; typedef double db; typedef pair<int,int> pii; typed…

pytorh学习笔记——波士顿房价预测

机器学习的“hello world”&#xff1a;波士顿房价预测 波士顿房价预测的背景不用提了&#xff0c;简单了解一下数据集的结构。 波士顿房价的数据集&#xff0c;共有506组数据&#xff0c;每组数据共14项&#xff0c;前13项是影响房价的各种因素&#xff0c;比如&…

架构设计笔记-13-层次式架构设计理论与实践

目录 知识要点 综合知识 案例分析 1.SSM框架 2.MVC模式&#xff0c;XML 3.MVC架构脆弱性 4.容器技术的优势 5.对象关系映射ORM技术 知识要点 一般来说&#xff0c;架构可以分为表现层、中间层和持久层三个层次。 表现层&#xff1a;表现层主要负责接收用户的请求&…