mcpField
N
nitro-fetch

nitro-fetch

github.com/margelo开发178618 次安装10 周前更新
代码仓库

关于 nitro-fetch

供使用 react-native-nitro-fetch 系列包的 AI 编码助手查阅的参考技能,将网络问题导向涵盖原生 fetch、WebSocket、文本解码、预取和检查的资料。

主要功能

  1. 01将问题导向相关参考资料
  2. 02介绍原生支持的 fetch
  3. 03涵盖 NitroWebSocket 用法
  4. 04说明请求预取
  5. 05介绍网络检查与性能分析

适用场景

  1. 01在界面加载前预热请求
  2. 02配置 axios 适配器
  3. 03迁移至 NitroWebSocket
  4. 04检查请求或分析延迟

安装

复制下面的命令,在终端中运行。

$npx skills add https://github.com/margelo/react-native-skills --skill nitro-fetch

安装后在 Claude Code 中输入/nitro-fetch确认已加载。

包含的文件

除 SKILL.md 外,安装时一起下载的参考资料和脚本。

references/
axios-adapter.md
migrate-from-rn-ws.md
network-inspector.md
perfetto-profiling.md
prefetching.md
text-decoder.md
using-websockets.md
websocket-prewarm.md

详细介绍

react-native-nitro-fetch

为在项目中使用 react-native-nitro-fetch 系列软件包的 AI 编码助手提供的精简参考。请使用此代码库中的真实 API 回答问题,而不是杜撰 API,并根据问题转到下方匹配的 references/*.md 文件。

思维模型

react-native-nitro-fetch 是浏览器网络堆栈的原生支持型替代方案,可直接用于 React Native:

  • fetch — 兼容 WHATWG,通过 Nitro Modules 使用 URLSession(iOS)和 Cronet(Android)实现。
  • NitroWebSocket — 原生 WebSocket(libwebsockets + mbedTLS,在 iOS 上默认使用系统实现),接口与浏览器的 WebSocket 相同。
  • NitroTextDecoder — 原生 UTF-8 解码器,性能优于 Expo 支持的 JS polyfill。

性能方面涉及三个部分,大多数问题都与其中之一有关:

  1. 预取。 原生代码可以在 React Native 加载之前运行。prefetchOnAppStart(...) 和 prewarmOnAppStart(...) 会在每次冷启动时重放已存储的请求 / 套接字连接,因此等 JS 开始运行时,响应已经缓存,或者套接字已处于 OPEN 状态。
  2. 导入原生客户端。 默认方式是显式导入 — import { fetch } from 'react-native-nitro-fetch'、import { NitroWebSocket } from 'react-native-nitro-websockets',或通过自定义适配器接入 axios。也可以在入口文件顶部进行全局替换(globalThis.fetch = fetch 等)— 设置方法和权衡请参阅 全局替换文档。
  3. 查看运行情况。 NetworkInspector 会记录 JS 边界上的 HTTP + WS 活动;原生 Perfetto / Instruments 跟踪则涵盖其下方的所有环节(DNS、TLS、TTFB、正文)。前者用于确保正确性,后者用于分析延迟。

路由表 — 问题对应参考资料

编写代码前,先加载 references/ 中匹配的文件。每份参考资料都引用了此代码库中的真实文件路径。

用户询问的内容…阅读
在屏幕挂载前预热缓存、让冷启动 GET 请求即时完成、prefetch、prefetchOnAppStart、prefetchKeyreferences/prefetching.md
通过 nitro-fetch 路由 axios(完整的自定义适配器 — baseURL、params、timeout、signal、responseType、validateStatus)references/axios-adapter.md
UTF-8 解码、TextDecoder 缓慢、Hermes polyfill、流式解码、NitroTextDecoderreferences/text-decoder.md
在 React Native 启动前打开 wss:// 连接、prewarmOnAppStart、Android Application.onCreate 配置references/websocket-prewarm.md
NitroWebSocket 类、标头、子协议、wss://、二进制帧、运行时用法references/using-websockets.md
将现有应用从 React Native 内置的 WebSocket 迁移到 NitroWebSocketreferences/migrate-from-rn-ws.md
在 JS 层查看请求和响应、调试是哪个库发起了调用、NetworkInspectorreferences/network-inspector.md
查找速度缓慢的 API、DNS / TLS / TTFB 分析、原生跟踪、Perfetto、Instruments、Hermes 性能分析器references/perfetto-profiling.md

如果问题与表格中的任何条目都不匹配,请先阅读 references/prefetching.md — 大多数冷启动问题都从这里开始,且该文件会链接到其他资料。

遇到全局替换相关问题时,请指向全局替换文档。

安装(一行命令,仅供参考)

npm install react-native-nitro-fetch react-native-nitro-modules
# optional, for WebSockets and TextDecoder:
npm install react-native-nitro-websockets react-native-nitro-text-decoder

安装后,重新构建应用(iOS 使用 pod install,Android 使用全新的 ./gradlew 构建)。其他内容都不会自动接入——是否启用这些功能,需通过上述参考文件自行选择。

验证技能是否已加载

对于以下任何问题,正确的回答都会引用 API 和文件路径。错误或幻觉式的回答会编造本仓库中并不存在的 install()、setup() 或 init() 辅助函数。

适合测试的问题:

  • “在本仓库中,如何预热 wss 连接?” → 应提及 prewarmOnAppStart,并且说明通过 NitroWebSocketAutoPrewarmer.prewarmOnStart(this) 在 Android Application.onCreate 中接入。
  • “如何让 axios 通过 nitro-fetch 运行?” → 应生成一个支持 baseURL、params、timeout、signal 和 responseType 的 AxiosAdapter,而不是一个把所有内容都用 JSON.parse 解析的 20 行示例。
  • “添加 prefetch 后,为什么冷启动 GET 仍然很慢?” → 应提及 prefetchKey,并指向 references/prefetching.md。

参考

  • 源码:packages/react-native-nitro-fetch/、packages/react-native-nitro-websockets/、packages/react-native-nitro-text-decoder/
  • 公共 API:packages/react-native-nitro-fetch/src/index.tsx
  • 接入示例:example/index.js、example/src/App.tsx
  • 文档网站:https://fetch.margelo.com

评论

支持 Markdown