多应用+插件架构,代码干净,二开方便,首家独创一键云编译技术,文档视频完善,免费商用码云13.8K 广告
# 3.4.6 Node.js ### 3.4.6 Node.js Node.js是JavaScript在服务器端编程的一种应用,它由Ryan Dahl在2009年发明。Node.js采用了一种事件驱动、异步IO的方式来响应HTTP请求,这与上面介绍的其他编程技术都大不相同。异步IO的好处在于它能用单线程处理高并发;同时这也意味着在编程中大量使用回调函数。下面的示例程序说明了这一点: ``` var http = require('http'); http.createServer(function(request, response) { response.statusCode = 200; response.setHeader('Content-Type', 'text/plain'); response.write("The following is what I got:\n"); request.on('data', function(chunk) { response.write(chunk); }).on('end', function() { response.end("\nThat's all!"); }); }).listen(8090); ``` 在Node.js中,request的消息主体(message body)是通过“data”事件分段读入的,并由“end”事件标记结束: ``` request.on('data', function(chunk) { //... }).on('end', function() { //... }); ``` 在这个例子中我们返回收到的请求消息主体、并在头、尾各加上一句话作为应答。 要运行程序,在命令行上执行(假设程序保存在文件echo.js中)[1](#fn_1): ``` node echo.js ``` 然后通过curl客户端来访问它(我们现在要通过POST方法发送一些消息给服务器,通过浏览器没法简单做到): ``` curl http://localhost:8090/ -d name=Bob ``` 其中 “-d name=Bob” 就是我们发送的请求消息主体[2](#fn_2)。 请动手操作一下看看结果是什么。 关于Node.js的更多介绍,请参考这篇官方文档:<https://nodejs.org/en/docs/guides/anatomy-of-an-http-transaction/> 关于单线程异步并发模式的优点和缺点,请参考Wiki:<https://en.wikipedia.org/wiki/Node.js#Threading> > 1. 要运行这个程序,请先安装Node.js:<https://nodejs.org/en/download/>[↩](#reffn_1 "Jump back to footnote [1] in the text.") > 2. 这个curl命令模拟浏览器的表单(form)提交,用POST方法发送数据,同时设定Content-Type为application/x-www-form-urlencoded。你可以试着指定多个“-d”参数,每个代表表单的一项内容,它们会合并到一起。[↩](#reffn_2 "Jump back to footnote [2] in the text.")