在Mvc模式大行其道的今天,后端通过各种Mvc框架实现视图与数据模型的隔离,而前端这方面也发展迅速。vue实现了Dom与viewModel双向绑定,使其视图的更新影响模型,模型的更新影响视图,你会不会觉得这就是Mvc库呢,实则不然,因为他还差一个重要的C(也就是控制器)。以下是鄙人对Mvc的个人理解,如有失误还请各位道友指正。

第一部分:我对vuex的理解
这个重要的C是谁呢,鄙人认为就是此文章要介绍的Vuex。如此理解也是可以的:vue + vuex = 前端mvc框架
flux(单向数据流)
vuex是借鉴了flux、redux、The Elm Architecture等相关思想。
第二部分:揭开vuex面纱
本示例实现为一个输入框动态向下拉列表增加选择项的功能源码下载地址,先看效果图:
为了展示vuex的作用,此示例你可以看到如下内容:
一、实现vuex的store实例
//Vue.use(Vuex);//如果是window引入方式,vuex会自动附加到Vue上。
var state = {
list: [{"id":1, "name": "001"}]
};
var mutations = {
ADDITEM: function(argState, item){
argState.list.push(item);
}
};
var getters = {
getList:function(argState){
return argState.list;
}
}
var actions = {
addItem:function(dis,item){
dis.commit('ADDITEM',item);
}
}
var _storeObj = new Vuex.Store({
"state": state,
"mutations": mutations,
"getters": getters,
"actions": actions
});
vuex更新数据流程:
二、实现vue的组件
var inputComp = {
render:function(createElement){
var self = this;
return createElement('div',{
attrs:{
"data-id": "001"
},
class:{
"form-inline":true
},
style:{
"display": "inline-block"
}
},[createElement('input',{
attrs:{
type: 'text'
},
class:{
"form-control": true
},
domProps:{
value: self.value
},
on:{
input:function(event){
self.value = event.target.value;
}
}
}),createElement('button',{
on:{
"click": function(event){
self.$store.dispatch('addItem',{"id":2,"name": self.value});
}
},
class:{
"btn":true,
"btn-primary": true
},
domProps:{
type: 'button'
}
},"添加")]);
}
};
//下拉列表组件
var ComboComp = {
render:function(createElement){
var self = this;
return createElement("div",{
attrs:{
"data-id": "ComboComp"
},
class:{
"dropdown":true
},
style:{
"display": "inline-block"
}
},[
createElement("button",{
class:{
"btn": true,
"btn-default": true,
"dropdown-toggle": true
},
attrs:{
"type": "button",
"id": "dr02",
"data-toggle": "dropdown"
}
},[ createElement("span", "选择"), createElement("span",{
class:{
"caret":true
}
})])
,
createElement("ul",
{
class:{
"dropdown-menu":true
},
attrs:{
"aria-labelledby":"dr02"
}
}, self.$store.getters["getList"].map(function(item){
return createElement("li",item.name);
}))
])
}
};
Vue.component('App',{
template:'<div class="wrap" ><ComboComp></ComboComp> <InputComp></InputComp></div>',
components:{
"InputComp": inputComp,
"ComboComp": ComboComp
}
});
1.inputComp(局部组件):提供输入
2.ComboComp(局部组件):实现列表内容的展示
3.App(全局组件):顶级组件,组合inputComp和ComboComp组件。
4.组件参数说明:
render:返回一个组件,其中包含视图,data等。this为vue实例,参数是createElement方法,用于创建VNode。
5.重点关注inputComp组件中button子元素的on中的click方法,内部用dispatch触发了store中对应Id的actions。
createElement('button',{
on:{
"click": function(event){
self.$store.dispatch('addItem',{"id":2,"name": self.value});
}
}
三、输出
html部分代码:
<div class="wrap" id="app"> <App></App> </div>
js部分代码:
var _vue = new Vue({
el: '#app',
store: _storeObj
});
以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,同时也希望多多支持!
# Vuex
# 写给新手同学的vuex快速上手指北小结
# 道友
# 你可以
# 你会
# 下载地址
# 这就是
# 如有
# 我对
# 大行其道
# 还有一个
# 使其
# 一个重要
# 后会
# 绑定
# 创建一个
# 还请
# 先看
# 第一部分
# 第二部分
# 还差
# 重点关注
相关文章:
香港服务器如何优化才能显著提升网站加载速度?
logo在线制作免费网站在线制作好吗,DW网页制作时,如何在网页标题前加上logo?
jQuery 常见小例汇总
如何通过虚拟主机空间快速建站?
如何通过WDCP绑定主域名及创建子域名站点?
如何高效利用亚马逊云主机搭建企业网站?
建站之星备案流程有哪些注意事项?
如何通过远程VPS快速搭建个人网站?
如何在宝塔面板中修改默认建站目录?
活动邀请函制作网站有哪些,活动邀请函文案?
如何用已有域名快速搭建网站?
太原网站制作公司有哪些,网约车营运证查询官网?
建站之星价格显示格式升级,你的预算足够吗?
建站主机功能解析:服务器选择与快速搭建指南
网站制作公司哪里好做,成都网站制作公司哪家做得比较好,更正规?
企业网站制作公司网页,推荐几家专业的天津网站制作公司?
如何优化Golang Web性能_Golang HTTP服务器性能提升方法
如何在香港服务器上快速搭建免备案网站?
,购物网站怎么盈利呢?
高端建站如何打造兼具美学与转化的品牌官网?
西安大型网站制作公司,西安招聘网站最好的是哪个?
如何生成腾讯云建站专用兑换码?
电脑免费海报制作网站推荐,招聘海报哪个网站多?
定制建站流程步骤详解:一站式方案设计与开发指南
建站IDE高效指南:快速搭建+SEO优化+自适应模板全解析
微信小程序 input输入框控件详解及实例(多种示例)
如何在西部数码注册域名并快速搭建网站?
如何通过二级域名建站提升品牌影响力?
儿童网站界面设计图片,中国少年儿童教育网站-怎么去注册?
桂林网站制作公司有哪些,桂林马拉松怎么报名?
网站网页制作专业公司,怎样制作自己的网页?
网站制作大概多少钱一个,做一个平台网站大概多少钱?
攀枝花网站建设,攀枝花营业执照网上怎么年审?
如何在Golang中实现微服务服务拆分_Golang微服务拆分与接口管理方法
中山网站制作网页,中山新生登记系统登记流程?
如何在景安云服务器上绑定域名并配置虚拟主机?
建站之星好吗?新手能否轻松上手建站?
如何通过西部数码建站助手快速创建专业网站?
常州企业建站如何选择最佳模板?
电商平台网站制作流程,电商网站如何制作?
如何基于云服务器快速搭建网站及云盘系统?
网站制作新手教程,新手建设一个网站需要注意些什么?
如何选择长沙网站建站模板?H5响应式与品牌定制哪个更优?
如何通过.red域名打造高辨识度品牌网站?
网站图片在线制作软件,怎么在图片上做链接?
宝塔新建站点报错如何解决?
网站制作壁纸教程视频,电脑壁纸网站?
建站主机选择指南:服务器配置与SEO优化实战技巧
网站视频制作书签怎么做,ie浏览器怎么将网站固定在书签工具栏?
建站之星安装需要哪些步骤及注意事项?
*请认真填写需求信息,我们会在24小时内与您取得联系。