npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2024 – Pkg Stats / Ryan Hefner

vuex-capsule

v1.2.2

Published

简化 vuex 在项目中的应用编码,抽象 vuex 中常用逻辑,定义了通用的 mutations、actions、types

Downloads

48

Readme

vuex-capsule

依赖 Vuex2,简化 vuex 在项目中的应用编码,抽象 vuex 中常用逻辑,定义了通用的 mutations、actions、types。

安装

npm i --save vuex-capsule

准备

使用的接口规范必须按照如下结构返回,可参考接口规则

// 单个实体
{
  "success":true,
  "results":{
    "id":1,
    "name":"apple"
  }
}
// 列表数据
{
  "success":true,
  "results":{
    "items":[{"id":1,"name":"apple"}]
  }
}
// 错误时
{
  "success":false,
  "message":"error messages ..."
}

部署

因为基于 Vuex,所以需要在您的项目中导入包内预置数据

State

将预定义实体导入 state.js

import vuexCapsule from 'vuex-capsule'
export default {
  mainList: {
    ...vuexCapsule.mods.list
  }
}

实体包括

  • mods.list:列表实体

Actions

导入预定义 actions 到 action.js

import vuexCapsule from 'vuex-capsule'
import sysHttp from 'utils/http'

export default {
  ...vuexCapsule.createActions({request: sysHttp.req})
}

utils/http.js 的实现参考。具体代码可自定义实现,关键在于回调是传入的数据。

Mutations

import vuexCapsule from 'vuex-capsule'

export default {
  ...vuexCapsule.mutations

}

Types

与项目内定义的常量集合合并

import vuexCapsule from 'vuex-capsule'
let handle = Object.assign({}, vuexCapsule.types)
export default handle;

使用

预定义如下,供调用

以下示例内暴露的参数说明规则: + 必填,? 可选

Actions

dispatch(Types.A_MOD_REQUEST, {
  path:"", //+
  api:"", //+
  payload:{}, //?
  setBefore(res){ //?
    console.log(res)
    return res;
  },
  stepField:"" //?
})

dispatch(Types.A_LIST_REQUEST, {
  path:"", //+
  api:"", //+
  payload:{}, //?
  append:false, //? 列表数据是否累加
  indexFieldName:"id", //? 列表数据中唯一的“索引”字段名称
  setBefore(state,response,payload){ //?
    console.log(state,response)
    return state;
  },
  setAfter(response,payload){ //?
    console.log(response,payload)
  }
})

dispatch(Types.A_SEND_REQUEST,{
  api:"", //+
  payload:{}, //?
  back:false, //?
  redirectUrl:"", //?
  stepField:"", //?
  messageField:"", //?
  requestSuccess:(res)=>{}, //? 发送ajax后,结果成功后执行的钩子
  requestError:(err)=>{}, //? 发送ajax后,结果失败后执行的钩子
  requestBeforeActions:[
    {
      async:true,
      name:"",
      payload:null,
      callback(actionResponse,payload){}
    }
  ], //? 在标记请求开始之后,执行请求之前,需要执行 actions 队列
  requestAfterActions:[
    {
      async:true,
      name:"",
      payload:null,
      callback(actionResponse,payload){}
    }
  ], //? 在执行请求之后,callback 之前,需要执行 actions 队列
  callback:{}, //? 参看 Types.M_MOD_SET 的参数
  method:"post" //? 默认值 post,支持的类型与 http.js 提供的 method 字段一致
})

Muations

store.commit(Types.M_MOD_RESET,{
  path:"", //+
  data:{} //?
})

// 值可以是数组或对象
commit(Types.M_MOD_SET,{
  path:"a.b.items", //+
  operate:"match.set|match.del|set|push", //?
  depend:()=>{}, //? 返回 false 终止执行该任务

  // 当 operate 等于 set|push 时,如下 value 必填
  value:"", //+
  value(state,response,payload){ //?
    console.log(state,response,payload);
    return state;
  },

  // 当 operate 等于  match.set|match.del 时,以下字段必填
  matchField:"", //+
  matchValue:"", //+
  matchCallback:(matchOne, response, payload)=>{ //?
    console.log(matchOne, response, payload)
    return matchOne;
  }
});

ChangeLog

1.2.2

  • fix A_SEND_REQUEST 中的 actions resolve 没有执行

1.2.1

  • chore 升级依赖 lodash 版本至 4.17.12

1.2.0

  • feature 自定义的 action 支持 await 执行
  • fix 修复参数 requestAfterActions

1.1.1

  • mods.js 新增 createEntity 方法,用于生成默认实体结构

1.1.0

  • 删除 package.json 内 module 字段

1.0.3

  • fix M_MOD_SET 的 match.set 操作无效问题

1.0.1

  • 优化文档

1.0.0

  • 优化代码,确保流程异步执行、回调参数补全以及bug修复

0.9.0

  • 修改 package.json ,添加 files、module 字段

0.8.1

  • fix bug

0.8.0

  • A_LIST_REQUEST 新增参数:append,indexFieldName

0.7.2

  • fix mapDeep 方法

0.7.1

  • fix objAssign 方法

0.7.0

  • A_SEND_REQUEST 新增参数:requestSuccess,requestError
  • 修复 M_MOD_RESET ,当值为数组时,设置为 [], 其它设置为空字符串

0.6.0

  • M_MOD_SET 中的 matchCallback 新增参数 response

0.5.1

  • 修复 M_MOD_SET ,当值为 false 时

0.5.0

  • 新增对 path 字段有效性判断
  • 修复 method 字段

0.4.0

  • 将常量名称 A_SUBMIT_REQUEST 变更为 A_SEND_REQUEST
  • A_SEND_REQUEST 新增参数 method
  • createActions 方法接收的参数字段变更

0.3.0

  • 修复 A_SUBMIT_REQUEST 在请求错误时的处理

0.2.0

  • 新增 mods 字段,放预定义数据模型

0.1.3

  • 清理注释

0.1.2

  • fix babel 编译

0.1.1

  • 增加 babel 编译

0.1.0

  • 第一版