vue3 开发拓展工具

vue3 开发拓展工具

VueCLI 构建工具
  • 删除 Vue-cli
    npm uninstall vue-cli -g yarn global remove vue-cli
  • 安装 vue-cli
    最新版:npm install -g @vue/cli
    固定版: npm install -g @vue/cli@4.5.9
    创建项目:vue create demo(项目名称)
    启动项目: npm run serve
    安装项目依赖: npm install
Vue-Router 路由

作用:根据 URL 的不同,展示不同的内容
<router-link to="/">Home</router-link> 模板中使用的路由跳转标签
<router-view/>标签, 负责展示当前路由对应的组件内容
异步加载路由:component:( ) => import('../xxxx')

VueX 语法

作用: Vuex 数据管理框架,VueX 创建了一个全局唯一的仓库,用来存放全局的数据。

  • 声明数据:state:{name:'test'}
  • 获取数据:computed:{myName(){return this.$store.state.name;}}
  • 修改数据
    • 步骤 1. dispatch 方法,派发 action,名字叫做 change:this.$store.dispatch('change')
    • 步骤 2.感知到 change,这个 action,执行 store 中 actions 下面的 change 方法
      编写/store/index.js 下 actions: change(){console.log('test.com')}
      VueX 的 store 自动感知到你派发出了一个叫做 change 的 action,并执行 action 方法
    • 步骤 3.commit 提交一个叫做 change 的数据改变
      在/store/index 下 actions 里编写:change( ){this.commit('change')}
    • 步骤 4:mutation 感知到提交的 change 改变,执行 change 方法
      在/store/index 下 muations 里编写:change(){console.log('mutation')}
    • 步骤 5:在 Mutation 里修改数据
      在/store/index 下 muations 里编写:change(){this.state.name="help"}
      PS:在 mutation 里面只允许写同步代码,不允许写异步代码。如果要写异步操作,可以在 actions 里进行。
Pinia
  • Pinia 和 Vuex 的区别
    与 Vuex 相比,Pinia 提供了一个更简单的 API,具有更少的仪式,提供了 Composition-API 风格的 API。
    Pinia 与 TypeScript 一起使用时具有可靠的类型推断支持
使用 Pinia
  • 安装 Pinia
    yarn add pinia
    npm install pinia
  • 创建 pinia 文件
    import { createPinia } from 'pinia'
    const pinia = createPinia()
    export default pinia
    
  • main.js 导入并引用
import { createApp } from 'vue'
import App from './App.vue'
import pinia from './stores'
createApp(App).use(pinia).mount('#app')
  • pinia 的状态管理
//定义关于counter的store
import { defineStore } from ‘pinia’
//defineStore 是返回一个函数 函数命名最好有use前缀,根据函数来进行下一步操作
const useCounter = defineStore('counter',{
	state: () => {
		count:99
	}
})
export default useCounter

  • 调用 pinia,获取 pinia 状态
<template>
  <div class="home">
    <h2>Home View</h2>
    <h2>count: {{ counterStore.count }}</h2>
  </div>
</template>

<script setup>
  import useCounter from '@/stores/counter';

  const counterStore = useCounter()

</script>
<style scoped>
</style>

pinia 解构出来的 state 也是可以调用,但会失去响应式,需要 toRef 或者 pinia 自带 storeToRefs

操作 State

默认情况下,可以通过 store 实例访问状态来直接读取和写入状态

const counterStore = useCounter()

counterStore.counter++
counterStore.name = 'coderWhy'

可以调用 store 上的$reset()方法将状态重置到其初始值

const counterStore = useCounter()
conterStore.$reset()

除了直接用 store.counter++修改 store,还可以调用$patch

const counterStore = useCounter()

counterStore.$patch({
	counter:100,
	name:'kobe'
})

可以通过将其$state 属性设置为新对象替换 Store 的整个状态

conterStore.$state = {
counter:1,
name:'why'
}

Getters 相当于 Store 的计算属性:

它们可用 defineStore()中的 getters 属性定义
getters 中可以定义接受一个 state 作为参数的函数

expoer const useCounter = defineStore('counter',{
	state: () => {
		counter:100,
		firstname:'kobe'
	},
	getters:{
		doubleCounter(state){
			return state.counter *2
		}
	}
})

访问 Store 里 getters 方法

expoer const useCounter = defineStore('counter',{
	state: () => {
		counter:100,
		firstname:'kobe'
	},
	getters:{
		doubleCounter(state){
			return state.counter *2
		}
		doubleCounterAdd(){
			//this指向store
			return this.doubleCounter +1
		}
	}
})

Actions 相当于组件中的 methods,可以使用 defineStore()中的 actions 属性定义

expoer const useCounter = defineStore('counter',{
	state: () => {
		counter:100,
		firstname:'kobe'
	},
	getters:{
	//调用其它Store
		doubleCounter(state){
			return function (is) {
				return state.id + id
			}
		}
	},
	actions:{
		increment(){
			this.counter++
		},
		//传参
		incrementnum(num){
			this。counter += num
		}
	}
})

和 getters 一样,在 action 中可以通过 this 访问整个 store 实例:

function increment(){
	//调用
	counterStore.increment()
}
function incrementnum(){
	counterStore.increment(10)
}

Actions 中是支持异步操作的,并且我们可以编写异步函数,在函数中使用 await

actions:{
	async fetchHome(){
		//???请求
		const res = await fetch('?????')
		const data = await res.json()
		console.log('data',data)
		return data
	}
}

cosnt counterStore = useCounter
counterStore.fetchHome().then(res => {
	console.log(res)
})

Vetur

VSCode 中的代码提示工具

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

叶落风尘

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值