初步实现Apache功能——根据不同的网络请求路径访问不同的内容

Posted 勇敢*牛牛

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了初步实现Apache功能——根据不同的网络请求路径访问不同的内容相关的知识,希望对你有一定的参考价值。

根据不同的网络请求路径访问不同的内容

  • 多个if语句嵌套
// 加载http核心模块
var http = require('http');
// 加载文件模块
var fs = require('fs');
// 创建server
var server = http.createServer();
// 监听server的request的请求事件,设置请求处理函数
server.on('request',function(req,res)
    var url = req.url; 
    var wwwDir = "E:/nodejs/WWW";
    if(url==='/')
        fs.readFile(wwwDir + '/index.html',function(err,data)
            if(err)
                return res.end("404 Not Found");
            
            res.end(data);
        )
    else if(url === '/a.txt')
        fs.readFile(wwwDir + '/a.txt',function(err,data)
            if(err)
                return res.end("404 Not Found");
            
            res.setHeader('Content-Type','text/plain;charset=utf-8');
            res.end(data);
        )
    else if(url === '/index.html')
        fs.readFile(wwwDir + '/index.html',function(err,data)
            if(err)
                return res.end("404 Not Found");
            
            res.end(data);
        )
    else if(url === '/apple/login.html')
        fs.readFile(wwwDir + '/apple/login.html',function(err,data)
            if(err)
                return res.end("404 Not Found");
            
            res.end(data);
        )
    else
        res.end("404 not found");
    
) 
//绑定端口号然后很nice  
server.listen(3000,function()
    console.log('running .....');
)

可以看出代码量\\(o)/很大

  • 变量代码转路径
// 加载http核心模块
var http = require('http');
// 加载文件模块
var fs = require('fs');
// 创建server
var server = http.createServer();
// 监听server的request的请求事件,设置请求处理函数
server.on('request',function(req,res)
    var filePath = '/index.html';
    var url = req.url; 
    var wwwDir = "E:/nodejs/WWW";   
    if(url!=='/')
        filePath = url;
     
    // console.log(filePath,wwwDir+filePath); 
    fs.readFile(wwwDir+filePath,function(err,data)
        if(err)
            return res.end("404 Not Found"); 
        
        res.end(data);
    )  
) 
//绑定端口号然后很nice  
server.listen(3000,function()
    console.log('running .....');
)

直接根据请求路径来处理访问路径。巧妙的使用if语句,让代码量和效率大大提高

以上是关于初步实现Apache功能——根据不同的网络请求路径访问不同的内容的主要内容,如果未能解决你的问题,请参考以下文章

Drf03 /呼啦圈网页初步实现drf筛选视图(源码实现)

Nodejs仿Apache的功能

20201107第16课,使用Apache服务部署静态网站;使用Vsftpd服务传输文件

SpringMVC初步总结

Apache 虚拟主机:不同的路径在同一 IP 上为不同的应用程序服务

微信公众平台开发教程 基础框架搭建