什么是NodeJS
NodeJS是脚本语言,脚本语言都需要一个解析器才能运行。对于写在HTML页面里的JS,浏览器充当了解析器的角色。而对于需要独立运行的JS,NodeJS就是一个解析器。
每一种解析器都是一个运行环境,不但允许JS定义各种数据结构,进行各种计算,还允许JS使用运行环境提供的内置对象和方法做一些事情。例如运行在浏览器中的JS的用途是操作DOM,浏览器就提供了document之类的内置对象。而运行在NodeJS中的JS的用途是操作磁盘文件或搭建HTTP服务器,NodeJS就相应提供了fs、http等内置对象。
选择NodeJS的理由
.动态语言:开发效率非常高,并有能力构建复杂系统,如ql.io。
.性能和I/O负载:Nodejs非常好的解决了IO密集的问题,通过异步IO来实现。
.连接的内存开销:每个Node.js进程可以支持超过12万活跃的连接,每个连接消耗大约2K的内存。
.操作性:实现了Nodejs对于内存堆栈的监控系统。
NodeJS应用场景
1.Web开发:Express + EJS + Mongoose/MySQL
express 是轻量灵活的Nodejs Web应用框架,它可以快速地搭建网站。Express框架建立在Nodejs内置的Http模块上,并对Http模块再包装,从而实际Web请求处理的功能。
ejs是一个嵌入的Javascript模板引擎,通过编译生成HTML的代码。
mongoose 是MongoDB的对象模型工具,通过Mongoose框架,可以进行访问MongoDB的操作。
mysql 是连接MySQL数据库的通信API,可以进行访问MySQL的操作。
通常用Nodejs做Web开发,需要3个框架配合使用,就像Java中的SSH。
2.Web聊天室(IM):Express + Socket.io
socket.io一个是基于Nodejs架构体系的,支持websocket的协议用于时时通信的一个软件包。socket.io 给跨浏览器构建实时应用提供了完整的封装,socket.io完全由javascript实现。
3.Web爬虫:Cheerio/Request
cheerio 是一个为服务器特别定制的,快速、灵活、封装jQuery核心功能工具包。Cheerio包括了 jQuery核心的子集,从jQuery库中去除了所有DOM不一致性和浏览器不兼容的部分,揭示了它真正优雅的API。Cheerio工作在一个非常简单,一致的DOM模型之上,解析、操作、渲染都变得难以置信的高效。基础的端到端的基准测试显示Cheerio大约比JSDOM快八倍(8x)。Cheerio封装了@FB55兼容的htmlparser,几乎能够解析任何的 HTML 和 XML document。
4.Web博客:Hexo
Hexo 是一个简单地、轻量地、基于Node的一个静态博客框架。通过Hexo我们可以快速创建自己的博客,仅需要几条命令就可以完成。
发布时,Hexo可以部署在自己的Node服务器上面,也可以部署github上面。对于个人用户来说,部署在github上好处颇多,不仅可以省去服务器的成本,还可以减少各种系统运维的麻烦事(系统管理、备份、网络)。所以,基于github的个人站点,正在开始流行起来….
5.Web论坛: nodeclub
Node Club 是用 Node.js 和 MongoDB 开发的新型社区软件,界面优雅,功能丰富,小巧迅速, 已在Node.js 中文技术社区 CNode 得到应用,但你完全可以用它搭建自己的社区。
论坛链接地址:https://cnodejs.org
6.其他应用
REST开发:Restify
Web幻灯片:Cleaver
前端包管理平台: bower.js
OAuth认证:Passport.....等等
安装
1.NodeJS提供了一些安装程序,都可以在nodejs.org这里下载并安装。
2.通过brew安装(brew 又叫Homebrew,是Mac OSX上的软件包管理工具,能在Mac中方便的安装软件或者卸载软件, 只需要一个命令)
i>.首先安装brewruby -e "$(curl -fsSL https://raw.github.com/Homebrew/homebrew/go/install)”
ii>.通过brew安装node brew install node
更新
node.js 一行命令 版本升级 npm install -g n # 显示错误 所以用 sudo npm install -g n 来代替
使用sudo命令
NodeJS尝鲜
创建http服务器
创建一个app.js
var http = require('http');
http.createServer(function(req, res) {
res.writeHead(200, {'Content-Type': 'text/html'});
res.write('<h1>Node.js 我们已经有服务了,</h1>');
res.end('<p>Hello World</p>');
}).listen(3000);
console.log("Http server is listening at port 3000.”);
在终端运行
进入js 所在的文件夹 cd 文件夹名字
XJdeMacBook-Pro:node xiaojun$ node app.js
Http server is listening at port 3000.
在浏览器浏览 http://127.0.0.1:3000