最近对node.js产生了兴趣,碰巧公司决定技术革新。在此把学习中的一些过程记录下
css
对于怎样安装node、环境搭建等基础内容暂不作介绍,有时间也会分享html
在node中建立HTTP服务器是很轻松的,大概须要4个步骤,下面我一一分解node
获取http模块web
var http = require('http');
建立http服务浏览器
var server = http.createServer();
监听服务请求事件(request)
服务器
server.on('request', function(req, res){ res.writeHead(200,{'Content-Type':'text/plain'}); res.write('Hello Word!'); res.end(); });
将服务绑定到TCP端口,如:4000函数
server.listen(4000)
将以上代码保存在server.js文件中,使用命令node server.js启动服务,在浏览器中输入http://loaclhost:4000能够看到Hello Word!post
经过上面的代码能够搭建一个能够运行的http服务,经过对上面代码的扩展咱们能够搭建一个能够运行web的服务,也就是中间件(web容器)了学习
首先,完善项目目录ui
webroot就是存放web资源的目录,能够放web项目在里面,根据实现不一样存放方式及项目类型也有所不一样。其余目录就很少讲了
其次,扩展server.js代码
var fs = require('fs'), path = require('path'); require('http').createServer(function(req, res) { var uri = req.url if (uri == "/" || uri == "") { uri = "/index.html" } else { if(uri.indexOf('?') != -1){ uri = uri.substr('0',uri.indexOf('?'))//截取url参数部分 } } var file = path.normalize('./webroot' + uri); console.log('Trying to serve', file); /** * 定义服务端未知异常回调函数 */ function reportError(err) { console.log(err); res.writeHead(500); res.end('Internal Server Error'); } path.exists(file, function(exists) { if (exists) { fs.stat(file, function(err, stat) { var rs; if (err) { return reportError(err); } if (stat.isDirectory()) { res.writeHead(403); res.end('Forbidden') } else { rs = fs.createReadStream(file); rs.on('error',reportError); var postfix = uri.substr(uri.lastIndexOf('.')); //取url后缀 if (postfix.indexOf('html') != -1) { res.writeHead(200, { 'Content-Type': 'text/html' }); }else{ res.writeHead(200); } rs.pipe(res); } }) } else { //404错误 res.writeHead(404); res.end('Not found') } }) }).listen(4000, function() { console.log('http server port 4000'); });
最后,完善html资源部份内容,能够加一些css、js、图片后访问看看效果
控制台输出内容
好了node构建http服务器告一段落,如今已经能够拿node作一个简单的web应用了,根据node的一些特性,根据如今的内容,进一步思考就能够实现一个能够交互的web;