一、初步实现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....');
});

最新文章

  1. Eclipse vs. IDEA快捷键对比大全
  2. [poi2010]Hamsters
  3. Ubuntu 下配置Ganglia监控
  4. Deep learning:四十一(Dropout简单理解)
  5. 腾讯用过的插件jQuery twentytwenty 效果对比
  6. HDOJ 4731 Minimum palindrome
  7. 利用HTML5开发Android(5)---HTML5地理位置服务在Android中的应用
  8. DDoS deflate - Linux下防御/减轻DDOS攻击
  9. 游标的使用实例(Sqlserver版本)
  10. mysql 分区 按 PARTITION BY RANGE (TO_DAYS(startTime))
  11. 矩阵乘法的MPI并行计算
  12. Crazy-Links
  13. 关于ios 程序加载百度地图lib,出现链接错误:找不到符号 (null): _OBJC_CLASS_$_BMKMapManager的解决办法
  14. eazasyui树形菜单
  15. C#最基本的小说爬虫
  16. VirtualBox报错:不能为虚拟电脑XXX打开一个新任务
  17. 逆卷积的详细解释ConvTranspose2d(fractionally-strided convolutions)
  18. MySQL之数据备份、pymysql模块
  19. CentOS7下解决yum install mysql-server 异常:No package mysql-server available.问题
  20. weblogic 控制台访问速度很慢的解决方案

热门文章

  1. 原!!Spring redis的Scan的坑,慎用!
  2. windows 10 如何设定计划任务自动执行 python 脚本?
  3. nrm的安装和使用
  4. Java自学-控制流程 结束外部循环
  5. Hive中的HiveServer2、Beeline及数据的压缩和存储
  6. Synchronized可重入锁通俗易懂的简单分析
  7. oracle之PLSQL导出-导入-表-存储过程等操作--亲测好用
  8. 爬虫入门urlib,urlib2的基本使用和进阶
  9. TOML配置文件
  10. OpenStack核心组件-nova计算服务