Node.js初步了解(二)

来源:互联网 发布:东方知乎 编辑:程序博客网 时间:2024/06/06 08:45
1.Node.js是什么?   
      首先node js是一个js云新环境,且Node.js的编程语言是基于JavaScript,因此想深入了解Node.js的入门者可以先熟悉JavaScript 编程语言,了解其基本的语法,同时要对服务端开发有所了解。Node.js提供了一些特殊的API(Node.js官网 http://nodejs.org/ 提供了详细的API说明)库,因此在编写Node.js的时候可以理解为,使用JavaScript语言,利用Node.js的API库进行服务器端开 发。

2.Node.js带来了什么?
       首先要先理解Node.js的优点,以及Node.js与其他语言之间的区别和联系。传统的服务器语言,如PHP与Java等,每个web http请求连接都会产生一个线程,假设每个线程需要2mb的配置内存,那么对于一个只有8gb的服务器主机,也只能承受来自4000个并发用户的请求, 当服务器承受不了这么多用户的情况下就需要添加服务器,从而导致增加项目运营成本(当然现在有Nginx支撑,可以提供更高的并发量请求)。
        Node.js解决多请求的方法,在于其处理连接服务器的方式。在Node.js中每个http连接都会发射一个在Node.js引擎的进程中运行的事件,而不是为每个连接生成一个新的OS进程,并为其分配一些配套内容。
         综上所述就可以清晰地看出Node.js相对于PHP来说其优点在于能处理高并发请求,并且由于Node.js是事件驱动,因此可以更好的节约服务器内存资源。

3.异步调用、同步调用、回调
Node.js中并不是所有的代码逻辑都是异步执行的,这要取决于是否在代码逻辑中应用其异步函数。
例如:
function person(){
     this.think=function(callback){             //定义person对象的think方法。
           setTimeout(function(){
                 console.log('thinking~~~~!');
                 callback()
           },5000);
     this.answer=function(){
           console.log('i am answering the other question');
     }
}
var person=new person();
person.think(function(){
      console.log('think 5 second, get the right answer');
});
person.answer();

输出结果:
'i am answering the other question
thinking~~~~!
think 5 second, get the right answer
          说明上述程序执行时为异步,因为在think函数中调用了Node.js中的异步函数setTimeout(),因此我们常说的Node.js拥有异步非阻塞的特性,并不是说Node.js所有的代码逻辑都是异步执行的。
          回调并非是异步调用,回调是一种解决异步函数执行结果的处理方法,在异步调用,如果我们希望将执行结果返回并且处理时,可以通过回调的方法解决。回调是一种阻塞式调用。
0 0
原创粉丝点击