Node 老司机比较一下 httpclient 库吧

2016-11-11 08:06:16 +08:00
 hujianxin

Node 刚开始看,觉着很简单,昨天写了一個小程序,发现 node 下面的 httpclient 可不是一般的多,而且开发都很活跃, github star 都很高。

老司机说一下他们之间的大体比较吧? fetch, request, superagent, axios 。

6795 次点击
所在节点    Node.js
27 条回复
jkeylu
2016-11-11 08:15:17 +08:00
以前用 needle ,自从用了 promise 后,就一直用 node-fetch 了。像 request 太庞大了,大多数功能都没机会用到
cloud107202
2016-11-11 08:53:12 +08:00
fetch ,配合 Promise 和 async/await 使用。 browser 端千万不要用 request
meteor
2016-11-11 09:20:47 +08:00
就用过 request
JoshOY
2016-11-11 09:42:36 +08:00
AlloVince
2016-11-11 09:53:07 +08:00
- node-fetch: 略简陋,主要目的是为了同构和浏览器公用代码
- request: 历史悠久,功能全, promise 还需要引入 request-promise , API 是一点点叠加上去的,没有经过完整的设计
- superagent: 和 request 有同样问题, promise 、 log 这种基础功能都需要引入三方库
- axios: 优点是可以实现同构, API 设计好,非常适合对接 RESTFul 服务,缺点是用例和资料偏少

我们生产最终用的 request
mcfog
2016-11-11 09:57:51 +08:00
request 用惯了,顺便 promise 一直用的 bluebird 也用惯了

npm init -y
npm i -S request bluebird cheerio

各种小脚本的默认起手式

顺便数据复杂的话再来个 lodash
metrue
2016-11-11 10:04:00 +08:00
fetch
lylijincheng
2016-11-11 10:15:20 +08:00
isomorphic-fetch
xieren58
2016-11-11 10:48:34 +08:00
got
xieren58
2016-11-11 10:49:02 +08:00
razor1895
2016-11-11 11:18:41 +08:00
isomorphic-fetch +1
hujianxin
2016-11-11 11:36:42 +08:00
谢谢各位,不能一一回复。

@AlloVince 谢谢,很有帮助。
hujianxin
2016-11-11 11:39:01 +08:00
@mcfog 现在 es6 都挺流行了, lodash 用处不大了吧
smallpath
2016-11-11 11:43:41 +08:00
superagent 和 axios 都是同构的, axios 功能全一点,前端用 fetch ,后端 axios
hujianxin
2016-11-11 11:47:13 +08:00
@smallpath superagent 与 axios 还是不同的,我试了一下,将 axios 换成 superagent 之后, response 内容不同,代码得该。看了一下发现还是更喜欢 axios 一点。

其实前后端都用 fetch 也可以,这样的话会更统一一点吧。
mcfog
2016-11-11 12:31:49 +08:00
@hujianxin ES6 并没有取代多少 lodash 的东西吧
jin5354
2016-11-11 12:39:10 +08:00
fetch 是标准, axios 语法糖多,我用 axios
leopku
2016-11-11 13:44:54 +08:00
axios +1

有机会试试 got
wobuhuicode
2016-11-11 14:12:17 +08:00
request ! request ! request !
主要是旧代码用着懒得换了……
smallpath
2016-11-11 14:12:53 +08:00
@hujianxin axios 功能比 superagent 多,例如截取器,不过 response 内容倒是 axios 不怎么规范,大家都是叫 body 就它一个叫 data 。

fetch 的话前端是用 fetch ,后端不是 fetch 而是 node-fetch ,并不是同构,需要打包两份

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/319723

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX