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显示目录列表的功能)
前言 今天咱们用Node.js中的核心模块以及上节学习的模板引擎art-template来实现服务器软件Apache的大体功能.用过Apache的朋友都知道,我们只需把本地文件放置在Apache的ww ...
- 【java】org.apache.commons.lang3功能示例
org.apache.commons.lang3功能示例 package com.simple.test; import java.util.Date; import java.util.Iterat ...
- Ubuntu系统下允许Apache的mod_rewrite功能
首先,使能apache的rewirte模块,在shell里输入下边的命令: sudo a2enmod rewrite 然后重启一下webserver使更改生效 sudo service apache2 ...
- NodeJs操作MongoDB之分页功能与常见问题
NodeJs操作MongoDB之分页功能与常见问题 一,方法介绍 1,聚合操作之count count()方法可以查询统计符合条件的集合的总数 db.User.count(<query>) ...
- Linux下Apache配置HTTPS功能
Apache配置HTTPS功能 转 https://www.cnblogs.com/liaojiafa/p/6028816.html 一.yum 安装openssl和openssl-devel,ht ...
- mac 使用apache开启https功能,实现ios局域网内测(一)
笔者尝试了网上各种办法最后还是找到了方法解决了一系列局域网内测的问题,随手做个笔记记录下,亲测可行. 一.先生成证书 1.进入apache web 的根目录处理证书命令 cd /Library/Web ...
- uniapp+nvue开发之仿微信语音+视频通话功能 :实现一对一语音视频在线通话
本篇文章是利用uni-app和nvue实现微信效果功能的第三篇了,今天我们基于uniapp + nvue实现的uniapp仿微信音视频通话插件实例项目,实现了以下功能: 1: 语音通话 2: 视频 ...
- uniapp+nvue实现仿微信App界面+功能 —— uni-app实现聊天+语音+视频+图片消息
基于uniapp + nvue实现的uniapp仿微信界面功能聊天应用 txim 实例项目,实现了以下功能. 1: 聊天会话管理 2: 好友列表 3: 文字.语音.视频.表情.位置等聊天消息收发 4: ...
- Apache配置HTTPS功能
apache配置https 一.yum 安装openssl和openssl-devel,httpd-devel 二.生成证书(也可以从公司的证书颁发机构获取): #建立服务器密钥 openssl ge ...
随机推荐
- golang 之文件操作
文件操作要理解一切皆文件. Go 在 os 中提供了文件的基本操作,包括通常意义的打开.创建.读写等操作,除此以外为了追求便捷以及性能上,Go 还在 io/ioutil 以及 bufio 提供一些其他 ...
- 关闭windows防火墙命令
windows PowerShell (管理员) 或 CMD (管理员) 查看当前防火墙状态:netsh advfirewall show allprofiles 关闭防火墙:netsh advfir ...
- Spring boot java.lang.NoClassDefFoundError: org/springframework/boot/bind/RelaxedPropertyResolver
Spring boot 2.0.3 RELEASE 配置报错 java.lang.NoClassDefFoundError: org/springframework/boot/bind/Relaxed ...
- 应用中有多个Spring Property PlaceHolder导致@Value只能获取到默认值
背景 工作中负责的一套计费系统需要开发一个新通知功能,在扣费等事件触发后发送MQ,然后消费MQ发送邮件或短信通知给客户.因为有多套环境,测试时需要知道是从哪套环境发出的邮件,又不想维护多套通知模板,因 ...
- Idea中类实现Serializable接口 引入 serialVersionUID
idea实现Serializable接口,然后打出serialVersionUID的办法 setting>editor>Inspection>Java>Serializatio ...
- java之spring之对象的创建
首先提供目录结构如下: 下面提供各文件代码,以供参考: UserDynamicFactory.java package cn.sxt.factory; import cn.sxt.vo.User; / ...
- IEnumerable,ICollection,IList,List的使用
做C#的都知道:一类只能有一个继承类,但可以实现多个接口.这句话就告诉我们:IEnumerable,ICollection,IList,List区别了 首先我看看 IEnumerable: // ...
- 【转载】JAVA SpringBoot 项目打成jar包供第三方引用自动配置(Spring发现)解决方案
JAVA SpringBoot 项目打成jar包供第三方引用自动配置(Spring发现)解决方案 本文为转载,原文地址为:https://www.cnblogs.com/adversary/p/103 ...
- Date类的相关方法记录
1.Date类中的时间单位是毫秒,System.currentTimeMills()方法就是获取当前时间到1970年1月1日0时0分0秒(西方时间)的毫秒数. public class Test6 { ...
- 2019 58同城java面试笔试题 (含面试题解析)
本人3年开发经验.18年年底开始跑路找工作,在互联网寒冬下成功拿到阿里巴巴.今日头条.58同城等公司offer,岗位是Java后端开发,最终选择去了58同城. 面试了很多家公司,感觉大部分公司考察的点 ...