真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

怎樣快速上手Vuex-創(chuàng)新互聯(lián)

這篇文章主要介紹怎樣快速上手Vuex,文中介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們一定要看完!

創(chuàng)新互聯(lián)建站-云計(jì)算及IDC服務(wù)提供商,涵蓋公有云、IDC機(jī)房租用、德陽服務(wù)器托管、等保安全、私有云建設(shè)等企業(yè)級(jí)互聯(lián)網(wǎng)基礎(chǔ)服務(wù),電話聯(lián)系:13518219792

在Mvc模式大行其道的今天,后端通過各種Mvc框架實(shí)現(xiàn)視圖與數(shù)據(jù)模型的隔離,而前端這方面也發(fā)展迅速。vue實(shí)現(xiàn)了Dom與viewModel雙向綁定,使其視圖的更新影響模型,模型的更新影響視圖,你會(huì)不會(huì)覺得這就是Mvc庫呢,實(shí)則不然,因?yàn)樗€差一個(gè)重要的C(也就是控制器)。以下是鄙人對(duì)Mvc的個(gè)人理解,如有失誤還請(qǐng)各位道友指正。

  • M:模型用于表示各種事物及事物特性的數(shù)據(jù)

  • v:view + viewModel,此處鄙人認(rèn)為v不能單純的理解為視圖,而應(yīng)該是視圖+視圖模型。

  • c:控制器,用于協(xié)調(diào)M與v之間的關(guān)系。

第一部分:我對(duì)vuex的理解

這個(gè)重要的C是誰呢,鄙人認(rèn)為就是此文章要介紹的Vuex。如此理解也是可以的:vue + vuex = 前端mvc框架

flux(單向數(shù)據(jù)流)

  • actions:一個(gè)動(dòng)作,可以是view創(chuàng)建的,也可以是程序其他邏輯創(chuàng)建的

  • dispatcher:將業(yè)務(wù)邏輯與用戶界面分離,負(fù)責(zé)響應(yīng)action動(dòng)作事件,并意向傳遍整個(gè)系統(tǒng)

  • store:業(yè)務(wù)邏輯處理

  • view:視圖

vuex是借鑒了flux、redux、The Elm Architecture等相關(guān)思想。

第二部分:揭開vuex面紗

本示例實(shí)現(xiàn)為一個(gè)輸入框動(dòng)態(tài)向下拉列表增加選擇項(xiàng)的功能源碼下載地址,先看效果圖:

怎樣快速上手Vuex

為了展示vuex的作用,此示例你可以看到如下內(nèi)容:

  • 兩個(gè)局部組件:輸入和下拉列表組件

  • 一個(gè)全局組件:App,也是整個(gè)Vue實(shí)例的頂級(jí)組件

  • 一個(gè)jquery.js和bootstrap.js,用于實(shí)例下拉組件,jquery只輔助用于bootstrap。

  • 還有一個(gè)bootstrap.css,用于美化樣式。

一、實(shí)現(xiàn)vuex的store實(shí)例

//Vue.use(Vuex);//如果是window引入方式,vuex會(huì)自動(dòng)附加到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更新數(shù)據(jù)流程:

怎樣快速上手Vuex

  • dispatch可以是view視圖中觸發(fā),也可以是程序業(yè)務(wù)邏輯來觸發(fā)

  • actions通過commit方法發(fā)出一個(gè)改變事件

  • mutations中具體操作state的改變

  • state的改變通過getter暴露給view,state改變后會(huì)立即通知用getter關(guān)聯(lián)起來的view。

  • 創(chuàng)建一個(gè)Vuex.Store的實(shí)例,用于Vue實(shí)例。

二、實(shí)現(xiàn)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:' 
',  components:{  "InputComp": inputComp,  "ComboComp": ComboComp  } });

1.inputComp(局部組件):提供輸入

2.ComboComp(局部組件):實(shí)現(xiàn)列表內(nèi)容的展示

3.App(全局組件):頂級(jí)組件,組合inputComp和ComboComp組件。

4.組件參數(shù)說明:

render:返回一個(gè)組件,其中包含視圖,data等。this為vue實(shí)例,參數(shù)是createElement方法,用于創(chuàng)建VNode。

5.重點(diǎn)關(guān)注inputComp組件中button子元素的on中的click方法,內(nèi)部用dispatch觸發(fā)了store中對(duì)應(yīng)Id的actions。

createElement('button',{
on:{
 "click": function(event){
 self.$store.dispatch('addItem',{"id":2,"name": self.value});
 }
}

三、輸出

html部分代碼:


 

js部分代碼:

var _vue = new Vue({
 el: '#app',
 store: _storeObj
});

以上是“怎樣快速上手Vuex”這篇文章的所有內(nèi)容,感謝各位的閱讀!希望分享的內(nèi)容對(duì)大家有幫助,更多相關(guān)知識(shí),歡迎關(guān)注創(chuàng)新互聯(lián)網(wǎng)站建設(shè)公司行業(yè)資訊頻道!

另外有需要云服務(wù)器可以了解下創(chuàng)新互聯(lián)建站www.cdcxhl.com,海內(nèi)外云服務(wù)器15元起步,三天無理由+7*72小時(shí)售后在線,公司持有idc許可證,提供“云服務(wù)器、裸金屬服務(wù)器、高防服務(wù)器、香港服務(wù)器、美國服務(wù)器、虛擬主機(jī)、免備案服務(wù)器”等云主機(jī)租用服務(wù)以及企業(yè)上云的綜合解決方案,具有“安全穩(wěn)定、簡單易用、服務(wù)可用性高、性價(jià)比高”等特點(diǎn)與優(yōu)勢,專為企業(yè)上云打造定制,能夠滿足用戶豐富、多元化的應(yīng)用場景需求。


本文題目:怎樣快速上手Vuex-創(chuàng)新互聯(lián)
當(dāng)前網(wǎng)址:http://weahome.cn/article/gipdh.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部