zoukankan      html  css  js  c++  java
  • node.js系列(实例):原生node.js实现静态资源管理

     1 /**
     2  * node入门之综合案例(一):简易路由
     3  * @Author : by Ghost
     4  * @Date : 2016/07/11
     5  * @Description :
     6  * 1、引入以下模块
     7  * http模块:创建服务器,处理请求和相应
     8  * URL模块:解析url请求地址
     9  * fs模块:读取文件
    10  * path模块:处理文件路径,获取文件后缀名,路径优化
    11  *
    12  * 2、使用http.createServer()方法创建服务器
    13  * 3、使用url.parse()方法解析浏览器请求路径
    14  * 4、使用fs.readFile()方法读取对应的静态文件
    15  * 5、使用path.extname()方法获取文件后缀名
    16  * 6、设置MIME类型,实现文件兼容
    17  * */
    18 
    19 //引入模块
    20 var http = require('http');
    21 var url = require('url');
    22 var fs = require('fs');
    23 var path = require('path');
    24 
    25 //创建服务器,监听3000端口
    26 var server = http.createServer(function (req, res) {
    27     //屏蔽/favicon.ico的请求
    28     if(req.url === '/favicon.ico')
    29     {
    30         return ;
    31     };
    32 
    33     //解析请求路径
    34     var pathname = url.parse(req.url).pathname;
    35 
    36     //默认首页
    37     if(pathname.indexOf('.') === -1)
    38     {
    39         pathname = "/index.html"
    40     };
    41 
    42     //获取文件后缀名
    43     var extname = path.extname(pathname);
    44 
    45     //读取文件
    46     fs.readFile('./static/' + pathname, function (err,data) {
    47         //如果出错则表示请求路径不正确,显示404
    48         if(err){
    49             fs.readFile("./static/404.html",function(err,data){
    50                 res.writeHead(404,{"Content-Type":"text/html;charset=UTF-8"});
    51                 res.end(data);
    52             });
    53             return;
    54         };
    55 
    56         //读取数据
    57         //结束响应
    58         getMime(extname,function(mime){
    59             res.writeHead(200,{"Content-Type": mime});
    60             res.end(data);
    61         });
    62     });
    63 });
    64 
    65 //设置监听端口
    66 server.listen(3000,'127.0.0.1', function () {
    67     console.log("server is started listen port 3000");
    68 });
    69 
    70 //getMIME()
    71 function getMime(extname,callback)
    72 {
    73     fs.readFile('./static/mime.json', function (err,data) {
    74         if(err)
    75         {
    76             throw Error("找不到mime.json文件");
    77             return;
    78         };
    79         var mimeJson = JSON.parse(data);
    80         var mime = mimeJson[extname] || "text/plain";
    81         //执行回调函数,结束异步问题
    82         callback(mime);
    83     });
    84 }
    技术交流群:821039247
  • 相关阅读:
    Bzoj 1010: [HNOI2008]玩具装箱toy(斜率优化)
    Cogs 376. [IOI2002]任务安排(后效性DP)
    Bzoj 1911: [Apio2010]特别行动队(斜率优化)
    Poj 2018 Best Cow Fences(分数规划+DP&&斜率优化)
    Bzoj 1212: [HNOI2004]L语言(AC自动机+DP)
    ZOJ 3228 Searching the String(AC自动机)
    Bzoj 3172: [Tjoi2013]单词(fail树)
    Hdu 3065 病毒侵袭持续中(AC自动机)
    Hdu 2896 病毒侵袭(AC自动机)
    Bzoj 2599: [IOI2011]Race(点分治)
  • 原文地址:https://www.cnblogs.com/humaotegong/p/5661894.html
Copyright © 2011-2022 走看看