Skip to content

Latest commit

 

History

History
80 lines (52 loc) · 4.37 KB

README_zh-CN.md

File metadata and controls

80 lines (52 loc) · 4.37 KB

English | 简体中文

Genji

npm version CircleCI Coverage Status dependencies Status devDependencies Status downloads

基于 reduxredux-thunk 的超轻量级(核心代码仅5KB)的数据状态管理方案。(Inspired by dva )


竜神の剣を喰らえ! -- 島田源氏


特性 🆕

  • 使用命名空间分隔不同业务,并将同一命名空间下所有的数据处理逻辑集中在同一处,方便数据统一管理,提供模块的可插拔体验。
  • 增强 reduxactionCreator,提供友好的存取数据方法,使用户无需重复手写 reducer ,统一同步与异步更新 state 的操作体验。
  • 内置异步操作 loading 状态,更方便的获取当前操作进度。

安装 ⚙️

如果你使用 npm 作为包管理工具,在项目目录下,执行以下命令:

npm install --save genjijs

如果你使用 yarn ,也可以:

yarn add genjijs

快速上手 🔰

本项目内置使用示例,见这里。使用了 Genji 的所有常用特性。

另外,下面的 demo 也许能帮助你更快地熟悉 Genji


Q & A 📖

  • dva的区别?

dva是一个在全球范围内都十分优秀的开源项目,也是本项目的灵感来源(这从项目名上就可以看出hhh),在此特别致谢。

dva 项目中使用了 redux-saga 作为异步解决方案,这使得开发者不得不使用 generator 的方式进行异步请求,这和 asyncPromise 结合的主流异步调用方式不同,可能会对新手开发者造成一些困惑。因此,在 Genji 中采用了 Redux 的作者 Dan 本人写的 redux-thunk 作为异步解决方案。

考虑到 redux-saga 所带来的用户习惯与功能增强,我们通过劫持注入的方式增强了 redux-thunk 的能力,从而使用户以使用类 redux-saga 的方式无感知的定义异步函数,并支持 asyncPromise 方式触发异步请求。

TODO 🚧

  • 异步函数 loading 状态注入
  • 为effects加入 savepick 方法进行对 state 存取的能力
    • 异步创建 reducer 并注入到原 reducer树
    • 扩展 redux-thunk ,并劫持dispatch,扩展参数注入
    • 实现 savepick 功能
    • 实现 savepick,如将功能作用范围扩展到对其他 model 中,或支持解析更多的参数类型
  • 加入CI、eslint、单元测试功能
  • 整合reducerseffects, 统一为 actionCreator
  • 改写Aciton Type,使之支持定义跳转与智能提示
  • 加入完整的Typescript支持
  • 完善文档

开源许可证

MIT

(你可以随意使用此项目,不需要提前告知我,除非你需要其它服务。)