My Toolkit of Node.js

原文連接:BlueSun | My Toolkit of Node.jsjavascript

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,可見維護者之誠意。java

Waterline

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

Waterline是從Sails框架衍生出來的Nodejs平臺下的ORM,除了支持常見的mysql、mongodb,還支持PostgreSQL、Redis、Memory、Disk等等mysql

Bookshelf

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

與Waterline相似,但做爲同類產品且被Ghost選擇標配之一的Bookshelf必然有它的特別之處,仍待君細細品來。github

Node-Soap

A SOAP client and server for node.js.redis

對於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的樞紐sql

Passport

Simple, unobtrusive authentication for Node.js.mongodb

若是你的站點想快速創建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或者不當之處,歡迎指出與吐槽。


若是本文對您有用
請不要吝嗇大家的Follow與Start
這會大大支持咱們繼續創做

「Github」
MZMonster :@MZMonster
JC_Huang :@JerryC8080

相關文章
相關標籤/搜索