dome-http

// const http = require('http'); // const path = require('path'); // const fs = require('fs'); // const mime = require('mime'); // http.createServer((req, res) => { // let publicDir = path.join(__dirname, 'public', req.url); // fs.readFile(publicDir, (err, data) => { // if (err) { // res.end('404 错误') // } else { // res.setHeader('Content-type', mime.getType(publicDir)); // res.end(data); // } // }) // }).listen(8080, () => { // console.log('http:localhost:8080'); // })

Usage no npm install needed!

<script type="module">
  import domeHttp from 'https://cdn.skypack.dev/dome-http';
</script>

README

// const http = require('http');
// const path = require('path');
// const fs = require('fs');
// const mime = require('mime');
// http.createServer((req, res) => {
//     let publicDir = path.join(__dirname, 'public', req.url);
//     fs.readFile(publicDir, (err, data) => {
//         if (err) {
//             res.end('404 错误')
//         } else {
//             res.setHeader('Content-type', mime.getType(publicDir));
//             res.end(data);
//         }
//     })
// }).listen(8080, () => {
//     console.log('http:localhost:8080');
// })

// 载入 http 模块
const http = require('http');
// 载入fs模块
const fs = require('fs');
// 载入 path 模块
const path = require('path');
// 载入 url 模块
const url = require('url');
// 载入 mime 模块
const mime = require('mime');
// 创建服务
http.createServer((req, res) => {
    // 获取请求的完整路径名
    let pathname = url.parse(path.join(__dirname, 'public', req.url)).pathname;
    // 设置响应头
    res.setHeader('Content-type', mime.getType(pathname));
    // 判断如果请求的是根目录
    if (req.url === '/') {
        // 请求的路径就是  首页的路径
        pathname = __dirname + 'public/index.html';
    }
    // 判断请求的路径对应的文件是否存在
    if (fs.existsSync(pathname)) {
        // 存在的话就响应
        res.end(fs.readFileSync(pathname));
    } else {
        // 判断请求的路径没有后缀名
        if (path.extname(pathname) === '') {
            // 响应
            res.end('呵呵呵呵呵呵呵呵呵呵');
            return;
        }
        // 响应404页面
        res.end(fs.readFileSync('public/404.html'));
    }
}).listen(8080, () => {
    console.log('http:localhost:8080');
})