收集了NodeJS开发中经常使用的一些模块。

MVC框架 - Express

Express 是轻量灵活的Nodejs Web应用框架。它能够高速地搭建站点。

Express框架建立在Nodejs内置的Http模块上,并对Http模块再包装。从而实际Web请求处理的功能。它支持多种前端模板,如Jade, EJS等。它是T.J大神的作品,只是已经交由其他团队维护了。

Koa是T.J大神的另外一个作品,号称下一代NodeJS web框架。使用 koa 编写 web 应用。通过组合不同的 generator,能够免除反复繁琐的回调函数嵌套。并极大地提升经常使用错误处理效率。

Koa 不在内核方法中绑定不论什么中间件。它只提供了一个轻量优雅的函数库,使得编写 Web 应用变得得心应手。须要注意的是:koa 依赖支持 generator 的 Node
环境,准确来说,是 node >= 0.11.9 的环境。

安装完毕后,应确保使用 $ node app.js --harmony 或(--harmony-generators) 即,harmony 模式执行程序。个人认为假设是正式产品中还是用Express比較靠谱。

Rest开发 - Restify

restify 是一个基于Nodejs的REST应用框架。支持server端和client。restify比起express更专注于REST服务,去掉了express中的template, render等功能,同一时候强化了REST协议使用,版本号化支持,HTTP的异常处理。

hapi是一个用来构建基于 Node.js 的应用和服务的富框架。使得开发人员把重点放在便携可重用的应用逻辑而不是构建架构。内建输入验证、缓存、认证和其它 Web 应用开发经常使用的功能,用来开发rest代码也是一个不错的选择。

前端模板 - EJS

EJS是一个功能强大又比較easy使用的前端模板,Express对EJS支持比較好。它的语法比較接近前端开发者的使用方式。另外名气比較大的前端模板是Jade,它和Express是同一个作者开发的,Express默认用的就是Jade模板,可是它的语法更接近后端语言的语法,前端开发者非常多时候难以适应,可是它的功能确实非常强大。

数据库驱动 - Mongoose

MongoDB和NodeJS应该是最佳搭档了,而Mongoose是MongoDB的对象模型工具。通过Mongoose框架,能够进行很方便的訪问MongoDB的操作。当然假设你对性能要求很高的话。也能够考虑使用mongodb,它功能相对较少,比較底层一些,事实上Mongoose就是基于它构建的。

其他:redismysql

Web Socket - Socket.IO

NodeJS的一个主要长处是高并发,因此NodeJS是Web Socketserver的理想选择,而Socket.IO则Socket模块的不二选择,能够用于构建聊天室、客服系统等。

Socket.IO不仅提供了server端代码,还提供了前端JS代码。能够很方便的进行Web Socket开发,同一时候它兼容那些不支持Web Socket的浏览器。

日志管理 - Log4js

类似于JAVA中的log4j,具有coloured console logging、能够设置输出等级等功能。简单易用。假设没有复杂需求足够使用了。

winston是一个功能更强大也更复杂的日志模块,人气比較高,对功能有追求的能够看看这个模块。

HTTP调用 Request

能够理解为一个简化的CURL模块,建立各种HTTP请求,支持授权验证。事实上功能还是许多的,基本满足绝大部分需求。眼下在NPM模块排行前几名。

异步流程控制 - Async

NodeJS中大量的异步callback嵌套预计让许多人头疼,尤其是多个异步函数要求一定的调用顺序时更是让代码失控,Async能够很好的解决这些问题,它能够使异步流程同步化。Q是第二种很不错的选择,它是实现了promises接口。

部署 - forever

forever可以看做是一个nodejs的守护进程。可以启动。停止。重新启动我们的app应用,执行稳定。支持高并发。启动/停止命令简单,支持热部署。宕机重新启动,监控界面和日志。集群环境。

pm2是一个带有负载均衡功能的Node应用的进程管理器。当你要把你的独立代码利用所有的server上的所有CPU,并保证进程永远都活着。0秒的重载。

假设你想要从操作系统的层次来解决NodeJSserver管理问题。能够參考:Linux系统服务upstart

