nodejs静态资源服务器

静态资源服务器

/**
 * 静态资源服务器
 *  * 图片
 *  * html
 *  * css
 *  * js
 *  * ...文件
 
* 其他语言
    * PHP(后端语言) + Apache(服务器)
    * Java + Tomcat
    * .net + IIS
    * ...

* 在Nodejs中实现静态资源服务器
    * 所需模块
        * http
        * fs
        * url
        * path
* 一次http请求的过程
    * 请求:request   请求对象
        * 客户端->服务器
    * 响应:response  响应对象
        * 服务器 -> 客户端
        * 
* Express 但是一般用这个做静态资源管理器
 */

const http = require("http")
const path = require("path")
const fs = require("fs")
const url = require("url")

// 引入自己的模块 路径下查找
const mime = require("./src/js/mime")

const server = http.createServer((req, res) => {
  // 静态资源服务器根据不同的请求地址响应不同的内容

  // 1、获取访问路径 ,req.url是请求的路径
  const {
    pathname
  } = url.parse(req.url); //解构赋值 可以看下url.parse的返回值 是对象

  // 2、把路径转换为系统的绝对路径
  const realpath = path.join(__dirname, pathname);
  // console.log("realpath=", realpath);

  // 3、获取请求资源文件的后缀 用于编码格式
  const extname = path.extname(pathname).substring(1); // .html => html 去掉.

  // 4、利用fs模块读取静态资源
  fs.readFile(realpath, (err, data) => {
    if (err) {
      return res.end("404")
    }
    // res.writeHead(200, "content-type:text/html;charset=utf-8")
    // 利用 mime模块 设置不同资源的文件的编码格式
    res.writeHead(200, "Content-Type:" + mime[extname] + ";charset=utf-8")
    // res.write(data)
    res.end(data)
  })
})
//开启服务器,设置端口号
server.listen(3000, () => {
  console.log("server is running")
})

mime.js模块

module.exports = {
  "css": "text/css",
  "gif": "image/gif",
  "html": "text/html",
  "ico": "image/x-icon",
  "jpeg": "image/jpeg",
  "jpg": "image/jpeg",
  "js": "text/javascript",
  "json": "application/json",
  "pdf": "application/pdf",
  "png": "image/png",
  "svg": "image/svg+xml",
  "swf": "application/x-shockwave-flash",
  "tiff": "image/tiff",
  "txt": "text/plain",
  "wav": "audio/x-wav",
  "wma": "audio/x-ms-wma",
  "wmv": "video/x-ms-wmv",
  "xml": "text/xml"
};

里面解析如下图

在这里插入图片描述
在这里插入图片描述

Node.js API文档

引用nodejs官网中,上面需要用到的文档资料

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

提示:关于__dirname的问题推荐博客nodejs中的__dirname

Express 一般用这个做静态资源管理器

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值