关于vuex类的新闻最近很多,看到眼热就去查了下资料,然后扯出来一堆flux、redux、state、state之类的概念,以及大型工程必要性之类的。看官方手册也是昏昏然。

然而,我还是弄懂了!我准备从demo出发,以同样的一个最简单的demo,演示两种情况下的代码编写情况:
目的是通过对比引出vuex的概念、优势和劣势。也许这是目前最接地气的vuex的介绍吧:)。所以无论如何在了解vuex之前,你必须懂得vue.js(好像废话:)。现在开始。
假设一个微小的应用,有一个标签显示数字,两个按钮分别做数字的加一和减一的操作。用户界面看起来是这样的:
使用vue的话,就是这样:
<script src="https://unpkg.com/vue/dist/vue.js"></script>
<div id="app">
<p>{{count}}
<button @click="inc">+</button>
<button @click="dec">-</button>
</p>
</div>
<script>
new Vue({
el:'#app',
data () {
return {
count: 0
}
},
methods: {
inc () {
this.count++
},
dec () {
this.count--
}
}
})
</script>
我写的代码代码可以直接拷贝到你的html内并且打开执行,你可以不费多余的劲儿,就把应用跑起来,按按按钮,看看界面上的反应是否如你预期。
整个代码结构非常清晰,代码是代码,数据是数据,这也是我一直以来非常喜欢vue.js的重要原因。代码就是放在methods数组内的两个函数inc、dec,被指令@click关联到button上。而data内返回一个属性count,此属性通过{{count}}绑定到标签p内。
现在来看看,同样的demo app,使用vuex完成的代码的样子,再一次,如下代码不是代码片段,是可以贴入到你的html文件内,并且直接使用浏览器打开运行的。
<script src="https://unpkg.com/vue/dist/vue.js"></script>
<script src="https://unpkg.com/vuex@next"></script>
<div id="app">
<p>{{count}}
<button @click="inc">+</button>
<button @click="dec">-</button>
</p>
</div>
<script>
const store = new Vuex.Store({
state: {
count: 0
},
mutations: {
inc: state => state.count++,
dec: state => state.count--
}
})
const app = new Vue({
el: '#app',
computed: {
count () {
return store.state.count
}
},
methods: {
inc () {
store.commit('inc')
},
dec () {
store.commit('dec')
}
}
})
</script>
我们先看到有哪些重要的变化:
就是说,之前在vue实例内做的操作和数据的计算现在都不再自己做了,而是交由对象store来做了。这突然让我想到就先餐厅现在都不在洗碗了,都交给认证的机构来洗了。
说回正题。store对象是Vuex.Store的实例。在store内有分为state对象和mutations对象,其中的state放置状态,mutations则是一个会引发状态改变的所有方法。正如我们看到的,目前的state对象,其中的状态就只有一个count。而mutations有两个成员,它们参数为state,在函数体内对state内的count成员做加1和减1的操作。
活还是那些活,现在引入了一个store对象,把数据更新的活给揽过去,不再需要vue实例自己计算了,代价是引入了新的概念和层次。那么好处是什么(一个土耳其古老的发问)?
vuex解决了组件之间共享同一状态的麻烦问题。当我们的应用遇到多个组件共享状态时,会需要:
以上的这些模式非常脆弱,通常会导致无法维护的代码。来自官网的一句话:Vuex 是一个专为 Vue.js 应用程序开发的状态管理模式。它采用集中式存储管理应用的所有组件的状态。这里的关键在于集中式存储管理。这意味着本来需要共享状态的更新是需要组件之间通讯的,而现在有了vuex,就组件就都和store通讯了。问题就自然解决了。
这就是为什么官网再次会提到Vuex构建大型应用的价值。如果您不打算开发大型单页应用,使用 Vuex 可能是繁琐冗余的。确实是如此——如果您的应用够简单,您最好不要使用 Vuex。
关于
作者:刘传君
创建过产品,创过业。好读书,求甚解。 可以通过 1000copy#gmail.com 联系到我
出品
bootstrap小书 https://www.gitbook.com/book/1000copy/bootstrap/details
http小书 http://www.ituring.com.cn/book/1791
Git小书 http://www.ituring.com.cn/book/1870
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。
# vuejs
# vuex
# 状态管理
# 多个
# 是一个
# 这是
# 小书
# 官网
# 土耳其
# 您的
# 集中式
# 解决了
# 让我
# 是在
# 放在
# 你可以
# 将会
# 是这样
# 这就是
# 则是
# 为你
# 两种
# 到我
相关文章:
建站主机如何选?性能与价格怎样平衡?
如何基于云服务器快速搭建网站及云盘系统?
建站之星如何实现五合一智能建站与营销推广?
php条件判断怎么写_ifelse和switchcase的使用区别【对比】
如何用美橙互联一键搭建多站合一网站?
如何通过WDCP绑定主域名及创建子域名站点?
如何通过免费商城建站系统源码自定义网站主题与功能?
,有什么在线背英语单词效率比较高的网站?
常州企业建站如何选择最佳模板?
宝塔新建站点报错如何解决?
如何选择域名并搭建高效网站?
电商平台网站制作流程,电商网站如何制作?
C++ static_cast和dynamic_cast区别_C++静态转换与动态类型安全转换
如何用wdcp快速搭建高效网站?
如何通过虚拟主机空间快速建站?
网页制作模板网站推荐,网页设计海报之类的素材哪里好?
制作销售网站教学视频,销售网站有哪些?
如何确保FTP站点访问权限与数据传输安全?
如何通过网站建站时间优化SEO与用户体验?
建站主机助手选型指南:2025年热门推荐与高效部署技巧
如何用虚拟主机快速搭建网站?详细步骤解析
哈尔滨网站建设策划,哈尔滨电工证查询网站?
厦门模型网站设计制作公司,厦门航空飞机模型掉色怎么办?
如何通过VPS搭建网站快速盈利?
在线制作视频的网站有哪些,电脑如何制作视频短片?
网站制作的方法有哪些,如何将自己制作的网站发布到网上?
网站建设制作、微信公众号,公明人民医院怎么在网上预约?
如何高效搭建专业期货交易平台网站?
电商网站制作价格怎么算,网上拍卖流程以及规则?
如何在Windows 2008云服务器安全搭建网站?
外贸公司网站制作哪家好,maersk船公司官网?
网站制作壁纸教程视频,电脑壁纸网站?
免费网站制作appp,免费制作app哪个平台好?
定制建站平台哪家好?企业官网搭建与快速建站方案推荐
北京企业网站设计制作公司,北京铁路集团官方网站?
广州顶尖建站服务:企业官网建设与SEO优化一体化方案
标准网站视频模板制作软件,现在有哪个网站的视频编辑素材最齐全的,背景音乐、音效等?
制作网页的网站有哪些,电脑上怎么做网页?
网站制作企业,网站的banner和导航栏是指什么?
建站之星安装模板失败:服务器环境不兼容?
javascript中对象的定义、使用以及对象和原型链操作小结
建站之星2.7模板:企业网站建设与h5定制设计专题
矢量图网站制作软件,用千图网的一张矢量图做公司app首页,该网站并未说明版权等问题,这样做算不算侵权?应该如何解决?
三星网站视频制作教程下载,三星w23网页如何全屏?
seo网站制作优化,网站SEO优化步骤有哪些?
如何制作算命网站,怎么注册算命网站?
如何用免费手机建站系统零基础打造专业网站?
开源网站制作软件,开源网站什么意思?
杭州银行网站设计制作流程,杭州银行怎么开通认证方式?
潍坊网站制作公司有哪些,潍坊哪家招聘网站好?
*请认真填写需求信息,我们会在24小时内与您取得联系。