Node.js学习总结(一)

简介

Node的目标是提供一个简单的构建网络程序的方法。在下面的"helloworld"例子中,很多客户端连接可以被并行地处理。Node告诉操作系统(通过epoll, kqueue, /dev/poll,或select)在新连接创建时通知它,然后它进入睡眠状态。如果有新的连接,它就会执行回调函数。每个连接仅仅是一个很小的堆申请。

Node的处理模型和现在常用的使用操作系统线程的并发模型不同。基于线程的网络相对效率低并且难以使用。与传统线程模型对每个新连接都要申请2M的线程堆栈相比,Node在高负载下表现出更好的内存效率。而且,Node用户不必关心进程死锁,因为Node里根本没有锁的概念。Node几乎没有直接执行IO操作的函数,进程也就永不阻塞,因为没有阻塞,即使不是专家也能编写快速的系统。

Node在设计上受Ruby的EventMachine和Python的Twisted影响并且和它们有些像。Node更注重事件模型,它将事件循环作为语言结构而不是类库。在其它的系统中,一般会有一个阻塞的调用来开始事件循环,在脚本的开始使用回调函数定义一个行为,然后在最后通过调用阻塞的调用(例如EventMachine::run())来启动服务。Node没有这样的启动事件循环的函数调用,它执行完输入脚本后自动进入事件循环,这有点像浏览器的JavaScript,事件循环对用户隐藏了。

windows下安装使用

1.安装

在http://node-js.prcn.co.cc/ 下载最新的“complete”包,解压到任意文件夹,例如:c:/node,该部分为使用二进制包方式(较为简单),可直接使用,手动安装方式请参考:

http://blog.csdn.net/sdhustyh/article/details/6583250

2.示例脚本准备

编写以下脚本:

var http =require('http');

http.createServer(function(req, res) {

res.writeHead(200, {'Content-Type':'text/plain'});

res.end('Hello World\n');

}).listen(1337,"127.0.0.1");

console.log('Serverrunning at http://127.0.0.1:1337/');

保存该内容至example.js放在c:/node/bin目录下

3.运行

使用命令行导航到c:/node/bin,使用以下命令启动服务

node example.js

可以看到如下提示:Serverrunning at http://127.0.0.1:1337/, 代表服务已启动。

4.访问http://127.0.0.1:1337/可看到“hello world”

总结

Node是一个服务器端JavaScript解释器,它将改变服务器应该如何工作的概念。它的目标是帮助程序员构建高度可伸缩的应用程序,编写能够处理数万条同时连接到一个(只有一个)物理机的连接代码。

Node非常适合以下情况:您预计可能有很高的流量,而在响应客户端之前服务器端逻辑和处理所需不一定是巨大的

Node不适合在以下场合使用:1.动态创建的网页,2.关系型数据库频繁操作应用。

注:本文整理自node.js官方网站翻译以及一些专家的文章。

你可能感兴趣的:(Node.js学习总结(一))