一、初步实现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的部分功能的更多相关文章

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

    前言 今天咱们用Node.js中的核心模块以及上节学习的模板引擎art-template来实现服务器软件Apache的大体功能.用过Apache的朋友都知道,我们只需把本地文件放置在Apache的ww ...

  2. 【java】org.apache.commons.lang3功能示例

    org.apache.commons.lang3功能示例 package com.simple.test; import java.util.Date; import java.util.Iterat ...

  3. Ubuntu系统下允许Apache的mod_rewrite功能

    首先,使能apache的rewirte模块,在shell里输入下边的命令: sudo a2enmod rewrite 然后重启一下webserver使更改生效 sudo service apache2 ...

  4. NodeJs操作MongoDB之分页功能与常见问题

    NodeJs操作MongoDB之分页功能与常见问题 一,方法介绍 1,聚合操作之count count()方法可以查询统计符合条件的集合的总数 db.User.count(<query>) ...

  5. Linux下Apache配置HTTPS功能

    Apache配置HTTPS功能  转 https://www.cnblogs.com/liaojiafa/p/6028816.html 一.yum 安装openssl和openssl-devel,ht ...

  6. mac 使用apache开启https功能,实现ios局域网内测(一)

    笔者尝试了网上各种办法最后还是找到了方法解决了一系列局域网内测的问题,随手做个笔记记录下,亲测可行. 一.先生成证书 1.进入apache web 的根目录处理证书命令 cd /Library/Web ...

  7. uniapp+nvue开发之仿微信语音+视频通话功能 :实现一对一语音视频在线通话

    ​ 本篇文章是利用uni-app和nvue实现微信效果功能的第三篇了,今天我们基于uniapp + nvue实现的uniapp仿微信音视频通话插件实例项目,实现了以下功能: 1: 语音通话 2: 视频 ...

  8. uniapp+nvue实现仿微信App界面+功能 —— uni-app实现聊天+语音+视频+图片消息

    基于uniapp + nvue实现的uniapp仿微信界面功能聊天应用 txim 实例项目,实现了以下功能. 1: 聊天会话管理 2: 好友列表 3: 文字.语音.视频.表情.位置等聊天消息收发 4: ...

  9. Apache配置HTTPS功能

    apache配置https 一.yum 安装openssl和openssl-devel,httpd-devel 二.生成证书(也可以从公司的证书颁发机构获取): #建立服务器密钥 openssl ge ...

随机推荐

  1. C++ 的多继承与虚继承

    C++之多继承与虚继承   1. 多继承 1.1 多继承概念 一个类有多个直接基类的继承关系称为多继承 多继承声明语法 class 派生类名 : 访问控制 基类名1, 访问控制 基类名2, ... { ...

  2. UIView与CALayer的区别,很详细(基础教学拓展)转

    研究Core Animation已经有段时间了,关于Core Animation,网上没什么好的介绍.苹果网站上有篇专门的总结性介绍,但是似乎原理性的东西不多,看得人云山雾罩,感觉,写那篇东西的人,其 ...

  3. php正则表达式中preg_match_all函数的详解

    php正则表达式中的函数我们之前为大家结果一个preg_match函数,相信大伙对此有所了解,那么php正则表达式中preg_match_all函数的具体使用是如何的呢?今天我们就带大家了解php正则 ...

  4. Mybatis 中的转义字符及常用查询

    转译符 1.特殊字符转译 < < 小于 > > 大于 & & 与 ' ’ 单引号 " " 双引号 需要注意的是分号是必不可少的. 比如 a ...

  5. 归并排序python实现源码

    将开发过程经常用到的一些代码片段收藏起来,下面的资料是关于归并排序python实现的代码,应该能对码农们有一些用. def mergesort(arr): if len(arr) == 1: retu ...

  6. zookeeper介绍(4)zookeeper的完整分布式

    参考: zookeeper的单机和伪分布式教程请参考:zookeeper介绍(1)zookeeper介绍与安装 Zookeeper的完整分布式集群搭建: 准备好三台centos主机:(在这我使用的是z ...

  7. day 07 预科

    目录 异常处理 字符串内置方法 1.索引取值 2.切片 3.成员运算 4.for循环 5.len() 6.strip(): 默认去掉两端空格 7.lsteip()/rstrip(): 去左端/右端 空 ...

  8. 二十五、sql中where条件在数据库中提取与应用浅析

    问题描述 一条SQL,在数据库中是如何执行的呢?相信很多人都会对这个问题比较感兴趣.当然,要完整描述一条SQL在数据库中的生命周期,这是一个非常巨大的问题,涵盖了SQL的词法解析.语法解析.权限检查. ...

  9. HBase集群环境搭建v2.0

    本文档环境基于ubuntu16.04版本,如果最终不使用SuperMap iServer 10i ,可以不配置geomesa-hbase_2.11-2.2.0-bin.tar.gz 相比1.0版本,升 ...

  10. CAS 的问题

    cas这么好用,那么有没有什么问题呢?还真有 ABA问题 CAS需要在操作值的时候检查下值有没有发生变化,如果没有发生变化则更新,但是如果一个值原来是A,变成了B,又变成了A,那么使用CAS进行检查时 ...