亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 開發 > JS > 正文

傻瓜式vuex語法糖kiss-vuex整理

2024-05-06 16:47:11
字體:
來源:轉載
供稿:網友

前言

vuex 作為 vue 框架狀態數據管理模塊,誕生已有些許年頭,它的出現很好地解決了兄弟組件響應式狀態數據通信的問題。但是,vuex 的學習是一定門檻的,同時其聲明和使用方式有一些不夠簡潔。一般情況下,我們會使用 new Vue({store})這種方式注入 Store,在組件中使用很 mapGetters 或 mapActions 等來引入 getters 和 actions 等,但隨著項目狀態數據增長,你會發覺越來越難以維護,因為這些數據和方法都太過分散。

看到這里,如果你還是不懂 vuex 是何物,或者你已經使用了 vuex 但是很不習慣它的用法,沒有關系,你可以繼續閱讀本篇。實際上,在引入了 kiss-vuex 后,你甚至并不需要深刻理解 vuex 就能夠很好地使用它。

如果有糖和白水,你會作何選擇?我會選擇把糖放入白水,味道更為完美。

介紹

kiss-vuex 是一個非常簡單的語法糖類庫,遵循軟件工程里的 KISS 原則,僅僅暴露一個方法:Store。壓縮版本僅僅只有 3KB,所以你可以放心加入到你的代碼中。此處貼出幾個有用的鏈接:

NPM 
文檔·中文 
Github

安裝和使用

通過 npm :

$ npm i kiss-vuex

注意:需要先行安裝 vue 和 vuex。

在你的代碼中,可以加入這樣一個 js 文件:

// appStore.jsimport { Store } from 'kiss-vuex';@Storeclass AppStore {  counter = 0;}const appStore = new AppStore();export { AppStore, appStore }

OK,一個 store 就聲明好了。What!? 這么簡單嗎?對,就是這么簡單。

我們對比下原始的 store 的聲明方式:

import Vuex from 'vuex';const appStore = new Vuex.Store({ state: {  count: 0 }, mutations: {  increment (state) {   state.count++  } }, actions: {  increment (context) {   context.commit('increment')  } }});export { appStore }

怎么樣,是否有很明顯的差別?

kiss-vuex 提供了一種極為簡潔的聲明方式,通過 Store 裝飾器,你能夠快速獲得一個 Store 類,然后實例化導出。在你需要使用到的地方將這個 store 引入,加入到組件的 computed 屬性下。

貼一段使用示例代碼:

// hello.component.jsimport Vue from 'vue';import { appStore } from './AppStore';export default Vue.component('app-hello', {  template:     `<div>      <p>Click times: {{counter}}</p>      <button @click="doClick()">add counter</button>    </div>`,  computed: {    counter() {      return appStore.counter;    }  },  methods: {    doClick() {      appStore.counter++;    }  }})

如果你有使用 Angular2+ 的經驗,不難看出 kiss-vuex 里的 @Store 與 Angular 中的 @Service 十分類似。事實上,kiss-vuex 正是借鑒了這種模式,在未來的 vue3.0+ 版本中,也會有類似的語法特性。

當然,你依然可以使用函數調用的方式來聲明 store:

// appStore.jsimport { Store } from 'kiss-vuex';// @Store// class AppStore {//   counter = 0;// }const appStore = Store({  counter: 0});export { appStore }

引入的話就和上述示例中一樣了。

另外,還有幾個線上實例可供參考:

作為普通函數使用 
作為裝飾器使用

額外配置

上述 @Store 這種使用方式是基于 es 中的裝飾器語法以及類屬性語法,而目前裝飾器和類屬性都處于草案狀態,所以需要讓你的開發環境支持這些語法特性,你需要做一些額外配置。

babel

如果你使用了 babel,需要安裝 @babel/plugin-proposal-decorators @babel/plugin-proposal-class-properties 兩個插件:

$ npm i -D @babel/plugin-proposal-decorators @babel/plugin-proposal-class-properties

并配置到 babel.config.js 中:

module.exports = {  plugins: [    ["@babel/plugin-proposal-decorators", { legacy: true }],    ["@babel/plugin-proposal-class-properties", { loose: false }]  ],  presets: [    [      "@babel/env",      {        modules: false      }    ]  ]};

typescript

如果你使用了 typescript,需要將 tsconfig.json 中的 compilerOptions.experimentalDecorators 這個屬性值設置為 true。

{  "compilerOptions": {    "experimentalDecorators": true  }}

es5

如果你偏愛 es5 環境,可以直接這么使用:

<body>  <script type="text/javascript" src="./node_modules/vue/dist/vue.min.js"></script>  <script type="text/javascript" src="./node_modules/vuex/dist/vuex.min.js"></script>  <script type="text/javascript" src="./node_modules/vuex/dist/kiss-vuex.min.js"></script>  <script type="text/javascript">    var appStore = KissVuex.Store({      counter: 0    });    // 添加你的其余自定義代碼  </script></body>

后記

使用 kiss-vuex 能夠大大減少 store 相關代碼量,并提倡“先引入后使用”這種模式,能夠很方便地進行維護和定位問題。有興趣的同學可以自行去 github 中查看源碼,思路也是非常巧妙的。

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持VeVb武林網。


