Node.js 学习笔记(一)

 什么是Node.js

  "Node.js 是服务器端的JavaScript 运行环境,它具有无阻塞(non-blocking)和事件驱动(event-driven)等的特色,Node.js 采用V8 引擎,同样,Node.js 实现了类似Apache 和nginx 的web 服务,让你可以通过它来搭建基于JavaScript 的Web App。

                                                                                         

                                                                                   

图1-1:node.js主页http://nodejs.org/ 

下面我们解释下什么叫阻塞

1      //根据ID,在数据库中Persons表中查出Name 
3      var name = db.query("select name from persons where id=1"); 
5      //进程等待数据查询完毕,然后使用查询结果. 
7      output("name")

    上面的这段代码查询过程中进程往往是在等待查询的结束,然后将结果返回。这就造成了阻塞,这对于高迸发高密集的网络。一方面进程很长时间处于等待,一方面为了应付新的请求不断的增加新的进程,严重了服务器的性能也容易被慢链攻击(服务端故意不接收数据加长进程等待时间)

 

怎么解决阻塞

    建立一种事件机制,当发送查询后将进程交出,当数据返回后触发事件后立即执行output;

 

为什么js适合解决阻塞

    1.Js是函数式编程函数可以当参数直接调用,js还支持匿名函数。

1  db.query("select name from persons where id=1",function(name){  
2     output(name);  
3  });  

    2. js独特的生命周期  闭包

1   //异步写法:  
2    function main(){  
3     var id = "1";  
4     db.query("select name from persons where id=" + id,function(name){  
5         output("person id:" + id + ", name:" + name);//n秒后数据返回后执行回调  
6      });  
7     }  
8     main();  

 安装node.js

 搭建第一个web
    新建个hello的js

1  var http = require('http');
2  http.createServer(function (req, res) {
3    res.writeHead(200, {'Content-Type': 'text/plain'});
4    res.end('Hello World\n');
5  }).listen(1337, '127.0.0.1');
6  console.log('Server running at http://127.0.0.1:1337/');

在命令中输入

                                       

然后我们访问http://127.0.0.1:1337/

第一个web就搭建好了:)

原文地址:https://www.cnblogs.com/fishlynn/p/2615424.html