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

natty-fetch

v2.6.0

Published

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

Downloads

264

Readme

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