Nodejs仿Apache的功能

Posted 澎湃_L

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Nodejs仿Apache的功能相关的知识,希望对你有一定的参考价值。

一、初步实现Apache的部分功能

//1.加载模块
var http=require(\'http\');
var fs=require(\'fs\');
//2.创建server
var server=http.createServer();
//3.监听server的request请求事件,设置请求处理函数
var wwwDir=\'C:/Users/Administrator/Desktop/Code\';//设置目录(注意转义符)
server.on(\'request\',function(req,res){
    var url=req.url;
    if(url===\'/\'){
        fs.readFile(wwwDir+\'/index.html\',function(error,data){
            if(error){//return返回值,阻止代码往后执行
                return res.end(\'404 Not Found\');
            }
            res.end(data);
        });
    }else if(url===\'/a.txt\'){
        fs.readFile(wwwDir+\'/a.txt\',function(error,data){
            if(error){//return返回值,阻止代码往后执行
                return res.end(\'404 Not Found\');
            }
            res.end(data);
        });
    }else if(url===\'/index.html\'){
        fs.readFile(wwwDir+\'/index.html\',function(error,data){
            if(error){//return返回值,阻止代码往后执行
                return res.end(\'404 Not Found\');
            }
            res.end(data);
        });
    }else if(url===\'/app/login.html\'){
        fs.readFile(wwwDir+\'/app/login.html\',function(error,data){
            if(error){//return返回值,阻止代码往后执行
                return res.end(\'404 Not Found\');
            }
            res.end(data);
        });
    }
});
server.listen(3000,function(){
    console.log(\'server is running....\');
});

二、可以访问目录下的文件(改进版)

//1.加载模块
var http=require(\'http\');
var fs=require(\'fs\');
//2.创建server
var server=http.createServer();
//3.监听server的request请求事件,设置请求处理函数
var wwwDir=\'C:/Users/Administrator/Desktop/Code\';//设置目录(注意转义符)
server.on(\'request\',function(req,res){
    var url=req.url;
    var filePath=\'/index.html\';
   if(url!==\'/\'){
       filePath=url;
   }
   fs.readFile(wwwDir+filePath,function(error,data){
    if(error){
        return res.end(\'404 not found\');
    }
    res.end(data);
   });
});
server.listen(3000,function(){
    console.log(\'server is running....\');
});

三、实现Apache目录列表功能(利用模板引擎art-template)

  • 安装:npm install art-template(自动默认下载到该命令执行的目录中的node_moudule文件夹里,不能改动,也不支持改动)
  • 在需要使用的文件模块中加载art-template(使用require(‘下载包名字’)方法加载,下载名字就是install后面的名字)
  • 查文档使用模板引擎的API

 

//1.加载模块
var http=require(\'http\');
var fs=require(\'fs\');
var template=require(\'art-template\');
//2.创建server
var server=http.createServer();
//3.监听server的request请求事件,设置请求处理函数
var wwwDir=\'C:/Users/Administrator/Desktop/Code\';//设置目录(注意转义符)
server.on(\'request\',function(req,res){
    var url=req.url;
    // var filePath=\'/index.html\';
   if(url===\'/\'){
        fs.readFile(\'./template.html\',function(err,data){
            if(err){
                return res.end(\'404  found\');
            }
            //res.end(data.toString());
            fs.readdir(wwwDir,function(err,files){
                if(err){
                    return res.end(\'404  found\');
                }
                var htmlStr=template.render(data.toString(),{
                    files:files
               });
               res.end(htmlStr);
            });
        });
   }else{
        var filePath=url;
        fs.readFile(wwwDir+filePath,function(error,data){
            if(error){
                return res.end(\'404 not found\');
            }
            res.end(data);
        });
   }
});
server.listen(3000,function(){
    console.log(\'server is running....\');
});

 

 

以上是关于Nodejs仿Apache的功能的主要内容,如果未能解决你的问题,请参考以下文章

Node学习之(第三章:仿Apache显示目录列表的功能)

基于nodejs仿京东商城系统的设计与实现.zip(论文+源码+ppt文档+视频录制)

nodejs常用代码片段

使用 NodeJS 和 JSDOM/jQuery 从代码片段构建 PHP 页面

javascript 用于在节点#nodejs #javascript内设置react app的代码片段

luvit 被忽视的lua 高性能框架(仿nodejs)