收集了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

參考文献

NodeJS经常使用模块收集的更多相关文章

  1. 关于Nodejs的多进程模块Cluster

    关于Nodejs的多进程模块Cluster   前述 我们都知道nodejs最大的特点就是单进程.无阻塞运行,并且是异步事件驱动的.Nodejs的这些特性能够很好的解决一些问题,例如在服务器开发中,并 ...

  2. Nodejs中cluster模块的多进程共享数据问题

    Nodejs中cluster模块的多进程共享数据问题 前述 nodejs在v0.6.x之后增加了一个模块cluster用于实现多进程,利用child_process模块来创建和管理进程,增加程序在多核 ...

  3. nodejs的require模块及路径

    在nodejs中,模块大概可以分为核心模块和文件模块. 核心模块是被编译成二进制代码,引用的时候只需require表示符即可,如(require('net')). 文件模块,则是指js文件.json文 ...

  4. 使用nodejs的net模块创建TCP服务器

    使用nodejs的net模块创建TCP服务器 laiqun@msn.cn Contents 1. 代码实现 2. 使用telnet连接服务器测试 3. 创建一个TCP的client 1. 代码实现 ; ...

  5. 使用nodejs的http模块创建web服务器

    使用nodejs的http模块创建web服务器 laiqun@msn.cn Contents 1. web服务器基础知识 2. Node.js的Web 服务器 3. 代码实现 1. web服务器基础知 ...

  6. Nodejs的http模块

    一.http服务器    我们知道传统的HTTP服务器是由Aphche.Nginx.IIS之类的软件来搭建的,但是Nodejs并不需要,Nodejs提供了http模块,自身就可以用来构建服务器,例如: ...

  7. node.js零基础详细教程(7.5):mongo可视化工具webstorm插件、nodejs自动重启模块Node Supervisor(修改nodejs后不用再手动命令行启动服务了)

    第七章 建议学习时间4小时  课程共10章 学习方式:详细阅读,并手动实现相关代码 学习目标:此教程将教会大家 安装Node.搭建服务器.express.mysql.mongodb.编写后台业务逻辑. ...

  8. nodeJS里面的模块

    this 打开cmd,执行如下命令 nodeconsole.log(this); 输出如上信息,表示this是global,每个电脑的配置信息不一样的话,可能会有所差别的. 然后新建一个文件,写下如下 ...

  9. nodejs 使用 js 模块

    nodejs 使用 js 模块 Intro 最近需要用 nodejs 做一个爬虫,Google 有一个 Puppeteer 的项目,可以用它来做爬虫,有关 Puppeteer 的介绍网上也有很多,在这 ...

随机推荐

  1. PHP常见问题总结

    1.为什么会出现这种情况?端口什么的都设置正确了. 解决方法: 请将本机的IIS服务关闭,开启Apache服务.IIS服务的关闭方法可参见 https://jingyan.baidu.com/arti ...

  2. ListView用法

    public class MainActivity extends Activity implements OnItemClickListener, OnScrollListener { privat ...

  3. (转)金蝶KIS迷你版、标准版在查询数量金额明细账时提示“发生未知错误,系统当前操作被取消,请与金蝶公司联系”

    金蝶KIS迷你版.标准版在查询数量金额明细账时提示“发生未知错误,系统当前操作被取消,请与金蝶公司联系” 2013-07-10 12:17:51|  分类: 金蝶专题|举报|字号 订阅       金 ...

  4. CommHelper

    18位流水号: public static string GenerateTransId(int i) { string transId = DateTime.Now.ToString("y ...

  5. (转)淘淘商城系列——使用solrj来测试索引库

    http://blog.csdn.net/yerenyuan_pku/article/details/72892280 我们使用solrj来操作索引库,一般习惯先建一个单元测试类测试下增删改查方法是否 ...

  6. Android Measure 体系简单总结

    Android对View的测量是半协商半强制半模糊半具体的. 测量过程中的两套尺寸体系:  [半强制] ParentView**约束ChildView: **MeasureSpec(通过measure ...

  7. UI设计四要素

    信息.样式.布局.交互. +层次: UI所有的工作都可以从这几个方面入手.

  8. 少啰嗦!一分钟带你读懂Java的NIO和经典IO的区别

    1.引言 很多初涉网络编程的程序员,在研究Java NIO(即异步IO)和经典IO(也就是常说的阻塞式IO)的API时,很快就会发现一个问题:我什么时候应该使用经典IO,什么时候应该使用NIO? 在本 ...

  9. 梦想MxWeb3D,三维CAD协同设计平台 2019.04.09更新

    SDK开发包下载地址: http://www.mxdraw.com/ndetail_10140.html 在线演示网址: http://www.mxdraw.com:3000/ 1.  增加上传dwg ...

  10. 微服务网关从零搭建——(一)创建测试api以及api自动注入consul

    本系列编写目的纯属个人开发记录  以下代码均为demo级 如有需要 请自行优化 代码完整包由于公司电脑加密 无法上传整包的demo文件 consul 开发环境简易处理 consul 下载地址 : ht ...