快速上手 - 它是怎么工作在服务端的

  • 作者:KK

  • 发表日期:2017.08.31


有些菜鸟习惯性地将JS与浏览器联想成必然的依赖,不能理解传说中的Node.js是如何运行在服务端的,希望通过本文章可以阐述清楚

复制如下代码到test.js里

let http = require('http');

let server = http.createServer(function(request, response){
	let url = request.url,
		content = null;
	
	console.log('收到http协议请求,请求地址是:' + url);
	
	if(url == '/' || url == '/index.html'){
		content = 'index page <a href="register.html">Register</a> <a href="index.html">Index</a>';
	}else if(url == '/register.html'){
		content = 'register page <a href="index.html">Index</a>';
	}
	//conetnt = require('fs').readFileSync(process.cwd() + url);  //实际上的使用中,最基本应该通过文件读取html文件内容
	
	if(content === null){
		console.log('该地址无效');
		response.writeHead(404, {
			'Content-type' : 'text/html'
		});
		response.end('Page Not Found<button type="button" onclick="history.back()">Back</button>');
	}else{
		response.writeHead(200, {
			'Content-type' : 'text/html'
		});
		response.end(content);
	}
});

console.log('server start');
server.listen(8282, 'localhost');

执行node test.js,它会保持运行,不会退出

然后浏览器访问http://localhost:8282就能看到网站输出了,顺便你可以看看cmd里的console输出,每收到一次请求都会输出,结合上面的代码解读,相信你很快明白Node.js如何工作在服务端的了

关闭cmd或者在cmd里按Ctrl + C终止进程即可停止这个小型Web服务器


以后判断一个编程语言能不能工作在服务端,简单地可以这样思考:它是否能监听网络端口、接收网络请求

如果能,那它就能成为一个服务端语言,之所以JS不行,那是因为它被浏览器限制了,无法监听端口

之所以Node行,是因为有人用C++开发了一堆类库供它使用,爱咋咋的,现在你应该可以理解Node其实是基于JS语言扩展的一个开发平台了吧

而实质上Node和JS都只是实现了ECMAScript的一个脚本,各自有不同可调用的API而已,浏览器为JavaScript提供了window、document对象

Node平台则自己准备了一堆类库进行作战,并且全局对象有global、process、module等更有利于服务端开发的东西