Nodejs - Backend Development Bookmarks
Nhiều bạn hỏi, tôi note lại một số bài viết hữu ích về nodejs backend, từ các hướng dẫn cài đặt, npm, database, các frameworks, socket, security, testing, ... tất tần tật để có thể dễ dàng tra cứu. Danh sách này cũng có thể nói gần như overview được hết các kiến thức về Nodejs backend.
- node.js
- How To Install Node.js on an Ubuntu 14.04 server
- Installing Node.js via package manager
- Node.js HOWTO: Install Node+NPM as user (not root) under Unix OSes
- Felix's Node.js Guide
- Creating a REST API using Node.js, Express, and MongoDB
- Node Cellar Sample Application with Backbone.js, Twitter Bootstrap, Node.js, Express, and MongoDB
- JavaScript Event Loop
- Node.js for PHP programmers
-
State of Node
-
Experiences
-
Experiences with Node.js: Porting a RESTful Service Written in Java
-
Peformance and V8 Debate (dated)
-
On Bruno's Concern About the Current Coupling of node.js and V8
-
Frameworks
-
Express.js
-
Hello Boilderplate is a bootstrap web app including Bower, Grunt, Twitter Bootstrap, jQuery and EJS.
-
Hapi: A rich framework for building restful API services.
-
Sails.js: Realtime MVC Framework for Node.js
-
MEANjs - Open-Source Full-Stack Solution For MEAN Applications
-
Queues and Workers
-
Distribute processing tasks to child processes with an über-simple API and baked-in durability & custom concurrency options. Available in npm as worker-farm.
-
Kue is a feature rich priority job queue for node.js backed by redis. A key feature of Kue is its clean user-interface for viewing and managing queued, active, failed, and completed jobs.
-
Databases
-
node-pool: Generic resource pooling for node.js
-
node-msgpack is an addon for NodeJS that provides an API for serializing and de-serializing JavaScript objects using the MessagePack library. The performance of this addon compared to the native JSON object is quite good, and the space required for serialized data is far less than JSON.
-
Bookshelf is a promise based ORM for Node.js, built on Knex query builder. It extends the Model & Collection foundations of Backbone.js, providing transaction support, eager/nested-eager relation loading, and support for one-to-one, one-to-many, and many-to-many relations.
-
Content Management Systems
-
Static Site Generators
-
Hexo: A fast, simple & powerful blog framework, powered by Node.js.
-
Punch: Punch is a simple, intuitive web publishing framework that will delight both designers and developers built on Node.js.
-
jott: Minimum viable blog generator. Markup in Jade. Static HTML output.
-
CLI
-
global-npm-seed: Learn to create a global npm module with a CLI interface.
-
Shell.js is a portable (Windows included) implementation of Unix shell commands on top of the Node.js API. You can use it to eliminate your shell script's dependency on Unix while still keeping its familiar and powerful commands.
-
Dependency Injection
-
Generic resource pool. Can be used to reuse or throttle expensive resources such as database connections.
-
Error Handling
-
node-errormailer:Sending email for each error in your node app was never easier! It fully support connect and express
-
node-bunyan: a simple and fast JSON logging module for node.js services
-
Events
-
Comparison between different Observer Pattern implementations
-
Image Manipulation
-
node-gd: GD graphic library (libgd) C++ bindings for Node.js.
-
node-image: This is a node.js module that unifies node-png, node-gif and node-jpeg modules.
-
node-o3-canvas: This is a HTML5 spec Canvas component for NodeJS based on LibAGG and Freetype. It is implemented using the Ajax.org O3 component system, and should be easy to extend and fix.
-
node-canvas: Node canvas is a Cairo backed Canvas implementation for NodeJS.
-
node-vips: A node.js module that provides access to the VIPS library and Exiv2 in order to resize and rotate images.
-
node-imagemagick: Imagemagick module for NodeJS
-
node-imageinfo: A package that returns information about an image or flash file such as type, dimensions etc.
-
js-imagediff: JavaScript / HTML5 Canvas based image diff utility.
-
gm: GraphicsMagick for node.
-
Internationalisation
-
Websockets
-
Authentication
-
Testing
-
APIeasy: A fluent (i.e. chainable) syntax for generating vows tests against RESTful APIs.
-
Expresso is a JavaScript TDD framework written for nodejs. Expresso is extremely fast, and is packed with features such as additional assertion methods, code coverage reporting, CI support, and more.
-
Jasmine is a behavior-driven development framework for testing JavaScript code. It does not depend on any other JavaScript frameworks. It does not require a DOM. And it has a clean, obvious syntax so that you can easily write tests.
-
Frisby is a REST API testing framework built on node.js and Jasmine that makes testing API endpoints easy, fast, and fun.
-
Mocha is a feature-rich JavaScript test framework running on node and the browser, making asynchronous testing simple and fun. Mocha tests run serially, allowing for flexible and accurate reporting, while mapping uncaught exceptions to the correct test cases. Hosted on GitHub.
-
lab is a simple test utility for node. Unlike other test frameworks, lab does not attempt to cover many use cases or provide rich functionality and extensibility. In fact, this project started as a fork off mocha and was repeatedly refactored until only the very basic functionality was left which was then rewritten into a handful of functions.
-
should is an expressive, readable, test framework agnostic, assertion library for node. It extends the Object prototype with a single non-enumerable getter that allows you to express how that object should behave.
-
Chai is a BDD / TDD assertion library for node and the browser that can be delightfully paired with any javascript testing framework.
-
Super-agent driven library for testing HTTP servers
-
Joe is a javascript testing framework that actually works. Unlike Mocha, we won't die on you abruptly when executing dynamically created tests and are always able to associate the correct test to the correct corresponding test suite. Switching from Mocha is trivial and only takes a few minutes.
-
Web Scraping
-
Connect
-
Streams
-
Streams, Pipes and Mega Pipes: a presentation by Felix Geisendörfer
-
Understanding Stream: Article at nodemanual.org
-
Package Management
-
parcel is easy package management using a file server and path conventions, with built in support for Amazon S3. It is designed to encode package metadata, including name, version and OS within a path. The conventions allow this metadata to be queried, without the need for a database.
-
npm
-
package.json: a cheat sheet for writing npm package files.
-
npm cheatsheet by nodejitsu
-
Refactoring
-
Routing
-
express-resource provides resourceful routing to express.
-
journey: liberal JSON-only HTTP request routing for node.
-
urlrouter: http url router,
connect
missing router middleware -
connect-rest: Restful web services middleware for connect node.js
-
Security
-
Authentication
-
Authentication and authorization (password, facebook, & more) for your node.js Connect and Express apps.
-
Authorisation
-
A simple route-based ACL component for express.js. This won't handle actual authentication, you can use everyauth for that.
-
This module provides a minimalistic ACL implementation inspired by Zend_ACL
-
XOAuth2 token generation with node.js
-
OAuth Modules for Node.js - Supporting RSA, HMAC, PLAINTEXT, 2,3-Legged, 1.0a, Echo, XAuth, and 2.0
-
General
-
helmet: Collection of middleware to implement various security headers for Express / Connect
-
node-http-signature: This document describes a way to add origin authentication, message integrity, and replay resistance to HTTP REST requests. It is intended to be used over the HTTPS protocol.
-
Cryptography
-
Performance
-
Using secure client-side sessions to build simple and scalable Node.JS applications
-
Optimising NginX, Node.JS and networking for heavy workloads
-
loader.io is a free load testing service that allows you to stress test your web-apps/apis with thousands of concurrent connections.
-
Source Control
-
Networks