什么是Node.js?
node.js是一个Javascript运行环境,是一个基于Chrome JavaScript运行时建立的平台, 用于方便地搭建响应速度快、易于扩展的网络应用。node.js依赖于Chrome V8引擎(V8使用C++开发,可以将Javascript编译成原生机器码),使用事件驱动,非阻塞I/O 模型而得以轻量和高效,非常适合在分布式设备上运行数据密集型的实时应用,它还对一些特殊用例进行优化,提供替代的API,使得V8在非浏览器环境下运行得更好。简单来说,node.js就是前端框架,后台语言,通过js语言实现服务端的搭建。
Node.js的模块化概念
node.js使用Module模块去划分不同的功能,目的是简化应用的开发。Modules模块有点像C++语言中的类库。每一个node.js的类库都包含了十分丰富的功能函数,比如http模块就包含了可以帮助开发者便捷地对http,tcp/udp等进行操作,还可以很容易 地创建http和tcp/udp的服务器。node.js已经内置了一批常用的模块,可以通过官网中的线上文档查看,还有一些第三方模块可以使用npm引用。
Node.js开发环境准备
进入官网下载页:http://nodejs.cn/download/,下载Windows系统 (.msi)版本,双击安装即可。安装成功后,可进入DOS环境下,输入以下命令检测是否安装成功:
$ node -v
如能正确显示版本号,则表明安装成功。由于国内外网络限制,为了方便使用npm链接(用于安装node.js的相关类库),一般我们还需安装npm的淘宝镜像cnpm,安装命令如下:
$ npm install -g cnpm --registry=https://registry.npm.taobao.org
至此,node.js开发环境准备完成。
第一个Node.js应用:Hello World
创建一个server.js文件,文件代码如下:
var http = require('http');
http.createServer(function(request, response) {
// 发送 HTTP 头部
// HTTP 状态值: 200 : OK
// 内容类型: text/plain
response.writeHead(200, {
'Content-Type': 'text/plain;charset=utf-8'
});
// 发送响应数据
response.end('大家好 Hello World');
}).listen(8081);
// 终端打印如下信息
console.log('Server running at http://127.0.0.1:8081/');
进入到该文件的相应目录下,通过执行命令启动文件:
$ node server.js
执行完成如图所示:
打开浏览器,输入网址:http://127.0.0.1:8081/,可以看见:大家好 Hello World。恭喜您,第一个node服务已经搭建起来。
从上例中我们需要了解到两个知识点:
(1)node.js通过使用http.createServer这个方法来搭建一个服务,该功能作用类似于Tomcat。
(2)使用response.end方法来将服务端数据返回前端,并且一定需要response.writeHead写入头部文件属性“Content-Type”,该属性的作用在于告诉前端该数据的具体类型,类型有可能是文本、html页面、js文件、css文件、图片、视频、音频、json、xml等。
我们也可以通过以下代码自动获取引入文件的类型:
var mime = require('mime');
var pathname = url.parse(request.url).pathname;
var contenttype = mime.getType(pathname.substr(1));
response.writeHead(200, {
'Content-type': contenttype
});
mime模块通过cnpm引入即可,引入命令 $ cnpm install mime。
经验分享:在实际搭建web服务开发过程中,我们并不需要这么麻烦。开发node项目,通常会使用第三方库Express框架,它帮助我们解决了大量类似的繁琐需求,Express框架将会在下篇中详细介绍。建议学习node.js,都从熟悉Express框架开始。