快速上手 - 它是怎么工作在服务端的 ¶
作者: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等更有利于服务端开发的东西