geqianqian-shihan / Alexuse

学习、测试使用
0 stars 0 forks source link

node 相关 #24

Open geqianqian-shihan opened 4 years ago

geqianqian-shihan commented 4 years ago

一、使用 node 简单搭建 web 静态服务器


//请求Node.js自带的http模块。 
const http = require('http');   
const fs = require('fs');
const mimeModel = require('./getMime');
const path = require('path');  // 加载path模块
const url = require('url');    // 加载url模块

var server = http.createServer(function(req, res){
    res.setHeader("Content-Type","text/html; charset=utf-8");  

    let pathName = url.parse(req.url).pathname; // 解析请求地址不带参数

    if (pathName == '/') {
        pathName = '/index.html';  // 如果请求地址为空,则加载首页
    }

    let extName = path.extname(pathName);   // 获取请求文件的后缀名

    if (pathName != '/favicon.ico') {  // 当不请求 页面图标时
        // Web 为静态资源文件夹
        fs.readFile('Web/' + pathName, (err, data) => {  // 读取对应文件
            if (err) {  // 如果没有找到文件
                res.write('404 !!!');   
            }else{
                let mime = mimeModel.getMime(extName);  // 根据对应的后缀名,获取对应的文件格式
                res.writeHead(200, {'Content-Type': ""+ mime + ";charset=utf-8'"});  // 设置请求状态及表头
                res.write(data);  // 读取数据
                res.end();   // 结束响应
            }
        })
    return false;

    }

});

//这个对象有个叫做listen的方法,这个方法可以有个数值参数。
//指定这个HTTP服务器监听的端口号。
//当我们打开http://localhost:8080的时候,服务器就会接收数据,并且响应数据
server.listen(9999);

// getMime.js
const getMime = (extname) => {
    switch (extname) {
        case '.html':
            return 'text/html';
        case '.css':
            return 'text/css';
        case '.js':
            return 'text/javascript';
        default:
            return 'text/html';
    }
}
module.exports = {
    getMime
}