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 ...
随机推荐
- Linux下使用strip如何对库和可执行文件进行裁减
如果生成的可执行文件或库比较大,这时候就可以使用strip命令进行裁减,在嵌入式开发中,如果使用的交叉编译工具是arm-linux,则命令 是arm-linux-strip,如果是arm-uclibc ...
- golang 之 go-micro
在安装之前首先需要对go-micro有一定的了解 https://micro.mu/docs/cn/ go-micro中文文档 https://juejin.im/post/5cebafe6f265 ...
- 一文读懂 IPv4 到 IPv6 的过渡技术
在介绍 IPv4 到 IPv6 过渡技术之前,我们先来简单了解一下 IPv4 和 IPv6.什么是 IPv4?IPv4 全称为 Internet Protocol version 4,它为互联网上的每 ...
- Idea中类实现Serializable接口 引入 serialVersionUID
idea实现Serializable接口,然后打出serialVersionUID的办法 setting>editor>Inspection>Java>Serializatio ...
- C# 练习题 将一个正整数分解质因数
题目:将一个正整数分解质因数.例如:输入90,打印出90=2*3*3*5.程序分析:对n进行分解质因数,应先找到一个最小的质数k,然后按下述步骤完成:(1)如果这个质数恰等于n,则说明分解质因数的过程 ...
- CentOS7配置网卡上网、安装wget、配置163yum源
2019/09/12,CentOS 7 VMware 摘要:CentOS7安装完成(最小化安装)后,不能联网(已选择桥接网络),需要修改配置文件及配置yum源 修改配置文件 进入网卡配置目录 cd / ...
- aria2 cmd set chmod, and others..
import 'package:flutter/material.dart'; import 'dart:io'; import 'dart:async'; import 'package:rxdar ...
- 【转载】TX - row lock contention 的一些场景
TX - row lock contention 的一些场景 原创 2016-07-11 易欣 云和恩墨 易欣(Eson) 云和恩墨技术专家 本文整理来自7月7日周四晚云和恩墨大讲堂嘉宾易欣分享的主题 ...
- appium自动化webview时遇到的chromedriver问题
安卓app里面的网页,基本上都是使用手机系统上的webview 去显示的. 安卓 webview 可以看成是 手机上的 chrome 浏览器精简版. appium desktop 里面内置了 用于 w ...
- win下maridb 10.1.8下主从复制配置
主库配置 server_id=1read-only=0replicate-do-db=mydatalog-bin=mysql-bin 主库权限设置 GRANT replication slave ON ...