当然开发时可以使用supervisor启动服务。它可以监控文件。当有文件更新时自己主动重新启动服务。事实上Forever也有这个功能。

项目管理

grunt是一个自己主动化的构建工具。对于须要重复重复的任务。比如压缩(minification)、编译、单元測试、linting等,自己主动化工具能够减轻你的劳动。简化你的工作。

当你正确配置好了任务。任务执行器就会自己主动帮你或你的小组完毕大部分无聊的工作。而且它有大量的插件能够使用。

我主要用它作前端的自己主动化处理工作。

bower是twitter的又一个开源项目。使用nodejs开发,用于web包管理。作为一个js依赖管理的工具,提供一种理想包管理方式,借助了npm的一些思想,为我们提供一个舒服的开发环境。

yeoman是Google的团队和外部贡献者团队合作开发的,他的目标是通过Grunt(一个用于开发任务自己主动化的命令行工具)和Bower(一个HTML、CSS、Javascript和图片等前端资源的包管理器)的包装为开发人员创建一个易用的工作流。Yeoman的目的不仅是要为新项目建立工作流,同一时候还是为了解决前端开发所面临的诸多严重问题,比如零散的依赖关系。

定时任务 - Cron

cron是一个小巧的定时任务管理模块,能够满足我们绝大部分需求。它支持标准的cron patterns,熟悉linux cron tab的语法就能够非常easy上手。

另外一个名气比較大且功能比較强大的定时模块是Later,对于功能要求比較高的可用用它,later的缺点是有点复杂。不像cron仅仅要拿来就会用了。

工具包

underscore是一个JS工具库,主要提供了对数组。对象,函数等一些基础工具函数,能够同一时候在浏览器和NodeJS环境中执行。

建议在每一个项目中使用。

moment是一个日期工具库,主要提供了对日期的解析,验证。操作和格式化等。假设须要对日期作较多的操作或比較复杂的操作,则它是一个不错的选择。毕竟JS自带的Date功能太弱了。

Connect是一系列的中间件的集合,包含日志,session, cookie, body parser等。它做了大量HTTP相关的基础性的工作,Express框架就依赖它进行工作的。

单元測试

Mocha,Karma,Jasmine

參考文献

最新文章

  1. SQL通过ContentTypeID找使用了内容类型的列表库
  2. 枚举类型Enum
  3. ARM寻址方式,王明学learn
  4. Android加载大图片OOM异常解决
  5. 加密---公钥&密钥
  6. firefox同步ajax请求报错的问题 A parameter or an operation is not supported by the underlying object
  7. Linux Kernel 释放后重用内存损坏漏洞
  8. Linux中断分层技术
  9. vb将窗体中的控件或某种颜色透明
  10. CodeForces 670C Cinema
  11. ccf 目录格式转换
  12. 【Javascript】JS的异步操作,浏览器的多线程间的协作
  13. mybatis中动态SQL之trim详解
  14. Android动态设置纯色图标的颜色
  15. MediaCodec在Android视频硬解码组件的应用
  16. MySQL索引与Index Condition Pushdown(employees示例)
  17. C/C++语言中闭包的探究及比较
  18. AtomicBoolean
  19. angular学习笔记(二十七)-$http(5)-使用$http构建RESTful架构
  20. 很好的hadoop学习博客实际操作训练(旧版本)

热门文章

  1. 联想 Z5S(L78071)免解锁BL 免rec 保留数据 ROOT Magisk Xposed 救砖 ZUI 10.5.370
  2. RPC——笔记
  3. Farseer.net轻量级开源框架 中级篇:事务的使用
  4. Java基础(八)--String(源码)、StringBuffer、StringBuilder
  5. form表单传输多余参数
  6. Number Theory Problem(The 2016 ACM-ICPC Asia China-Final Contest 找规律)
  7. Linux 安装 MySQL 详解(rpm 包)
  8. Nginx + Lets'encrypt 实现HTTPS访问七牛空间资源
  9. buf.writeFloatBE()函数详解
  10. PAT 1085 PAT单位排行