当前位置: 首页 > news >正文

网站制作公司哪家正规沈阳市网站建设企业

网站制作公司哪家正规,沈阳市网站建设企业,上海设计公司招聘,怎么做卖东西的网站前言 还在用Vuex? 在Vue应用程序的开发过程中#xff0c;高效且易于维护的状态管理一直是开发者关注的核心问题之一。随着Vue 3的发布#xff0c;状态管理领域迎来了一位新星——Pinia#xff0c;它不仅为Vue 3量身打造#xff0c;同时也向下兼容Vue 2#xff0c;以其简… 前言 还在用Vuex? 在Vue应用程序的开发过程中高效且易于维护的状态管理一直是开发者关注的核心问题之一。随着Vue 3的发布状态管理领域迎来了一位新星——Pinia它不仅为Vue 3量身打造同时也向下兼容Vue 2以其简洁的API设计、强大的功能特性逐渐成为Vue社区中备受推崇的状态管理框架。本文将深入探讨Pinia的魅力所在并阐述为何它是Vue 2/Vue 3应用中更优的选择。 Pinia简介 Pinia是由Vue.js的核心维护者之一尤雨溪参与设计的下一代状态管理库旨在提供一种更直观、更灵活的方式来管理Vue应用的状态。不同于传统的VuexPinia从底层开始构建充分利用Vue 3的新特性特别是Composition API使得状态管理变得更加自然和高效。 官网地址Pinia | The intuitive store for Vue.js Pinia凭借其现代化的设计理念、与Vue 3的深度融合、以及对Vue 2的良好兼容性成为了Vue应用状态管理的新标准。无论你是Vue 2的忠实用户还是Vue 3的探索者Pinia都值得作为首选状态管理框架纳入你的开发工具箱。它不仅能够简化状态管理的复杂度提升开发效率还能在未来Vue生态的发展中为你提供坚实的支持。 为什么选择Pinia 1. 简洁的API设计 直观的Store结构Pinia通过defineStore函数创建store每个store都是一个独立的模块无需复杂的配置即可上手。 Action代替MutationPinia合并了Mutation和Action的概念直接在Action中修改状态无论是同步还是异步操作都更加直观和灵活。 2. Vue 3完美集成 Composition API友好Pinia与Vue 3的Composition API无缝对接使得状态管理逻辑可以轻松复用和组合。 响应式优化得益于Vue 3的改进Pinia在状态更新和响应式方面表现更佳提升应用性能。 3. 强大的工具支持 类型安全Pinia提供了良好的TypeScript支持使得状态管理更加健壮和易于维护。 DevToolsPinia拥有自己的DevTools插件方便开发者调试状态变化提高开发效率。 4. 灵活性与模块化 轻量级模块化每个store都是一个独立单元易于组织和复用无需像Vuex那样显式声明模块。 易于扩展Pinia的设计允许开发者根据需要轻松添加自定义插件或功能。 5. Vue 2兼容性 尽管为Vue 3而生Pinia通过集成vue/composition-api同样能在Vue 2项目中发挥效能为Vue 2用户提供了一条平滑过渡至Vue 3的路径。 使用Pinia 在你的项目中安装 Pinia 非常简单。首先确保已经安装了 Vue CLI 或 Vite然后按照以下步骤安装 Pinia # 如果使用 npm npm install pinia# 如果使用 yarn yarn add pinia在 Vue 3 中使用 Pinia 以下是一个简单的使用示例 创建 Pinia 实例并挂载到 Vue 应用 // main.js import { createApp } from vue import { createPinia } from pinia import App from ./App.vueconst app createApp(App) const pinia createPinia()app.use(pinia) app.mount(#app)定义一个 Store // stores/counter.js import { defineStore } from piniaexport const useCounterStore defineStore(counter, {state: () ({count: 0}),actions: {increment() {this.count}},getters: {doubleCount: (state) state.count * 2} })在组件中使用 Store // components/Counter.vue templatedivpCount: {{ count }}/ppDouble Count: {{ doubleCount }}/pbutton clickincrementIncrement/button/div /templatescript import { useCounterStore } from ../stores/counterexport default {setup() {const store useCounterStore()return {count: store.count,doubleCount: store.doubleCount,increment: store.increment}} } /script还有另一种可能的语法来定义存储。与 Vue Composition API 的setup 函数类似可以传入一个定义响应式属性和方法的函数并返回一个具有我们想要公开的属性和方法的对象。  export const useCounterStore defineStore(counter, () {const count ref(0)const name ref(Eduardo)const doubleCount computed(() count.value * 2)function increment() {count.value}return { count, name, doubleCount, increment } }) ref()成为state属性computed()成为gettersfunction()成为actions 注意必须返回设置存储中的所有状态属性以便 Pinia 将它们选为状态。换句话说不能在存储中拥有私有状态属性。 从 Store 解构 为了从 store 中提取属性并保持其响应性您需要使用storeToRefs()。它将为每个响应性属性创建 refs。 script setup import { useCounterStore } from /stores/counter import { storeToRefs } from piniaconst store useCounterStore() // name and doubleCount are reactive refs // This will also extract refs for properties added by plugins // but skip any action or non reactive (non ref/reactive) property const { name, doubleCount } storeToRefs(store) // the increment action can just be destructured const { increment } store /script 在使用 Pinia 时特别是在 Vue 3 中可以通过 storeToRefs() 来解构 store 中的响应性属性并保持其响应性。这对于从 store 中直接获取状态属性并在组件中使用非常有用。此外操作函数可以直接从 store 中解构因为它们已经绑定到 store 本身。下面详细介绍如何用 storeToRefs() 以及操作函数的解构 使用 storeToRefs 解构状态属性 storeToRefs 是一个方便的工具用于将 store 的响应性状态属性转换为独立的 refs。这样解构后的属性仍然保持响应性。 示例 假设我们有一个简单的 Pinia store // stores/counter.js import { defineStore } from pinia import { ref, computed } from vueexport const useCounterStore defineStore(counter, () {const count ref(0)const doubleCount computed(() count.value * 2)function increment() {count.value}return { count, doubleCount, increment } })在组件中使用 storeToRefs 导入 storeToRefs 和 store import { useCounterStore } from ../stores/counter import { storeToRefs } from pinia在 setup 函数中使用 storeToRefs 解构状态属性 script setup import { useCounterStore } from ../stores/counter import { storeToRefs } from pinia// 获取 store 实例 const counterStore useCounterStore()// 使用 storeToRefs 解构状态属性 const { count, doubleCount } storeToRefs(counterStore)// 直接解构操作函数 const { increment } counterStore /scripttemplatedivpCount: {{ count }}/ppDouble Count: {{ doubleCount }}/pbutton clickincrementIncrement/button/div /template在上面的示例中使用 storeToRefs 解构了 count 和 doubleCount确保它们仍然是响应的。此外直接从 store 中解构了 increment 操作函数并使用它。 注意事项 保持响应性storeToRefs 确保从 store 解构出来的属性保持响应性。如果你仅使用普通的对象解构赋值将无法保持响应性。操作函数绑定操作函数可以直接从 store 中解构因为它们已经绑定到 store这意味着调用它们时会自动处理内部的响应性。 以下是完整的组件代码 templatedivpCount: {{ count }}/ppDouble Count: {{ doubleCount }}/pbutton clickincrementIncrement/button/div /templatescript setup import { useCounterStore } from ../stores/counter import { storeToRefs } from pinia// 获取 store 实例 const counterStore useCounterStore()// 使用 storeToRefs 解构状态属性 const { count, doubleCount } storeToRefs(counterStore)// 直接解构操作函数 const { increment } counterStore /scriptComposition 和 Options API如何选择 Vue 的 Composition API 和 Options API 在 Vue 3 中使用 Pinia 进行状态管理时有两种主要方式来定义 storesOptions API Stores 和 Setup Stores。它们各有优缺点适用于不同的场景。本文将介绍这两种方式并给出选择的建议。 Options API Stores Options API Stores 是一种传统的方式通过定义 state、getters 和 actions 对象来管理状态。这种方式类似于 Vuex 的 API适合那些习惯或熟悉 Options API 的开发者。 优点 结构清晰逻辑和数据分离开结构清晰易维护。熟悉度高与 Vuex 的风格相似Vuex 用户容易上手。良好的 IDE 支持由于属性定义在对象内可以享受良好的 TypeScript 支持和 IDE 的自动补全。 缺点 代码较冗长对于复杂的逻辑代码可能略显冗长。 示例 // stores/counter.js import { defineStore } from piniaexport const useCounterStore defineStore({id: counter,state: () ({count: 0}),getters: {doubleCount: (state) state.count * 2},actions: {increment() {this.count}} })Setup Stores Setup Stores 使用 Vue 3 的 Composition API 来管理状态。这种方式充分利用了 Composition API 的灵活性可以将逻辑和状态更加紧密地结合在一起。 优点 逻辑复用通过 Composition API可以轻松实现逻辑复用。灵活性高可以利用 Composition API 的全部功能如 ref、reactive 和 computed 等。更少的模板代码由于直接使用 Composition API代码更加简洁。 缺点 学习成本对于不熟悉 Composition API 的开发者需要一定的学习成本。TypeScript 支持复杂由于 Setup Stores 依赖于 Composition APITypeScript 的类型推断和自动补全可能需要更多的手动配置。 示例 // stores/counter.js import { defineStore } from pinia import { ref, computed } from vueexport const useCounterStore defineStore(counter, () {const count ref(0)const doubleCount computed(() count.value * 2)function increment() {count.value}return { count, doubleCount, increment } })如何选择 选择 Options API Stores 的场景 习惯 Vuex 风格如果你或者你的团队成员习惯了 Vuex 的风格Options API Stores 会更加适合。项目复杂度较低对于简单的项目Options API Stores 的结构更加清晰直观。注重 TypeScript 支持如果你的项目 heavily 依赖于 TypeScriptOptions API Stores 提供了更好的 IDE 自动补全和类型推断支持。 选择 Setup Stores 的场景 熟悉 Composition API如果你或者你的团队已经熟悉了 Composition APISetup Stores 可以充分利用其灵活性。需要逻辑复用如果你的项目中需要在多个组件之间复用逻辑Setup Stores 通过 Composition API 可以很容易地实现。项目复杂度较高对于复杂的大型项目Setup Stores 可以保持代码更加简洁和模块化。 混合使用 值得注意的是Pinia 允许你在同一个项目中混合使用 Options API Stores 和 Setup Stores。这意味着你可以根据具体场景选择最适合的方式。例如可以在简单的模块中使用 Options API Stores而在需要复杂逻辑复用的模块中使用 Setup Stores。 在 Vue 2 中使用 Pinia Pinia 也支持在 Vue 2 中使用以下是一个基本的示例 在 Vue 2 项目中安装 vue/composition-api npm install vue/composition-api在项目入口文件中配置 Pinia // main.js import Vue from vue import VueCompositionAPI from vue/composition-api import { createPinia, PiniaVuePlugin } from pinia import App from ./App.vueVue.use(VueCompositionAPI) Vue.use(PiniaVuePlugin)const pinia createPinia()new Vue({pinia,render: h h(App) }).$mount(#app)定义并使用 Store 定义和使用 Store 的方式与在 Vue 3 中基本一致。 // stores/counter.js import { defineStore } from piniaexport const useCounterStore defineStore(counter, {state: () ({count: 0}),actions: {increment() {this.count}},getters: {doubleCount: (state) state.count * 2} })// components/Counter.vue templatedivpCount: {{ count }}/ppDouble Count: {{ doubleCount }}/pbutton clickincrementIncrement/button/div /templatescript import { useCounterStore } from ../stores/counter import { defineComponent } from vue/composition-apiexport default defineComponent({setup() {const store useCounterStore()return {count: store.count,doubleCount: store.doubleCount,increment: store.increment}} }) /scriptreactive和ref区别 在 Vue 3 的 Composition API 中reactive 和 ref 是两个用于创建响应式数据的方法。它们在创建、使用和工作方式上有一些重要的区别。下面详细介绍这两者的区别 ref 简介 ref 用于创建一个单一的响应式变量。如果你有一个简单的原始数据如字符串、数值、布尔值等或对象并希望它成为响应式的可以使用 ref。 特点 单一响应式值ref 通常用于创建一个响应式的原始数据或对象。访问值通过 .value 属性来访问或修改 ref 包裹的数据。模板中自动展开在模板中直接使用 ref无需 .valueVue 会自动处理。 示例 import { ref } from vueexport default {setup() {// 创建一个响应式的数值const count ref(0)// 使用 .value 访问和修改值count.valuereturn {count}} }在模板中 templatedivpCount: {{ count }}/pbutton clickcountIncrement/button/div /templatereactive 简介 reactive 用于创建一个响应式对象或数组。它将整个对象或数组转换为响应式的使其内部的所有属性都变为响应式。 特点 响应式对象或数组reactive 通常用于创建一个复杂的响应式对象或数组。直接访问属性无需 .value可以直接访问和修改内部的属性。适合复杂结构更适合具有多个属性或嵌套结构的对象。 示例 import { reactive } from vueexport default {setup() {// 创建一个响应式对象const state reactive({count: 0,name: Vue})// 直接访问和修改属性state.countstate.name Vue 3return {state}} }在模板中 templatedivpCount: {{ state.count }}/ppName: {{ state.name }}/pbutton clickstate.countIncrement/button/div /templateref vs reactive 使用目的 ref适用于创建单一的原始数据或对象的响应式引用。reactive适用于创建整个对象或数组的响应式状态。 访问和修改 ref通过 .value 访问和修改数据。reactive直接访问和修改对象或数组的属性。 适用场景 ref适用于简单的数据结构或单一的变量。reactive适用于复杂的数据结构包含多个属性和嵌套对象。 实际应用中的选择 简单变量如果你只是需要一个简单的响应式变量比如数值、布尔值或字符串那么 ref 是一个更合适的选择。复杂对象如果你的状态包含多个属性或嵌套结构那么 reactive 更加适用。 组合使用 在实际开发中有时需要将 ref 和 reactive 组合使用。例如你可以在一个 reactive 对象中包含多个 ref或者在一个 ref 中嵌套 reactive 对象处理更复杂的情况。 结合示例 import { ref, reactive } from vueexport default {setup() {const user reactive({name: John,age: ref(30) // 使用 ref 创建单独的响应式属性})const incrementAge () {user.age.value}return {user,incrementAge}} }在模板中 templatedivpName: {{ user.name }}/ppAge: {{ user.age }}/pbutton clickincrementAgeIncrement Age/button/div /template总结起来ref 和 reactive 是 Vue 3 中强大的工具能够帮助你创建和管理响应式状态。通过了解它们的区别和使用场景你可以更好地在项目中应用它们使状态管理更加清晰和高效。 组合式api和选项式api的选择 Introduction | Vue.js 在 Vue 3 中组合式 APIComposition API和选项式 APIOptions API各有优缺点适用于不同的场景和需求。选择使用哪个 API 主要取决于团队的熟悉程度、项目的复杂性以及个人偏好。以下是对两种 API 的详细比较和推荐建议。 选项式 APIOptions API 特点 结构清晰: 选项式 API 将数据、方法、计算属性等明确定义在不同的选项中如 data、methods、computed 等。易学易用: 对于初学者来说选项式 API 更加直观易于理解和上手。直观的生命周期钩子: 选项式 API 中的生命周期钩子非常明确如 created、mounted 等。 示例 export default {data() {return {count: 0}},computed: {doubleCount() {return this.count * 2;}},methods: {increment() {this.count;}},mounted() {console.log(Component has been mounted);} }组合式 APIComposition API 特点 更好的逻辑复用: 通过组合式 API 的 setup 函数可以灵活地复用逻辑不同组件可以共享相同的逻辑。更强的灵活性: 组合式 API 允许在一个函数中组织相关逻辑和状态使得代码更容易维护和理解尤其是大型项目。TypeScript 支持更佳: 由于组合式 API 更接近函数式编程风格TypeScript 的类型推断和自动补全更自然代码也更易于类型定义和检查。更精细的生命周期控制: 通过组合式 API你可以在 setup 函数中更精细地控制组件的生命周期。 示例 import { ref, computed, onMounted } from vue;export default {setup() {const count ref(0);const doubleCount computed(() count.value * 2);function increment() {count.value;}onMounted(() {console.log(Component has been mounted);});return {count,doubleCount,increment};} }如何选择 选择选项式 API 的场景 初学者或简单项目: 对于刚开始学习 Vue 的开发者或简单的小型项目选项式 API 更加直观易懂入门门槛低。维护现有代码: 如果你需要维护一个已经使用选项式 API 编写的大型老项目继续使用选项式 API 可能更为合适。 选择组合式 API 的场景 大型项目或复杂应用: 组合式 API 更适合于大型项目或复杂的应用因为它可以更好地组织和复用代码。需要重用逻辑: 如果你的项目中需要在多个组件间复用逻辑组合式 API 更加灵活和高效。TypeScript 项目: 如果你的项目广泛使用 TypeScript组合式 API 提供了更友好的类型支持和自动补全。 混合使用 值得注意的是Vue 3 同时支持选项式 API 和组合式 API你可以在同一个项目中混合使用这两种方式。这意味着你可以逐渐迁移或者在不同的组件中选择最适合的方式。 最佳实践及推荐 总体来说如果你在开始一个新的 Vue 3 项目并且希望利用 Vue 3 的全部新特性组合式 API 通常是更好的选择。它提供了更强的灵活性和更好的逻辑复用同时也更适合复杂的应用和大型项目。 然而如果你或者你的团队对选项式 API 更加熟悉并且当前项目的复杂度不高那么选项式 API 依然是一个非常好的选择能够满足需求并且快速上手。 使用组合式 API 还是选项式 API取决于你的具体需求和偏好。对于新的项目和复杂的应用推荐使用组合式 API以充分利用 Vue 3 的新功能和灵活性。对于简单项目或已经在使用选项式 API 的现有项目选项式 API 依然是一个很好的选择。无论选择哪种方式都需要根据项目的实际情况进行决策。 总结  总得来说Pinia 就是 Vuex 的替代版可以更好的兼容 Vue2Vue3以及TypeScript。在Vuex的基础上去掉了 Mutation只保留了 state, getter和action。Pinia拥有更简洁的语法 扁平化的代码编排符合Vue3 的 Composition api。 其他资源 vue3中使用pinia代替vuex_vue3使用vuex还是pinia-CSDN博客 使用 Vue 3.0你可能不再需要Vuex了-CSDN博客  Pinia全新的Vue状态管理库Vuex的代替者_pinia dispatch-CSDN博客 Vue 状态管理从Vuex到PiniaVue 3官方推荐的状态管理库深度解析-CSDN博客 cool-admin-vue: cool-admin一个很酷的后台权限管理框架模块化、插件化、CRUD极速开发永久开源免费基于midway2.0、typeorm、mysql、jwt、element-ui、vuex、vue-router、vue等构件
http://www.zqtcl.cn/news/745294/

