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 ...
随机推荐
- An Illustrated Proof of the CAP Theorem
An Illustrated Proof of the CAP Theorem The CAP Theorem is a fundamental theorem in distributed syst ...
- Linux RedHat7.0_64位系统中安装Oracle_11g_R2
步骤一: 当然是安装rhel7操作系统啦(废话),建议在安装过程中系统软件类型选择最后一项[Server with GUI].其他的默认一般即可. 步骤二:在初装完成的系统中无法像Windows那样直 ...
- 自学Python编程的第十一天----------来自苦逼的转行人
2019-09-21-23:00:26 今天看了很多博客网的博客,看完觉得自己的博客真的是垃圾中的垃圾 新手不知道怎样写博客,我也很想写好一篇能让人看的博客,但是目前水平不够 只能慢慢改,今天的博客还 ...
- 换个语言学一下 Golang (9)——结构体和接口
基本上到这里的时候,就是上了一个台阶了.Go的精华特点即将展开. 结构体定义 上面我们说过Go的指针和C的不同,结构体也是一样的.Go是一门删繁就简的语言,一切令人困惑的特性都必须去掉. 简单来讲,G ...
- aria2 adduri
demo, ok import 'package:flutter/material.dart'; import 'package:permission_handler/permission_handl ...
- 【开发笔记】- MySQL EXPLAIN用法和结果的含义
转自:http://blog.chinaunix.net/uid-540802-id-3419311.html explain显示了mysql如何使用索引来处理select语句以及连接表.可以帮助选择 ...
- Linux排查PHP-FPM进程过量常用命令
命令如下: 查看每个PHP-FPM进程的内存占用:ps -ylC php-fpm –sort:rss 查看消耗内存最多的前 40 个进程:ps auxw|head -1;ps auxw|sort -r ...
- Python学习日记(三十二) hmac检验客户端的合法性和socketsever模块
Hmac模块 其实这个模块类似hashlib模块,它能将一些重要的信息通过算法加密成密文,让信息更具有安全性. 关于hmac加密算法的了解:它的全名是哈希运算消息认证码(Hash-based Mess ...
- Unicode字符集的由来
*:first-child { margin-top: 0 !important; } .markdown-body>*:last-child { margin-bottom: 0 !impor ...
- Linux操作系统之grub加密实战案例
Linux操作系统之grub加密实战案例 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.为grub设置明文密码案例 1>.修改"/boot/grub/grub. ...