最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

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

 更新時間:2018年12月21日 15:08:02   作者:風(fēng)起云涌Hal  
kiss-vuex 是一個非常簡單的語法糖類庫,這篇文章主要介紹了傻瓜式vuex語法糖kiss-vuex整理,非常具有實(shí)用價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧

前言

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

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

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

介紹

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

NPM
文檔·中文
Github

安裝和使用

通過 npm :

$ npm i kiss-vuex

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

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

// appStore.js
import { Store } from 'kiss-vuex';

@Store
class 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 類,然后實(shí)例化導(dǎo)出。在你需要使用到的地方將這個 store 引入,加入到組件的 computed 屬性下。

貼一段使用示例代碼:

// hello.component.js
import 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+ 的經(jīng)驗(yàn),不難看出 kiss-vuex 里的 @Store 與 Angular 中的 @Service 十分類似。事實(shí)上,kiss-vuex 正是借鑒了這種模式,在未來的 vue3.0+ 版本中,也會有類似的語法特性。

當(dāng)然,你依然可以使用函數(shù)調(diào)用的方式來聲明 store:

// appStore.js
import { Store } from 'kiss-vuex';

// @Store
// class AppStore {
//   counter = 0;
// }

const appStore = Store({
  counter: 0
});

export { appStore }

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

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

作為普通函數(shù)使用
作為裝飾器使用

額外配置

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

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 這個屬性值設(shè)置為 true。

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

es5

如果你偏愛 es5 環(huán)境,可以直接這么使用:

<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 相關(guān)代碼量,并提倡“先引入后使用”這種模式,能夠很方便地進(jìn)行維護(hù)和定位問題。有興趣的同學(xué)可以自行去 github 中查看源碼,思路也是非常巧妙的。

以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

  • Vue3源碼解析watch函數(shù)實(shí)例

    Vue3源碼解析watch函數(shù)實(shí)例

    這篇文章主要為大家介紹了Vue3源碼解析watch函數(shù)實(shí)例解析,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2022-10-10
  • vue實(shí)現(xiàn)下拉框的多選功能(附后端處理參數(shù))

    vue實(shí)現(xiàn)下拉框的多選功能(附后端處理參數(shù))

    本文介紹了如何使用Vue實(shí)現(xiàn)下拉框的多選功能,實(shí)現(xiàn)了在選擇框中選擇多個選項的功能,文章詳細(xì)介紹了實(shí)現(xiàn)步驟和示例代碼,對于想要了解如何使用Vue實(shí)現(xiàn)下拉框多選功能的讀者具有一定的參考價值
    2023-08-08
  • Avue實(shí)現(xiàn)動態(tài)查詢與數(shù)據(jù)展示的示例代碼

    Avue實(shí)現(xiàn)動態(tài)查詢與數(shù)據(jù)展示的示例代碼

    Avue是一個基于Vue.js的前端框架,它是由阿里云開發(fā)的一款企業(yè)級UI組件庫,旨在提供一套全面、易用且高性能的界面解決方案本文介紹了Avue實(shí)現(xiàn)動態(tài)查詢與數(shù)據(jù)展示的示例,需要的朋友可以參考下
    2024-08-08
  • vue中進(jìn)行微博分享的實(shí)例講解

    vue中進(jìn)行微博分享的實(shí)例講解

    在本篇文章里小編給大家整理的是一篇關(guān)于vue中進(jìn)行微博分享的實(shí)例內(nèi)容,有需要的朋友們可以參考下。
    2019-10-10
  • 簡述vue路由打開一個新的窗口的方法

    簡述vue路由打開一個新的窗口的方法

    這篇文章主要介紹了vue路由打開一個新的窗口的方法,本文給大家介紹的非常詳細(xì),具有一定的參考借鑒價值,需要的朋友可以參考下
    2018-11-11
  • vue左右滑動選擇日期組件封裝的方法

    vue左右滑動選擇日期組件封裝的方法

    這篇文章主要為大家詳細(xì)介紹了vue左右滑動選擇日期組件封裝的方法,文中示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2022-04-04
  • Vue中tab欄切換的簡單實(shí)現(xiàn)

    Vue中tab欄切換的簡單實(shí)現(xiàn)

    本文主要介紹了Vue中tab欄切換的簡單實(shí)現(xiàn),文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2022-07-07
  • Vue+OpenLayer實(shí)現(xiàn)測距功能

    Vue+OpenLayer實(shí)現(xiàn)測距功能

    OpenLayers?是一個專為Web?GIS?客戶端開發(fā)提供的JavaScript?類庫包,用于實(shí)現(xiàn)標(biāo)準(zhǔn)格式發(fā)布的地圖數(shù)據(jù)訪問。本文將通過Vue和OpenLayer實(shí)現(xiàn)測距功能?,需要的可以參考一下
    2022-04-04
  • elementui源碼學(xué)習(xí)仿寫el-collapse示例

    elementui源碼學(xué)習(xí)仿寫el-collapse示例

    這篇文章主要為大家介紹了elementui源碼學(xué)習(xí)之仿寫el-collapse示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2022-12-12
  • vue循環(huán)語句v-for中的元素綁定值

    vue循環(huán)語句v-for中的元素綁定值

    這篇文章主要介紹了vue循環(huán)語句v-for中的元素綁定值問題,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2023-11-11

最新評論

天长市| 手游| 日照市| 沙田区| 蓝山县| 西吉县| 缙云县| 鄂州市| 边坝县| 交口县| 富锦市| 通河县| 穆棱市| 万宁市| 友谊县| 台江县| 焉耆| 南阳市| 汨罗市| 普陀区| 平潭县| 泗洪县| 历史| 四川省| 凤台县| 大化| 宜兰市| 北碚区| 余江县| 玛沁县| 阿瓦提县| 新竹县| 江阴市| 观塘区| 芜湖市| 凤冈县| 宁海县| 蓝山县| 五家渠市| 颍上县| 荥阳市|