最近對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;