注:相關教程知識閱讀請移步到JavaScript/Ajax教程頻道。
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
欧美日韩国产综合视频在线观看中文| 欧美最猛黑人xxxx黑人猛叫黄| 精品无人国产偷自产在线| 国产精品精品视频一区二区三区| 91精品视频观看| 国内偷自视频区视频综合| 精品视频一区在线视频| 亚洲美女在线观看| 日韩一级黄色av| 在线观看国产精品91| 7m第一福利500精品视频| 91九色蝌蚪国产| 亚洲欧美一区二区三区在线| 伊人久久综合97精品| 欧美制服第一页| 国产亚洲精品va在线观看| 久久久视频免费观看| 成人h视频在线| 91国在线精品国内播放| 91大神福利视频在线| 色多多国产成人永久免费网站| 国产亚洲精品久久久久久牛牛| 欧美大片欧美激情性色a∨久久| 日韩黄色在线免费观看| 欧美激情视频一区二区| 欧美性猛交xxxx| 精品久久久国产| 国产精品久久久久久av福利| 欧美最猛性xxxx| 日本欧美中文字幕| 久久久精品免费| 中文字幕综合一区| 久久久久久久久久国产精品| 日韩免费精品视频| 91精品国产综合久久久久久久久| 欧美极品美女视频网站在线观看免费| 国产美女高潮久久白浆| 欧美大片网站在线观看| 高潮白浆女日韩av免费看| 69久久夜色精品国产69乱青草| 国产欧美日韩亚洲精品| 亚洲天堂网在线观看| 国产精品h片在线播放| 亚洲人成电影网站色| 亚洲精品mp4| 亚洲天堂日韩电影| 国产精品夜色7777狼人| 亚洲少妇激情视频| 欧美中文字幕在线观看| 日韩免费在线播放| 琪琪亚洲精品午夜在线| 在线亚洲欧美视频| www.午夜精品| 国产福利精品av综合导导航| 欧美成人精品h版在线观看| 国产剧情久久久久久| 午夜精品理论片| 性色av一区二区三区免费| 91精品国产综合久久香蕉最新版| 精品久久久久久久中文字幕| 国产精品福利在线观看| 精品少妇v888av| 国产suv精品一区二区| 亚洲精品大尺度| 亚洲精品小视频| 欧美大学生性色视频| 91久久久精品| 欧美激情国内偷拍| 精品国产自在精品国产浪潮| 91国内免费在线视频| 日韩精品中文字幕在线观看| 91夜夜未满十八勿入爽爽影院| 国产精品高清在线| 亚洲理论在线a中文字幕| 久久中文字幕国产| 精品成人久久av| 亚洲精品wwwww| 51久久精品夜色国产麻豆| 国产成人a亚洲精品| 日本免费一区二区三区视频观看| 国产+成+人+亚洲欧洲| 中文字幕自拍vr一区二区三区| 亚洲精品欧美日韩| 国产精品在线看| www国产亚洲精品久久网站| 国产女人精品视频| 亚洲有声小说3d| 日本中文字幕成人| 中文字幕日韩av综合精品| 久久久精品日本| 精品国产一区久久久| 久久乐国产精品| 韩国欧美亚洲国产| 欧美日本高清视频| 久久亚洲国产成人| 亚洲天天在线日亚洲洲精| 国内精品免费午夜毛片| 最新的欧美黄色| 国产精品久久久久久久久久ktv| 国产精品jvid在线观看蜜臀| 亚洲精品美女在线观看播放| 亚洲香蕉成人av网站在线观看| 91av在线播放| 亚洲xxxx在线| 亚洲精品福利在线| 91国产中文字幕| 国产成人短视频| 欧美性猛交xxxx免费看漫画| 欧美国产日韩一区二区| 中文字幕亚洲精品| 国产精品尤物福利片在线观看| 欧美日韩国内自拍| 国产91久久婷婷一区二区| 青青草原成人在线视频| 97久久精品人人澡人人爽缅北| 中文字幕成人精品久久不卡| 国产精品专区h在线观看| 亚洲无线码在线一区观看| 国产精品国产亚洲伊人久久| 国外成人在线视频| 成人精品aaaa网站| 久久久久久一区二区三区| 亚洲一级黄色av| 在线激情影院一区| 国产精品av在线播放| 亚洲第一视频在线观看| 欧美日韩免费区域视频在线观看| 欧美成人全部免费| 久久精品视频免费播放| 久久久久久久久久久成人| 日本道色综合久久影院| 亚洲视频视频在线| 91免费欧美精品| 国产精品第一视频| 国产精品h片在线播放| 日韩黄色高清视频| 免费91麻豆精品国产自产在线观看| 亚洲a∨日韩av高清在线观看| 91在线免费视频| 欧美日韩国产va另类| 欧美成人午夜免费视在线看片| 欧美一级电影免费在线观看| 久久久成人精品视频| 日韩精品在线免费观看| 国产在线精品一区免费香蕉| 国产一区二区三区三区在线观看| 亚洲电影在线看| 91久久夜色精品国产网站| 欧美激情综合色综合啪啪五月| 国产精品美女在线观看| 欧美一区二区三区免费视| 精品国产一区二区三区四区在线观看| 久久久久久12| 色樱桃影院亚洲精品影院| 亚洲福利视频久久| 日韩欧美国产骚| 精品一区二区亚洲| 亚洲天堂久久av| 欧美一级片久久久久久久| 日韩中文字幕在线| 亚洲日本中文字幕免费在线不卡| 欧美成人精品在线视频| 日韩国产欧美区| 1769国内精品视频在线播放|