Notwithstanding Precautions, Misadventure

    natty-fetch

    2.6.0 • Public • Published

    natty-fetch

    npm version download license

    定位

    🍔 很多人问起,natty-fetch是原生fetch的扩展吗?,或者natty-fetchaxios有什么区别?所以统一回答一下:

    natty-fetch的定位并不是另一个ajax/jsonp工具,而是多人协作时定义接口和使用接口的一套规范,特别是项目接口来至多个后台系统时。

    界面有名气的ajax工具,功能强大的有很多,如果只是找工具,轻量级的可以使用axios,重量级的可以使用bluebird。如果是希望找到团队多人协作的规范,使用natty-fetch

    那么,知道了natty-fetch的定位,小伙伴们就可以理解,使用这套规范(多人协作时定义接口和使用接口的规范),一定是会有一点点代价的,一定会比axios这种纯工具,在使用时,多出一点点配置,但非常值得!

    目前功能的缺失:文件上传功能,建议使用专业文件上传组件。

    🍻 开发者的体验至关重要!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

    Install

    npm i natty-fetch

    DownloadsWeekly Downloads

    49

    Version

    2.6.0

    License

    MIT

    Unpacked Size

    504 kB

    Total Files

    34

    Last publish

    Collaborators

    • alex-mm
    • gnosaij