看了朴灵前辈的node.js系列文章,很开阔视野,虽然能力有限仍是有不少不懂,可是仍是但愿能写下笔记,初步对node.js有点了解。javascript
var http = require('http'); http.createServer(function (req, res) { res.writeHead(200, {'Content-Type': 'text/plain'}); res.end('Hello World\n'); }).listen(80, "127.0.0.1");
说明:在本地监听80端口,对于任意的http请求,服务器都返回一个头部状态码为200、Content-Type'值为text/plain'的”Hello World“文字响应。
Node.js的网络编程比较便利,提供的模块(在这里是http)开放了容易上手的API接口,短短几行代码就能够构建服务器。
体现了事件驱动、异步编程,在createServer函数的参数中指定了一个回调函数(采用Javascript的匿名函数实现),当有http请求发送过来时,Node.js就会调用该回调函数来处理请求并响应。固然,这个例子相对简单,没有太多的事件注册,在之后的文章中读者会看到更多的实际例子。java
另外一个实例:
Javascript的匿名函数和闭包特性很是适合事件驱动、异步编程,从helloworld例子中咱们能够看到回调函数采用了匿名函数的形式来实现,很方便。闭包的做用则更大,看下面的代码示例:node
var hostRequest = http.request(requestOptions,function(response) { var responseHTML =''; response.on('data', function (chunk) { responseHTML = responseHTML + chunk; }); response.on('end',function(){ console.log(responseHTML); // do something useful }); });
单进程、单线程模式运行(很吃惊,对吧?这和Javascript的运行方式一致),事件驱动机制是Node.js经过内部单线程高效率地维护事件循环队列来实现的,没有多线程的资源占用和上下文切换,这意味着面对大规模的http请求,Node.js凭借事件驱动搞定一切编程