心无旁骛vuex-simple

Posted smart-girl

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了心无旁骛vuex-simple相关的知识,希望对你有一定的参考价值。

这个算是一个小的demo嘛,先放上开源github地址:https://github.com/sascha245/vuex-simple
倒是可以先看下效果
技术图片
呃呃,因为这个项目所在的目录与平时我们一般项目写在src中不同,我甚至怀疑这个本身其实是一个插件,这个demo只是其中的测试项目。
先看下项目目录
技术图片
首先还是从基础文件进入项目

//main.ts
import 'reflect-metadata';

import Vue from 'vue';
import VueTypedi from 'vue-typedi';

import App from './App.vue';
import router from './router';
import store from './store';

Vue.config.productionTip = false;
Vue.use(VueTypedi);

new Vue(
  render: h => h(App),
  router,
  store
).$mount('#app');
//samples\\router.ts
import Vue from "vue";
import Router from "vue-router";

import About from "./views/About";
import Home from "./views/Home";

Vue.use(Router);

export default new Router(
  routes: [
    
      component: Home,
      name: "home",
      path: "/",
    ,
    
      component: About,
      name: "about",
      path: "/about",
    
  ]
);

技术图片
这个里面比较有意思的是分离了ts文件,其实应该说就像是js文件也可以这样分解啊,不过这个算是打开了我的思路
接下来我们看核心内容home页面
我们进一步进行分析,发现减这个行为是比较独立的,先看减数
state中给其定义了不同的module,比如my1可以看做是核心的store

import  Module, State  from '../../../../src';
import  MyModule  from '../my';

export class TestState 
  @Module()
  public my1 = new MyModule(5);

  @Module()
  public my2 = new MyModule();

  @State()
  public counter: number = 10;

  @State()
  public name: string = 'Will';

//samples\\store\\modules\\my.ts
import  Mutation, State  from '../../../src';

export class MyModule 
  @State()
  public counter: number = 0;

  @Mutation()
  public increment() 
    this.counter++;
  

  constructor(counter = 0) 
    this.counter = counter;
  
//samples\\store\\modules\\test\\getters.ts
import  Getter  from '../../../../src';
import  TestState  from './state';

export class TestGetters extends TestState 
  @Getter()
  public get cachedGetter() 
    return 
      item: this.counter + 100
    ;
  

  @Getter()
  public get total() 
    return this.counter + this.my1.counter + this.my2.counter;
  

  public get normalGetter() 
    return 
      item: this.counter + 100
    ;
  
//samples\\store\\modules\\test\\mutations.ts
import  Mutation  from '../../../../src';
import  TestGetters  from './getters';

export class TestMutations extends TestGetters 
  @Mutation()
  public setCounter(count: number) 
    this.counter = count;
  

  @Mutation()
  public increment() 
    this.counter++;
  
//samples\\store\\store.ts
import  Action, Getter, Module, Mutation, State  from '../../src';
import  MyModule  from './modules/my';
import  TestModule  from './modules/test';
import  TodoModule  from './modules/todo';

export class MyStore 
  @Module()
  public my = new MyModule(20);

  @Module()
  public test = new TestModule();

  @Module()
  public todo = new TodoModule();

  @State()
  public version = '2.0.0';

  @State()
  public rootCounter = 0;

  @Getter()
  public get aRootCounter() 
    return this.rootCounter;
  

  /**
   * Getter example with method style access
   */
  @Getter()
  public get numberButIncreased() 
    return (nb: number) => 
      return nb + 1;
    ;
  

  @Mutation()
  public incrementRootCounter() 
    this.rootCounter += 1;
  

  @Action()
  public async actionIncrementRootCounter() 
    await new Promise(r => setTimeout(r, 1000));
    this.incrementRootCounter();
  

后记:我数据流向还是没有弄清除

以上是关于心无旁骛vuex-simple的主要内容,如果未能解决你的问题,请参考以下文章

心无旁骛vuex-typescript-example

每天花一点时间练习心无旁骛地“正念”饮食

心无负累 才是最好的状态

心无境 向未来,2018 OPPO开发者大会倒计时1天

百度文化秘籍

pip requirements.txt