搜索
您的当前位置:首页正文

静态Web服务器

来源:步旅网

知识点

  1. 读取到页面的数据后不需要将buffer转换为string类型,浏览器会自动解析,否则图片加载失败
  2. 浏览器加载解析后图片的后缀jpg与图片后缀不符,使用mime.json文件修改后缀名
  3. 此外,使用Nodejs工具模块中的path模块,使用 path.extname(p)

返回路径中文件的后缀名,即路径中最后一个'.'之后的部分。如果一个路径中并不包含'.'或该路径只包含一个'.'且这个’.'为路径的第一个字符,则此命令返回空字符串。

步骤

  1. 先新建静态web服务器文件夹
  2. 新建static静态资源目录,将页面相关内容存入
  3. cnpm init,生成package.json文件,里面是自己填写的各种信息
  4. 新建app.js作为项目的启动文件(主文件)
const http = require("http");
let server=require("./model/server");//方法封装在derver模块中
http.createServer(server).listen(8080, "localhost", () => {
    console.log("http://127.0.0.1:8080/");//我的 本机端口号
});
  1. 新建model文件夹,其中存放模块化代码。
  • mime.json

直接添加(代码过多只截取主要部分)

{……
  ".jpe":"image/jpeg" ,
  ".jpeg":"image/jpeg" ,
  ".jpg":"image/jpeg" ,
  ".jpz":"image/jpeg" ,
  ".js":"application/x-javascript" ,
  ……
}
  • server.js
    将http请求方法封装在server.js中以减少app.js页面代码

const url = require("url");
const fs = require("fs");
const pathmodule = require("path");//请求path模块(想获取后缀名)
let mime = require("./mime.json");//请求后缀名json
module.exports = (req, res) => {//暴露方法
    let path = url.parse(req.url);  //解析路径
    let pathname = path.pathname;
    if (pathname != "/favicon.ico") {//让浏览器只加载一次
        //加载首页
        if (pathname == "/") {//默认打开页面
            pathname = "index.html";
        }
        //现在数据可以打印出去  但是文件的类型不一致   text/html   text/css  text/javascript 等等不一致
            //根据后缀名 确认类型

        let hname = pathmodule.extname(pathname);//取后缀名
        let extname = mime[hname];
        //利用反编译配置响应头
        res.writeHead(200, { "Content-Type": `${extname};charset=utf-8` }); 
        fs.readFile("static/" + pathname, (err, data) => {   //根据目录找到对应的文件
            if (err) {
                throw err;
            }
            res.write(data);
            res.end();
        });
    }

}

因篇幅问题不能全部显示,请点此查看更多更全内容

Top