Node.js简介

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

Node的处理模型和现在常用的使用操作系统线程的并发模型不同。基于线程的网络相对效率低并且难以使用。与传统线程模型对每个新连接都要申请2M的线程堆栈相比,Node在高负载下表现出更好的内存效率。而且,Node用户不必关心进程死锁,因为Node里根本没有锁的概念。Node几乎没有直接执行IO操作的函数,进程也就永不阻塞,因为没有阻塞,即使不是专家也能编写快速的系统。
Node在设计上受Ruby的Event Machine和Python的Twisted影响并且和它们有些像。Node更注重事件模型,它将事件循环作为语言结构而不是类库。在其它的系统中,一般会有一个阻塞的调用来开始事件循环,在脚本的开始使用回调函数定义一个行为,然后在最后通过调用阻塞的调用(例如EventMachine::run())来启动服务。Node没有这样的启动事件循环的函数调用,它执行完输入脚本后自动进入事件循环,这有点像浏览器的JavaScript,事件循环对用户隐藏了。

译注:一句话,node.js 是一种事件驱动地编写并发网络程序的脚本语言,语法与JavaScript相似。

下载源代码:
$ wget http://nodejs.org/dist/node-v0.2.6.tar.gz

编译安装:
$ tar xf node-v0.2.6.tar.gz
$ cd node-v0.2.6
$ ./configure
$ make
$ sudo make install

示例:
1. hello.js
$ cat> hello.js<<EOF
console.log("Hello, Node")
EOF
$ node hello.js
Hello, Node
2. httpserver.js
$ cat> httpserver.js <<EOF
var http = require('http');
http.createServer(function (req, res) {
res.writeHead(200, {'Content-Type': 'text/plain'});
res.end('Hello World/n');
}).listen(8124, "127.0.0.1");
console.log('Server running at http://127.0.0.1:8124/');
EOF
hankjin@jnfdaj:~/node$ node httpserver.js &
hankjin@jnfdaj:~/node$ wget http://127.0.0.1:8124/
hankjin@jnfdaj:~/node$ cat index.html
Hello World
3. tcpserver.js
hankjin@jnfdaj:~/node$ cat > tcpserver.js <<EOF
var net = require('net');
net.createServer(function (socket) {
socket.write("Echo server/r/n");
socket.on("data", function (data) {
socket.write(data);
});
}).listen(8124, "127.0.0.1");
EOF
hankjin@jnfdaj:~/node$ node tcpserver.js &
[1] 20031
hankjin@jnfdaj:~/node$ telnet 127.0.0.1 8124
Trying 127.0.0.1...
Connected to 127.0.0.1.
Escape character is '^]'.
Echo server
hello
hello
bye
bye

原文地址:http://hankjin.blog.163.com/blog/static/337319372010113194358698/

你可能感兴趣的:(node.js)