/natty-fetch

A natty semantic data-fetching util based on promise that no longer needs to use jQuery/Zepto's Ajax.

Primary LanguageJavaScriptMIT LicenseMIT

natty-fetch

npm version download license

A natty data-fetching tool for project that no longer needs to use jQuery/Zepto's Ajax.

🍻 开发者的体验至关重要!natty系列的小工具,在微小的技术点上追求极致的开发体验。如果对你有帮助,请考虑Star一下。

特点

强大的缓存

项目中经常遇到一些相对稳定的数据,如省市列表、差旅性质、任务类别、币种类别等等。这些数据通常根据业务需要或客观变化才更新一次,虽然更新慢,但又必须更新。在请求这些数据时,可以借助natty-fetch强大的缓存(如:缓存的三种有效性判断,缓存的降级处理),分分钟完成异步数据的缓存实现。

名称空间支持

我们在大型项目中会经常碰见一种情况,不同的业务模块有着很多非常相似(甚至相同)的数据接口。这种级别的项目,如果在一开始没有做好足够的名称空间规划,后期一定会逐步进入"命名冲突"的大坑。natty-fetch专为大项目而生,在名称空间方面做足了设计,层级不限,书写灵活,使用者只需关心如何规划即可。

很多老项目,各种原因,经历过多个团队的开发,后续的接手人,要么梳理得很辛苦,要么以更特殊的命名方式继续堆接口...,吐槽是不解决问题的,natty-fetch走起吧!

数据适配约定

无论是XMLHttpRequest,还是fetch,业务逻辑的错误都是作为成功响应(response)的数据一起返回的,但通常情况我们需要将这种错误从response中分离出来,进而reject这次请求。这是一项重复的工作。natty-fetch把这种重复的工作提取为一项配置,即数据适配(fit),让业务逻辑错误直接走向reject,进而resolve拿到的数据是代表业务逻辑成功的数据,无需判断,直接可用。

业务逻辑错误的举例:"您已投过票啦,不能重复投票!","您的操作权限不够!"

多上下文支持

当项目需要调用多个后台系统的数据接口时,清晰地实现各自系统的通用配置是非常好的编程习惯(利人利己)。想象一下,假设其中一个系统的所有接口需要添加token参数时,在该系统的上下文配置中修改一处即可实现,是多么惬意的事情。不仅如此,natty-fetch还提供了三个层级的配置,由上至下分别是全局配置(Global),上下文配置(Context)和接口配置(API),上游配置作为下游配置的默认值,同时又被下游配置所覆盖。

插件机制

一方面,借助插件机制,可以将项目中已经存在的任何(是的,不管有多少种)数据获取方案统一化。统一后的原有方案直接拥有"名称空间支持"、"多上下文支持"、"数据适配约定"、"强大的缓存"等natty-fetch特色功能。另一方面,插件机制也可以用于扩展接口的使用方式,比如内置的loop插件,只需一行配置,就可以快速让一个接口拥有轮询功能。

兼容至IE8

如果项目仅支持现代(Modern)浏览器,推荐使用natty-fetch.min.js。如果需要兼容到IE8,则必须使用natty-fetch.pc.min.jsPromise Polyfill

v2.x docs

v1.x to v2.x

v1.x docs

v1.0.2之前的名称空间为NattyDB,对应的文档请移步这里

Compatibility

  • H5版本:iPhone4+、Android2.3+
  • PC版本:IE8+、Edge、Chrome、Safari、Firefox

Get help

  • 钉钉账号:拂山
  • 微信账号:gnosaij

Dev && Build

Node需要7以上的版本

启动开发环境
$ npm install
$ npm start

构建
$ npm build

Important References