码迷,mamicode.com
首页 > Web开发 > 详细

Node.js简介

时间:2015-03-29 18:07:03      阅读:137      评论:0      收藏:0      [点我收藏+]

标签:

       如果说的简单一点,Node.js是个服务器,像Tomcat一样,接受Web请求,并在进行业务处理之后,将结果返回给前台,Node.js适用于高并发的请求,适用于IO较多,计算较少的业务,下面说说Node.js的特点并作解释。


事件驱动
       什么是事件驱动?网上很多在说这个很多,但都说的很迷惑,给人高大上的感觉,又摸不着头脑。其实,我认为事件驱动就是基于回调,举个例子,进程A运行到某处需要进行I/O操作,正常情况下进程A需要处理完I/O之后才能继续下面的操作,在事件驱动模型下,处理I/O的操作将会与后面的程序并行处理,I/O处理完成之后,结果将由事件处理函数(也就是回调函数)来处理,这样就减少了等待I/O的时间。

主进程单线程
       这其实是JavaScript语言的特点,所谓“单线程”就是指一次只能完成一件任务,如果有多个任务,就必须排队,前面一个任务完成,再执行后面一个任务,以此类推。这样呢,结合Node.js是基于事件的,就有一个事件的队列,Node.js以此执行事件队列里的事件。使用单线程有什么好处呢?不妨先看看多线程有什么坏处:
1、多线程开销大。如果服务器是多线程的(Tomcat就是这样,没有一个新的请求,就会开启一个新的线程),那么每一个线程将会最少占用2M的系统内存,这样的话,如果请求非常多,服务器的压力将会非常大。
2、多线程容易出现错误。开发多线程的程序非常困难,容易出错,程序员需要考虑死锁,数据不一致等问题。

这样使用JavaScript的单线程就避免了上述问题,单线程是指主线程是单线程的,所有阻塞的部分交给一个线程池处理,主线程通过队列跟线程池协作。


使用Google V8引擎
       V8是一个用Google开发的开源JavaScript引擎,用于GoogleChrome,其实就是一个JavaScript解释器。V8用在Chrome浏览器中解释JavaScript代码,那么也可以用在服务器端解释代码,这就是Node.js使用JavaScript在服务器端的原因。
       V8在运行之前将JavaScript编译成了机器码,而非字节码或是解释执行它,以此提升性能。

以上总结了Node.js的几个特点,总的来说基于事件,非阻塞,占用内存少等特点,适合处理高并发大数据量请求的请求。下面将简单介绍一下Node.js的使用。


安装

首先下载Windows版的Node.js,下载完成之后可以直接安装,地址为:

https://nodejs.org/download/

下载完成之后程序会自动配置path,可以打开命令提示符窗口(dos窗口),输入“node”,如果没错出现错误,表示安装成功。

第一个小程序helloworld
在dos窗口所在的目录,新建一个helloworld.js文件,输入:
       console.log(“Hello World”);
保存该文件,通过下面语句(node命令)来执行:

  node helloworld.js

正常的话,就会在dos窗口输出“Hello World”,这样我们就完成了第一个小例子,下面会说一个稍微复杂一点的。


第二个小程序:处理请求
这个小程序的目标:当用户在地址栏输入:http://localhost:8888的时候,页面显示“HelloWorld”。
在当前目录建立server.js文件,写入如下代码:

<span style="font-size:14px;">   var http = require("http");
   http.createServer(function(request,response) {
        response.writeHead(200,{"Content-Type": "text/plain"});
        response.write("HelloWorld");
        response.end();
  }).listen(8888);</span>

这样就完成了一个可以工作的HTTP服务器,是不是很简单?当然我们得让它运行起来,在dos窗口输入:

        node server.js

接下来打开浏览器访问http://localhost:8888/,如果正常的话,页面上就会显示“HelloWorld”。

结束

Node.js简介

标签:

原文地址:http://blog.csdn.net/x_i_y_u_e/article/details/44727707

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!