为什么要学习Node.js
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了为什么要学习Node.js相关的知识,希望对你有一定的参考价值。
一、简介
简单的说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也是一个非常好的选择。
当今时代,技术每天都在更新,我们也不能停止自己前进的步伐。有兴趣的伙伴们赶紧行动起来吧!
以上是关于为什么要学习Node.js的主要内容,如果未能解决你的问题,请参考以下文章