探秘Node.js(一)——Node.js简介及安装配置

1.Node.js 简介及特点:

Node.js 是一个可以让 JavaScript 运行在服务器端的平台,它可以让JavaScript 脱离浏览器的束缚运行在一般的服务器环境下,就像运行 Python Perl PHP Ruby 程序一样。我们可以用 Node.js 轻松地进行服务器端应用开发,Python Perl PHP Ruby 能做的事 Node.js 几乎都能做,而且可以做得更好。

Node.js 最大的特点就是采用异步式 I/O 与事件驱动的架构设计。对于高并发的解决方案,传统的架构是多线程模型,也就是为每个业务逻辑提供一个系统线程,通过系统线程切换来弥补同步式 I/O 调用时的时间开销。Node.js 使用的是单线程模型,对于所有 I/O 都采用异步式的请求方式,避免了频繁的上下文切换。Node.js 在执行的过程中会维护一个事件队列,程序在执行时进入事件循环等待下一个事件到来,每个异步式 I/O 请求完成后会被推送到事件队列,等待程序进程进行处理。

这样做的好处是,CPU和内存在同一时间集中处理一件事,同时尽可能让耗时的 I/O 操作并行执行。对于低速连接攻击,Node.js 只是在事件队列中增加请求,等待操作系统的回应,因而不会有任何多线程开销,很大程度上可以提高 Web 应用的健壮性,防止恶意攻击。当然,异步模式的弊端也是显而易见的,因为它不符合开发者的常规线性思路,往往需要把一个完整的逻辑拆分成一个个事件,增加了开发和调试的难度(Node.js 的第三方模块提出了很多解决方案)。

Node.js 用异步式 I/O 和事件驱动代替多线程,带来了可观的性能提升。Node.js 除了使用 V8 作为 JavaScript 引擎以外,还使用了高效的 libev libeio 库支持事件驱动和异步式 I/O

 

2.Node.js 安装和配置:

Node.js 可以安装在遵循 POSIX 标准的操作系统上,如 GNU/Linux Mac OS X Solaris等,也可以安装在 Windows 上。尽管 Windows Azure 宣布对 Node.js 完全支持,但 Node.js Windows 的兼容性仍然不如 POSIX 操作系统,在 npm 提供的第三方模块中体现的尤为突出。不建议在 Windows 上进行 Node.js 的开发和部署。下面介绍一下如何在 32 位的 CentOS 6.6 上安装 Node.js

[root@localhost ~]# cd /usr/local/src/

[root@localhost src]# wget http://nodejs.org/dist/v0.12.2/node-v0.12.2-linux-x86.tar.gz

[root@localhost src]# tar -zxf node-v0.12.2-linux-x86.tar.gz

由于我们下载的是免编译的安装包,所以解压后即可使用。将解压后的目录移动到任意目录,配置环境变量:

[root@localhost src]# mv node-v0.12.2-linux-x86 /opt/node

[root@localhost src]# vim /etc/profile

exportPATH=$PATH:/opt/node/bin

[root@localhostsrc]# source !$

至此, Node.js已经安装完毕。测试 Node.js 是否已经生效:

[root@localhost ~]# vim test.js

function hello(){

    console.log(“Hello World”);

}

hello();

[root@localhost ~]# node test.js

Hello World

出现上述结果表明,Node.js已经可以使用。

Node.js 还有很多第三方模块,通过这些第三方包可以极大的方便开发(如 Express 模块,是一个很稳定且使用很广泛的 Web 开发框架)。使用 npm 命令可以安装第三方模块,npm 类似 Ubuntu 下的 apt-get CentOS 下的 yum

[root@localhost ~]# npm install -g express

由于 npm 默认是从国外源获取和下载包信息,通常来说下载速度会非常慢,可以使用其 --registry 参数自定义源:

[root@localhost ~]# npm install -g express --registry=http://registry.npm.taobao.org/

其他版本安装包可以到Node.js 官网下载,地址如下:

https://nodejs.org/download/

 

3.Node.js 初步了解:

刚刚我们已经介绍了一种Hello World 的方式,除此之外,还有两种方式可以做到:

1-e 参数:类似 JavaScript 中的 eval()

[root@localhost ~]# node -e ‘console.log(“Hello World”);’

Hello World

2)进入 node REPLRead-eval-printloop)循环:

[root@localhost ~]# node

>console.log(“HelloWorld”);

Hello World

undefined

这里的undefined console.log 的返回值。如果输入一个错误的指令, REPL 会立即显示错误并输出调用栈。连续按两次 ctrl + c 或按一次 ctrl + d 即可退出 Node.js REPL 模式。该模式在应用开发时会给人带来很大的便利,例如我们可以测试一个包能否正常使用,单独调用应用的某一个模块,执行简单的计算等。

如果仅仅是 HelloWorld 未免显得太 low ,现在我们尝试使用Node.js 建立 HTTP 服务器。Node.js HTTP 服务器剥离,直接面向浏览器用户。

[root@localhost~]# vim app.js

//app.js

var http =require(‘http‘);

http.createServer(function(req,res) {

res.writeHead(200,{‘Content-Type‘: ‘text/html‘});

res.write(‘<h1>Node.js</h1>‘);

res.end(‘<p>HelloWorld</p>‘);

}).listen(3000);

console.log("HTTPserver is listening at port 3000.");

[root@localhost~]# node app.js

之后即可通过 http://yourhostip:3000 来访问端口号为 3000 的服务器了。这个程序调用了 Node.js 提供的 http 模块,对所有 HTTP 请求答复同样的内容并监听 3000 端口。

这里我们先对Node.js 做一个初步了解,更多内容以后慢慢展开,就酱先~

 

参考资料:

Node.js 开发指南》  作者:BYVoid


本文出自 “细桶假狗屎” 博客,请务必保留此出处http://xitongjiagoushi.blog.51cto.com/9975742/1633640

郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。