V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
bitinn
V2EX  ›  Node.js

node-fetch: 服务器端的 window.fetch 实现

  •  
  •   bitinn · 2015-01-28 02:21:47 +08:00 · 3288 次点击
    这是一个创建于 3579 天前的主题,其中的信息可能已经有所发展或是发生改变。

    如果你还没听说过window.fetch,它是XMLHttpRequest的简易化新API。目前已经在Chrome和Firefox的测试版里实现。

    有多简易?

    fetch('http://v2ex.com/').then(function(res) {
      console.log(res.status);
    }); //print 200
    

    这个服务器版的fetch,有助各位在node.js上写请求时可以用同样简洁的API格式。欢迎试毒。

    https://github.com/bitinn/node-fetch

    8 条回复    2015-01-28 17:50:39 +08:00
    yyfearth
        1
    yyfearth  
       2015-01-28 03:17:24 +08:00
    其实就是抄jQuery来着吧
    bitinn
        2
    bitinn  
    OP
       2015-01-28 03:33:43 +08:00
    @yyfearth jQuery不懂Promise,至少不懂Promise/A+ https://github.com/jquery/jquery/issues/1722
    yyfearth
        3
    yyfearth  
       2015-01-28 04:01:58 +08:00
    @bitinn 不完全符合标准 很正常啊 jQ开始实现的时候貌似标准还没有完全确定下来
    就算是 Promise/A+ 出来这后 估计也会因为兼容性问题 不太好修改吧

    但是不管怎样 肯定就是大家都用jQ的ajax 觉得原生XHR太麻烦 所以才出来了 window.fetch
    bitinn
        4
    bitinn  
    OP
       2015-01-28 04:10:17 +08:00
    @yyfearth yes and no,是的XHR太麻烦,XHR2很多功能但来得太慢,所以才有fetch。不用jQuery开发很多年了,模块化趋势也不是一两天,如果你的喜欢$,甚至有 https://github.com/webpro/DOMtastic
    yyfearth
        5
    yyfearth  
       2015-01-28 04:27:40 +08:00
    @bitinn 我只是说显示jQuery 给了大家便利 然后纷纷开始学 并且整合进原生浏览器
    可以说 很多功能 都是jQuery推广的结果 然后开始模块化 然后干脆标准化后整合进浏览器了

    现在确实可以不用jQuery开发了 但是你看哪些新api 基本上不就是jQuery的用法么 只不过有些改进了 有些简化了 然后标准化了

    现在仍然用jQuery 主要还是为了兼容性考虑 如果是存脆移动端web 而且不考虑老设备 新api已经足够强大和易用了
    willwen
        6
    willwen  
       2015-01-28 07:54:55 +08:00 via iPhone
    module.exports = require("request");
    bitinn
        7
    bitinn  
    OP
       2015-01-28 14:18:26 +08:00
    @yyfearth jQuery的目的是在DOM API还不完善的时代提供一个跨浏览器的API。然而jQuery的长期流行导致了很多开发者总是用它。现在业界逐渐远离jQuery,恰恰是因为它整合了有太多用不到的功能和过去的兼容性代码,即便2.x版本,在移动端的时代也显得臃肿了。

    另一个原因是DOM API库已是前端开发比较小一部分了,先前的例子,是给需要$的人。像是 https://github.com/Matt-Esch/virtual-dom 这类库,是不会有jQuery影子的。

    @willwen request是个流行的库,但也是存在时间很久的库。模块化之后,你会更希望每个库做有限度的事情,而不是尝试满足过多人的需求。当然node-fetch的存在意义不是替代request,而是提供一个和前端相同的promise-based api
    willwen
        8
    willwen  
       2015-01-28 17:50:39 +08:00 via iPhone
    @bitinn request也是會更新的,而且request也支持Promise/A+
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   1881 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 83ms · UTC 16:40 · PVG 00:40 · LAX 08:40 · JFK 11:40
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.