为什么要学习Node.js

来源:互联网 发布:礼物推荐知乎 编辑:程序博客网 时间:2024/05/16 10:38
一、简介

简单的说Node.js就是运行在服务器端的JavaScript.
Node.js是一个基于Chrome JavaScript运行时建立的一个平台。
Node.js是一个事件驱动I/O服务端JavaScript环境,基于Google的v8引擎,v8引擎执行JavaScript的速度非常快,性能非常好。

二、既然不是Javascript应用,为何叫.js呢?
Node.js是一个Javascript的运行环境。提到Javascript,大家首先想到的是日常使用的浏览器,现代浏览器包含了各种组件,包括渲染引擎、Javascript引擎等,其中Javascript引擎负责解释执行网页中的Javascript代码。作为Web前端最重要的语言之一,Javascript一直是前端工程师的专利。不过,Node.js是一个后端的Javascript运行环境(支持的系统包括*nux、Windows),这意味着你可以编写系统级或者服务器端的Javascript代码,交给Node.js来解释执行,简单的命令类似于:

#node helloworld.js

Node.js采用了Google Chrome浏览器的V8引擎,性能很好,同时还提供了很多系统级的API,如文件操作、网络编程等。浏览器端的Javascript代码在运行时会受到各种安全性的限制,对客户系统的操作有限。相比之下,Node.js则是一个全面的后台运行时,为Javascript提供了其他语言能够实现的许多功能。

 

三、Node.js采用事件驱动、异步编程,为网络服务而设计
在某些传统语言的网络编程中,我们会用到回调函数,比如当socket资源达到某种状态时,注册的回调函数就会执行。
Node.js的设计思想中以事件驱动为核心,它提供的绝大多数API都是基于事件的、异步的风格。以Net模块为例,其中的net.Socket对象就有以下事件:connect、data、end、timeout、drain、error、close等,使用Node.js的开发人员需要根据自己的业务逻辑注册相应的回调函数。这些回调函数都是异步执行的,这意味着虽然在代码结构中,这些函数看似是依次注册的,但是它们并不依赖于自身出现的顺序,而是等待相应的事件触发。
重要的优势在于,充分利用了系统资源,执行代码无须阻塞等待某种操作完成,有限的资源可以用于其他的任务。此类设计非常适合于后端的网络服务编程,Node.js的目标也在于此。在服务器开发中,并发的请求处理是个大问题,阻塞式的函数会导致资源浪费和时间延迟。通过事件注册、异步函数,开发人员可以提高资源的利用率,性能也会改善。
从Node.js提供的支持模块中,我们可以看到包括文件操作在内的许多函数都是异步执行的,这和传统语言存在区别,而且为了方便服务器开发,Node.js的网络模块特别多,包括HTTP、DNS、NET、UDP、HTTPS、TLS等,开发人员可以在此基础上快速构建Web服务器。以简单的helloworld.js为例:

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");

    上面的代码搭建了一个简单的http服务器,在本地监听80端口,对于任意的http请求,服务器都返回一       个头部状态码为200、Content-Type'值为text/plain'的”Hello World“文字响应。从这个小例子            中,    我们可以看出几点:
    Node.js的网络编程比较便利,提供的模块(在这里是http)开放了容易上手的API接口,短短几行代        码就可以构建服务器。
    体现了事件驱动、异步编程,在createServer函数的参数中指定了一个回调函数(采用Javascript的匿        名函数实现),当有http请求发送过来时,Node.js就会调用该回调函数来处理请求并响应。当然,这        个例子相对简单,没有太多的事件注册,在以后的文章中读者会看到更多的实际例子。

    四、Node.js的特点
    1、事件驱动、异步编程。
    2、性能让人信服。
    3、支持的编程语言Javascript。

    五、Node.js与java都是服务器语言,两者的区别:
    (1)、Node.js比java更快:node.js开发快,运行的效率也算比较高,但是如果项目大了就容易乱,        而且javascript不是静态类型语言,要到运行时才知道类型错误,所以写的多了之后免不了会出现知道        有错但找不到那出错的情况,所以测试就得写的更好更详细。
    Java开发慢,但是如果项目大,复杂的话,用java就不容易乱,管理起来比node.js省。
    (2)、Node.js前后端都采用Javascript,代表未来发展的趋势,而java则是现在最流行的服务器端        编程语言。
    (3)、Node.js是解释语言,JavaEE是编程语言。

    如果你是一个前端程序员,你不懂得像PHP、Python或Ruby等动态编程语言,然后你想创建自己的        服务,那么Node.js是一个非常好的选择。Node.js 是运行在服务端的 JavaScript,如果你熟悉                Javascript,那么你将会很容易的学会Node.js。当然,如果你是后端程序员,想部署一些高性能的            服务,那么学习Node.js也是一个非常好的选择。

    当今时代,技术每天都在更新,我们也不能停止自己前进的步伐。有兴趣的伙伴们赶紧行动起来吧!
1 0
原创粉丝点击