相关文章:

  • 网站服务器要求做网站需要的服务器
  • 网站后台 编辑器 调用网站优化搜索排名
  • 汽车网站建设规划书网站首页版式
  • 国外网站推广方法wnmp 搭建WordPress
  • 网站建设流程 文档企业网上办事大厅
  • .net怎么做网站域名备案注销流程
  • 检测网站建设网站搭建注意事项
  • 河北建设工程信息网站网站的建设要多少钱
  • 玉林住房和城乡建设局网站官网google广告在wordpress
  • 海淀网站建设公司wordpress 招聘网站模板
  • 手机网站在哪里找到网上能免费做网站发布叼
  • 网站设置英文怎么说广州优质网站建设案例
  • 外贸怎样做网站临汾花果街网站建设
  • 专业集团门户网站建设方案南昌医院网站建设
  • 用php做美食网站有哪些新建网站如何做关键词
  • 企业网站建设招标微信公众平台官网登录入口网页版
  • 网站宣传图网站程序预装
  • 网站设计论文选题seo排名优化推广报价
  • wordpress图床网站百度链接收录
  • 八年级信息网站怎么做电商网站的支付接入该怎么做呢
  • wordpress 的应用大兴安岭地网站seo
  • 网站建站作业做直播网站赚钱
  • 网站建设虍金手指花总简单免费制作手机网站
  • 京东网站是刘强冬自己做的吗献县网站建设价格
  • 余姚什么网站做装修比较好邢台企业做网站哪儿好
  • 网站建设后端国外购物平台排行榜前十名
  • 西安做百度推广网站 怎样备案简述商务网站建设
  • 如何建设本地网站东莞常平限电通知2021
  • 成都网站建设cdajcx重庆推广网站排名价格
  • 建网站的价格网店设计方案计划书