創建一個服務器能根據不同的url地址請求不同的文件模板

1.小知識點總結

* Xshell 使用open打開一個虛擬機;

* linux 中創建一個空白的日志文件用touch命令;

* http 是nodejs的服務模塊

* fs 是文件服務器模塊

* url是url路由模塊

2.創建nodejs服務器;

//定義主機IP常量名稱

const ip = '192.168.0.102';

//定義端口號

const port = 2000;

//引入的組建模塊? http、url、fs

const http = require('http');

const url = require('url');

const fs = require('fs');

//創建一個服務

var server = http.createServer(function(req,res){

res.writeHead(200,{'Content-Type':'text/plain'});

res.write('my nodejs');

res.end();

});

//監聽一個端口

server.listen(port,ip,function(){

console.log('server start');

});

3.獲取URL部分塊的內容 url;

const ip = '192.168.1.118';//主機IP

const port = 2001;//端口號

//引入的組建模塊? http、url、fs

const http = require('http');

const url = require('url');

const fs = require('fs');

//創建服務的回掉函數

var funSer = function(req,res){

//獲取url地址塊的內容? 如:/path/show

var parth = url.parse(req.url).pathname;

res.write(parth);

res.end();

}

//監聽端口的回掉

var fun = function(){

console.log('server start');

}

var server = http.createServer(funSer).listen(port,ip,fun);

4.讀取文件的內容 File System;

const ip = '192.168.1.118';//主機IP

const port = 2001;//端口號

//引入的組建模塊? http、url、fs

const http = require('http');

const url = require('url');

const fs = require('fs');

//真正打印文件內容

fs.readFile('./index.html', (err, data) => {

if (err) throw err;

//打印字符串內容

console.log(data.toString());

});

//創建服務的回掉函數

var funSer = function(req,res){

//獲取url地址塊的內容? 如:/path/show

var parth = url.parse(req.url).pathname;

res.write(parth);

res.end();

}

//監聽端口的回掉

var fun = function(){

console.log('server start');

}

var server = http.createServer(funSer).listen(port,ip,fun);

5. 完整實例(根據不同的url地址請求不同的文件【模板】)

const ip = '192.168.1.118';//主機IP

const port = 2001;//端口號

//引入的組建模塊? http、url、fs

const http = require('http');

const url = require('url');

const fs = require('fs');

//實例化一個服務容器

var server = new http.Server();

//監聽一個端口

server.listen(port , ip);

//注冊一個事件處理的on方法

server.on('request' , function(req , res){

//獲取請求的url地址

var url = urls.parse(req.url);

//console.log(url.pathname);

//根據path路徑來讀取不同的模板文件

switch( url.pathname ){

case '' || '/':

//讀取文件內容

fs.readFile('./index.html',function( error, content){

if(error){//如果有錯誤時,顯示錯誤信息

res.writeHead(400,{'Content-Type':'text/plain;charset="utf-8"'});

res.write(error.message);

res.end();

}else{

//正確時瀏覽器輸出模板文件的內容

res.writeHead(200,{'Content-Type':'text/html;charset="utf-8"'});//頭信息

res.write(content);//模板文件內容

res.end();

}

});

break;

case '/list':

fs.readFile('./list.html',function( error, content){

if(error){

res.writeHead(400,{'Content-Type':'text/plain;charset="utf-8"'});

res.write(error.message);

res.end();

}else{

res.writeHead(200,{'Content-Type':'text/html;charset="utf-8"'});

res.write(content);

res.end();

}

});

break;

case '/show':

fs.readFile('./show.html',function( error, content){

if(error){

res.writeHead(400,{'Content-Type':'text/plain;charset="utf-8"'});

res.write(error.message);

res.end();

}else{

res.writeHead(200,{'Content-Type':'text/html;charset="utf-8"'});

res.write(content);

res.end();

}

});

break;

default:

fs.readFile('./default.html',function( error, content){

if(error){

res.writeHead(400,{'Content-Type':'text/plain;charset="utf-8"'});

res.write(error.message);

res.end();

}else{

res.writeHead(200,{'Content-Type':'text/html;charset="utf-8"'});

res.write(content);

res.end();

}

});

break;

}

});

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容