一、NodeJS简介
首先我们来思考一个问题:我们都知道几乎所有现代主流浏览器都全面支持了ECMAScript 5.1版标准,而JavaScript的标准是ECMAScript。那么我们就容易认为JavaScript
是一种浏览器端的解释型编程脚本。那么脱离了浏览器,JavaScript还能够解释运行吗? 答案是肯定的,也就是说脱离了浏览器,在特定环境下JavaScript还是能运行的。
JavaScript向来以Web网页的脚本语言而著称,但现在也可以用在许多非浏览器环境,例如node.js或者Apache CouchDB。本文就是基于NodeJS来进行探讨。
NodeJS是什么?
根据百度百科解释,Node.js是一套用来编写高性能网络服务器的JavaScript工具包。Node.js是一个可以快速构建网络服务及应用的平台,该平台的构建是基于Chrome's
JavaScript runtime,也就是说,实际上它是对GoogleV8引擎(应用于Google Chrome浏览器)进行了封装。V8引 擎执行Javascript的速度非常快,性能非常好。
NodeJS并不是提供简单的封装,然后提供API调用,如果是这样的话那么它就不会有现在这么火了。Node对一些特殊用例进行了优化,提供了替代的API,使得V8在非浏
览器环境下运行得更好。例如,在服务器环境中,处理二进制数据通常是必不可少的,但Javascript对此支持不足,因此,V8.Node增加了Buffer类,方便并且高效地 处理二进
制数据。因此,Node不仅仅简单的使用了V8,还对其进行了优化,使其在各环境下更加给力。
Node.js的优点
1、基于V8虚拟机,可构建高性能服务器
V8引擎本身使用了一些最新的编译技术。这使得用Javascript这类脚本语言编写出来的代码与用C这类高级语言写出来的代码性能相差无几,却节省了开发成本。对性能的
苛求是Node的一个关键因素。 Javascript是一个事件驱动语言,Node利用了这个优点,编写出可扩展性高的服务器。Node采用了一个称为“事件循环(event loop)”的架构,使
得编写可扩展性高的服务器变得既容易又安全。提高服务器性能的技巧有多种多样。Node选择了一种既能提高性能,又能减低开发复杂度的架构。这是一个非常重要的特性。
并发编程通常很复杂且布满地雷。Node绕过了这些,但仍提供很好的性能。
2、单线程
Node.js可以在不新增额外线程的情况下,依然可以对任务进行并行处理 —— Node.js是单线程的。它通过事件轮询(event loop)来实现并行操作,对此,我们应该要充
分利用这一点 —— 尽可能的避免阻塞操作,取而代之,多使用非阻塞操作。
3、可利用Javascript进行后台开发
虽然让Javascript运行于服务器端不是Node的独特之处,但却是其一强大功能。不得不承认,浏览器环境限制了我们选择编程语言的自由。任何服务器与日益复杂的浏览器
客户端应用程序间共享代码的愿望只能通过Javascript来实现。虽然还存在其他一些支持Javascript在服务器端 运行的平台,但因为上述特性,Node发展迅猛,成为事实上的平台。
4、非阻塞IO
Node采用一系列“非阻塞”库来支持事件循环的方式。本质上就是为文件系统、数据库之类的资源提供接口。向文件系统发送一个请求时,无需等待硬盘(寻址并检索文
件),硬盘准备好的时候非阻塞接口会通知Node。该模型以可扩展的方式简化了对慢资源的访问, 直观,易懂。尤其是对于熟悉onmouseover、onclick等DOM事件的用户,更
有一种似曾相识的感觉。
Node.js 的安装.
这里我只简单介绍一下在linux的环境下的安装.
一.Debian 系列的安装方法.
①使用源码安装
首先需要有python,g++,make,checkinstall ,fakeroot 等工具.
sudo apt-get install python g++ make checkinstall fakeroot
src=$(mktemp -d) && cd $src //注意这里是建立一个临时的文件夹,用于下载我们的nodejs的源码包,然后再进行安装.
wget http://nodejs.org/dist/node-lastest.tar.gz //使用wget 获取安装包.
tar xzvf node-lastest.tar.gz && cd node-v* //解压缩并且进入压缩之后的文件夹.
./configure //配置安装参数
make && make install //编译并安装.
安装npm的包管理工具.
curl https://www.npmjs.org/install.sh | sudo sh
②命令安装
sudo apt-get install nodejs
安装npm包管理工具.
sudo apt-get install npm
最后想说,使用的时候,我们直接在命令行里面输入node
就可以进入node的命令界面.
这个终端非常的好用.可以用来帮助我们测试javascript的语法特性和更好的理解javascript,但是它不支持我们浏览器的BOM, DOM 对象.
但是支持javascript的内置对象.