My Toolkit of Node.js 我的 Nodejs 百宝箱 - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
JerryC
V2EX    Node.js

My Toolkit of Node.js 我的 Nodejs 百宝箱

  •  
  •   JerryC 2015-01-29 21:37:52 +08:00 5330 次点击
    这是一个创建于 3909 天前的主题,其中的信息可能已经有所发展或是发生改变。

    原文见:http://www.jianshu.com/p/f8d7150259a1

    Cheerio

    Fast, flexible, and lean implementation of core jQuery designed specifically for the server.

    Cheerio,说它是服务器端的jQuery一点也不为过,在github上也是大受欢迎,star数达4500有余,至目前为止,已经有923次commit。它兼容jQuery绝大部分的库,以至于你只需要一句$ = require('cheerio').load(YOUR_HTML_CONTENT);,便可以像在前端用jQuery一样的舒畅,愉快。
    By the way,和Cheerio类似的框架还有:jsdom,一个受欢迎程度略低于Cheerio,但是它有2,147多的commit,可见维护者之诚意。

    Waterline

    An adapter-based ORM for Node.js with support for mysql, mongo, postgres, redis, and more

    Waterline是从Sails框架衍生出来的Nodejs平台下的ORM,除了支持常见的mysql、mongodb,还支持PostgreSQL、Redis、Memory、Disk等等

    Bookshelf

    A Node.js ORM for PostgreSQL, MySQL and SQLite3 in the style of Backbone.js

    与Waterline类似,但作为同类产品且被Ghost选择标配之一的Bookshelf必然有它的特别之处,仍待君细细品来。

    Node-Soap

    A SOAP client and server for node.js.

    对于REST,大家必然熟悉,就算不熟悉,也是久仰其大名,或者是略有耳闻。REST简单而直观,把HTTP协议利用到了极限,在这种思想指导下,它甚至用HTTP请求的头信息来指明资源的表示形式,用HTTP的错误机制来返回访问资源的错误。但在R.T. Fielding博士在他的论文里提出REST之前,又是谁来承担Web Service这份差使呢?
    SOAP (Simple Object Access Protocol) 顾名思义,是一个严格定义的信息交换协议,用于在Web Service中把远程调用和返回封装成机器可读的格式化数据。它基于 XML 格式,在绝大多数情况下,使用HTTP协议传输WSDL请求。
    而node-soap模块,则允许在node环境中,接入其他程序语言 (诸如 ASP.net、Java 等) 开发的WebService。也能够在node中开发基于SOAP的WebService供其他程序调用。
    当然,在大多数情况下,过去SOAP能做的事,REST也是能做到的,且REST更加优雅,简单。以我的水平,我也是想不清楚SOAP依然存在的必然性,但是有那么一句话:「存在,就是合理的」。既然,它存在,也有人用到,那么在合作开发中和SOAP相遇也是有可能性的,相信那是我们的缘分。
    如果你有兴趣,听一下我和SOAP邂逅的故事:SOAP,Web service的枢纽

    Passport

    Simple, unobtrusive authentication for Node.js.

    如果你的站点想快速建立passport-user结构的用户系统,且能够简单的接入流行的第三方登录,用passport就没错了。它不但提供了本站登录的解决方案,还有一大堆第三方登录的策略,见:Strategies
    如果你用Sails的话,这里还有一个承接Sails和passport的模块:sails-generate-auth

    Bluebird

    Bluebird is a full featured promise library with unmatched performance.

    Javascript 的世界有一种痛叫「callback hell」,中文翻译过来叫「回调地狱」,如果能承受得了她带来的痛楚,且继续爱着她,这是「真爱」。Promise的概念,能够让你与Javascript好好爱的深沉。
    实现Promise的库有很多,我知道的有:
    * Q
    * when
    * bluebird
    * jQuery的deferred
    * Javascript自带的Promise(一些高级浏览器内置的Promise对象)

    其中,我用的比较顺手的当属bluebird,它也是时下最优秀博客系统Ghost的标配之一。
    如果你想深入了解Promise的概念,可以点这里:Promises: The Sync Problem
    如果你想珍惜时间,珍惜生命,这里有中文版:深入理解Promise五部曲

    Lodash

    A Javascript utility library delivering consistency, modularity, performance, & extras.

    我想称它为Javascript的瑞士军刀,或者是一个蓝色工具箱。lodash提供了一系列相当不错的跟函数式编程相关的方法。函数式编程就像搭积木一样,像.identity、.partial、_.compose、splat、unsplat等都是职责单一的函数。别看它们简单,把它们当作积木看待,它们释放的是无尽的活力。 越是简单的东西,蕴藏的越是更为无限的可能性。

    Node.bcrypt.js

    bcrypt for NodeJs

    bcrypt,是一个跨平台的文件加密工具。由它加密的文件可在所有支持的操作系统和处理器上进行转移。它的口令必须是8至56个字符,并将在内部被转化为448位的密钥。然而,所提供的所有字符都具有十分重要的意义。密码越强大,您的数据就越安全。而node.bcrypt.js则是披上Nodejs斗篷的bcrypt,它的62.2%是C++代码,而Javascript代码只有30.3%。

    Moment

    Parse, validate, manipulate, and display dates in Javascript.

    Moment是一个轻量级用于处理日期的工具,出了对日期进行格式化以外,你还能够对日期进行操作,验证,解析。其在github的star数有1.9W+,比众所周知的Express(github star是1.7w+)还多一点。这么优秀的框架实在是相见恨晚。

    Skipper

    Streaming multi-uploads for Sails/Express - supports disk, S3, gridfs, and custom file adapters

    Skipper是一款Sails衍生的处理多文件上传的组件,支持上传文件到本地或者远端服务器,如果默认adapter没有你需要的服务,你还能够自定义一套adapter满足你的需求。就像我为了把文件上传到又拍云而定制了的adapter: skipper-upyun

    Node-fs-extra

    Node.js: extra methods for the fs object.

    Node-fs-extra提供了一些额外的fs没有的函数,如果Nodejs自带的fs模块,还不能满足你在进行文件操作的使用,或者用着不顺心。不妨来node-fs-extra找一下有没有你想要的解决方案。

    Mocha

    mocha - simple, flexible, fun Javascript test framework for node.js & the browser. (BDD, TDD, QUnit styles via interfaces)

    Nodejs单元测试哪家强?

    mocha,mocha,似魔鬼的步伐~~yo!

    Should

    BDD style assertions for node.js -- test framework agnostic

    BDD风格的断言模块,旨在让编程像说白话(至少在测试断言上)。

    Supertest

    Super-agent driven library for testing node.js HTTP servers using a fluent API

    如果测试的时候,需要HTTP请求呢?找Supertest吧,和Should同一个作者,TJ大神,你值得信赖。

    PM2

    Production process manager for Node.JS applications. Perfectly designed for microservice architecture.

    Nodejs单线程的特性,意味着,如果你的某一行代码阻塞了,你的整个程序都会崩溃。人非圣贤,孰能无过,没有人能保证自己的写的代码永无BUG(难道要在文件头加上无BUG神兽?)。在生产环境下,如果程序挂了怎么办?让它自动重启呗。
    PM2就是一款解决这种问题的工具,当然,作为一个进程管理器,它的作用不仅仅如此。

    Markdown-js

    A Markdown parser for Javascript

    Markdown时下越来越受欢迎了,实质上markdown最终是转换成HTML格式才能显示于网页的。而markdown-js则是把markdown格式的文本转化成HTML格式的工具。但是,如果从HTML格式的文本转化成Markdown格式的文本呢?markdown-js好像不支持,那就用to-markdown吧。

    后话

    本文的描述及用语,仅基于本人目前的水平而写,难免有所局限和措辞不当之处。如果有BUG或者不当之处,欢迎指出与吐槽。

    「注:本文会不间断更新」。

    15 条回复    2015-03-23 16:05:37 +08:00
    ETiV
        1
    ETiV  
       2015-01-29 22:25:33 +08:00
    mark
    immjun
        2
    immjun  
       2015-01-29 22:54:19 +08:00
    赞 楼主什么时候开始转 io.js
    xiezefan
        3
    xiezefan  
       2015-01-30 01:19:48 +08:00 via Android
    碉堡了少年, 深夜刷v2ex竟然看到你
    xiezefan
        4
    xiezefan  
       2015-01-30 01:24:30 +08:00 via Android
    少了大名鼎鼎的 async 少年
    任务调度的 later, node-sechedule,agenda
    typcn
        5
    typcn  
       2015-01-30 01:27:50 +08:00
    mark 感谢已发送
    yyfearth
        6
    yyfearth  
       2015-01-30 06:15:11 +08:00
    确实不错 发现有一些已经star过了
    Arrowing
        7
    Arrowing  
       2015-01-30 10:33:22 +08:00
    都是好东西,Moment的star出奇的高!

    弱弱地问一句,楼主都用过以上的库吗?都熟悉吗?
    JerryC
        8
    JerryC  
    OP
       2015-01-30 10:46:58 +08:00
    @xiezefan 嚓,少年你真是无所不在啊,但是...第三个是否写错了?node-sechedule or node-schedule?
    JerryC
        9
    JerryC  
    OP
       2015-01-30 10:59:23 +08:00
    @Arrowing 几乎都用过,都是我在日常开发中用到的模块。
    jarlyyn
        10
    jarlyyn  
       2015-01-30 11:06:52 +08:00 via Android
    大多都用过。orm的选择和楼主不一样。还有一个later也挺喜欢用的。还有个request.js
    hxtheone
        11
    hxtheone  
       2015-01-30 11:09:26 +08:00
    mark,太赞了~
    shanelau
        12
    shanelau  
    PRO
       2015-01-30 17:36:47 +08:00
    怎么感觉每一个包我都用过,原来是你
    makuta
        13
    makuta  
       2015-02-01 10:06:58 +08:00
    太赞了
    hkongm
        14
    hkongm  
       2015-02-05 10:52:02 +08:00
    lodash对比underscore有啥区别或者特点不?
    yymdude
        15
    yymdude  
       2015-03-23 16:05:37 +08:00
    怎麽有Express?
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     5424 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 34ms UTC 01:21 PVG 09:21 LAX 18:21 JFK 21:21
    Do have faith in what you're doing.
    ubao snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86