NodeJS经常使用模块收集

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

參考文献

时间: 2024-10-12 20:16:39

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

nodejs的require模块及路径

在nodejs中,模块大概可以分为核心模块和文件模块. 核心模块是被编译成二进制代码,引用的时候只需require表示符即可,如(require('net')). 文件模块,则是指js文件.json文件或者是.node文件.在引用文件模块的时候后要加上文件的路径:/-/-/xxx.js表示绝对路径../xxx.js表示相对路径(同一文件夹下的xxx.js),../表示上一级目录.如果既不加/-/.../又不加./的话,则该模块要么是核心模块,要么是从一个node_modules文件夹加载. 对于

如何编写package.json配置NodeJS项目的模块声明

在NodeJS项目中,用package.json文件来声明项目中使用的模块,这样在新的环境部署时,只要在package.json文件所在的目录执行 npm install 命令即可安装所需要的模块. package.json文件中可配置的项有:名称(name).应用描述(description).版本号(version).应用的配置项(config).作者(author).资源仓库地址(repository).授权方式(licenses).目录(directories).应用入口文件(main)

nodejs学习(模块的简单了解)

1.模块模块(Module)是nodejs最重要的支柱,开发一个具有一定规范的程序不可能只用一个文件, 通常我们需要把各个功能拆分,封装,然后在组合在一起,模块正是为了现在这种方式而诞 生的.在浏览器的javascript中,脚本模块的拆分和组合通常情况下我们都使用Html的 Script标签来实现,但是nodejs给我们提供了require这个函数来调用其他的模块.-----------------------------------------------------------------

nodejs笔记2-http模块

nodejs 的模块的操作都是异步的:fs对文件的操作,... 1.引入http模块,require , createServer ,listen  .... code: // > node  http.js var http = require('http');//引入http模块var server = http.createServer(function(request,response){ console.log('welcome here'+request.url);//控制台  re

nodejs笔记2-mysql模块

1.mysql模块 不是nodejs的官方模块,是属于第三方的模块 > npm install mysql    //自动安装包括mysql模块依赖的其它的包 其实这安装的就是mysql的一个客户端, 2.  code: 返回的值: err 如果为null ,操作成功 ,否则失败, 操作成功返回的data数据 是object类型,需要使用 JSON.stringify(data)转换成json格式的字符串. var mysql = require('mysql');//引入http模块 var

python模块收集

shutil:用于拷贝目录树.删除目录树,类似os.remove/os.rmdir fnmatch:通过shell glob去匹配字符串.文件名 python模块收集

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

Nodejs中cluster模块的多进程共享数据问题 前述 nodejs在v0.6.x之后增加了一个模块cluster用于实现多进程,利用child_process模块来创建和管理进程,增加程序在多核CPU机器上的性能表现.本文将介绍利用cluster模块创建的多线程如何共享数据的问题. 进程间数据共享 首先举个简单的例子,代码如下: var cluster = require('cluster'); var data = 0;//这里定义数据不会被所有进程共享,各个进程有各自的内存区域 if

关于Nodejs的多进程模块Cluster

关于Nodejs的多进程模块Cluster 前述 我们都知道nodejs最大的特点就是单进程.无阻塞运行,并且是异步事件驱动的.Nodejs的这些特性能够很好的解决一些问题,例如在服务器开发中,并发的请求处理是个大问题,阻塞式的函数会导致资源浪费和时间延迟.通过事件注册.异步函数,开发人员可以提高资源的利用率,性能也会改善.既 然Node.js采用单进程.单线程模式,那么在如今多核硬件流行的环境中,单核性能出色的Nodejs如何利用多核CPU呢?创始人Ryan Dahl建议,运行多个Nodejs

Nodejs中关于模块的总结

关于Nodejs中的模块 概念 Nodejs在ECMAScript的基础上扩展并封装了许多高级特性,如文件访问.网络访问等,使得Nodejs成为一个很好的Web开发平台.基于Nodejs这个平台将Web开发常用的一些功能进行封装,称为模块. 1.系统模块 1. 模块被加载后才能使用,Nodejs提供了全局的函数require加载模块. 1.os模块 获取当前操作系统信息 2.fs模块 文件读写操作 3.path模块 路径处理 2. require加载模块路径 相对路径: 如 ./ 或 ../ 绝