欢迎光临
我们一直在努力

二十、Node.js- WEB 服务器 (三)静态文件托管、 路 由

1、Nodejs 静态文件托管

上一讲的静态 web 服务器封装

项目结构:

 

Web服务器封装成的模块:router.js代码:

var http=require('http'); var fs=require('fs'); var path=require('path'); /*nodejs自带的模块*/ var url=require('url'); //引入events模块解决无法获取异步数据问题 var events=require("events"); var EventEmitter=new events.EventEmitter(); module.exports = { statics: function (req, res,staticpath) { var pathname = url.parse(req.url).pathname;/*获取url传值*/ if (pathname == '/') { pathname = '/index.html'; /*默认加载的首页*/ } //获取文件的后缀名 var extname = path.extname(pathname); if (pathname != '/favicon.ico') { /*过滤请求favicon.ico*/ //文件操作获取 static下面的文件 fs.readFile(staticpath+'/' + pathname, function (err, data) { if (err) { /*么有这个文件*/ console.log('404'); fs.readFile(staticpath+'/404.html', function (error, data404) { if (error) { console.log(error); } res.writeHead(404, {"Content-Type": "text/html;charset='utf-8'"}); res.write(data404); res.end(); /*结束响应*/ }) } else { /*返回这个文件*/ getMime(extname, EventEmitter) /*获取文件类型*/ EventEmitter.on("msg", function (text) { res.writeHead(200, {"Content-Type": "" + text + ";charset='utf-8'"}); //res.write(data);注意,在接收广播的回调函数里面不能使用write了,否则会报错:write after end res.end(data); /*结束响应*/ }) } }) } } } //获取文件类型的方法, 私有 function getMime(etxName,EventEmitter) { fs.readFile("./mime.json",function (err,data) { if (err){ console.log('mime.json文件不存在'); }else { //console.log(data.toString());//将十六进制转换为字符串 var mimes=JSON.parse(data.toString());//将json字符串转换为json对象 EventEmitter.emit("msg",mimes[etxName]||"text/html")//广播对应的头文件信息,如果没有的话就返回text/html  } }) }

创建服务器的00service01.js的代码:

var http=require('http'); var fs=require('fs'); var router=require("./model/router") http.createServer(function (req,res) {//注意req,res不要写反  router.statics(req,res,"static") }).listen(8002)

2、路由

官方解释:

路由(Routing)是由一个 URI(或者叫路径)和一个特定的 HTTP 方法的,涉及到应用如何响应客户端对某个网站节点的访问。

非官方解释:

路由指的就是针对不同请求的 URL,处理不同的业务逻辑。

 

 路由代码参考:

var http = require("http") var url = require("url") http.createServer(function (req, res) { var allUrl = req.url; var path = url.parse(allUrl).pathname; if (path == "/login") { res.end("login") } else if (path == "/register") { res.end("register") } else if (path == "/admin") { res.end("admin") } })

 

赞(0)
版权声明:本文采用知识共享 署名4.0国际许可协议 [BY-NC-SA] 进行授权
文章名称:二十、Node.js- WEB 服务器 (三)静态文件托管、 路 由
文章链接:https://www.jmwz.net/853.html
本站资源仅供个人学习交流,请于下载后24小时内删除,不允许用于商业用途,否则法律问题自行承担。
分享到: 更多 (0)

评论 抢沙发

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址