nodejs系列(1)起步

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/zeping891103/article/details/79161362

什么是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框架开始。

猜你喜欢

转载自blog.csdn.net/zeping891103/article/details/79161362