/**
* node入门之综合案例(一):简易路由
* @Author : by Ghost
* @Date : 2016/07/11
* @Description :
* 1、引入以下模块
* http模块:创建服务器,处理请求和相应
* URL模块:解析url请求地址
* fs模块:读取文件
* path模块:处理文件路径,获取文件后缀名,路径优化
*
* 2、使用http.createServer()方法创建服务器
* 3、使用url.parse()方法解析浏览器请求路径
* 4、使用fs.readFile()方法读取对应的静态文件
* 5、使用path.extname()方法获取文件后缀名
* 6、设置MIME类型,实现文件兼容
* */ //引入模块
var http = require('http');
var url = require('url');
var fs = require('fs');
var path = require('path'); //创建服务器,监听3000端口
var server = http.createServer(function (req, res) {
//屏蔽/favicon.ico的请求
if(req.url === '/favicon.ico')
{
return ;
}; //解析请求路径
var pathname = url.parse(req.url).pathname; //默认首页
if(pathname.indexOf('.') === -1)
{
pathname = "/index.html"
}; //获取文件后缀名
var extname = path.extname(pathname); //读取文件
fs.readFile('./static/' + pathname, function (err,data) {
//如果出错则表示请求路径不正确,显示404
if(err){
fs.readFile("./static/404.html",function(err,data){
res.writeHead(404,{"Content-Type":"text/html;charset=UTF-8"});
res.end(data);
});
return;
}; //读取数据
//结束响应
getMime(extname,function(mime){
res.writeHead(200,{"Content-Type": mime});
res.end(data);
});
});
}); //设置监听端口
server.listen(3000,'127.0.0.1', function () {
console.log("server is started listen port 3000");
}); //getMIME()
function getMime(extname,callback)
{
fs.readFile('./static/mime.json', function (err,data) {
if(err)
{
throw Error("找不到mime.json文件");
return;
};
var mimeJson = JSON.parse(data);
var mime = mimeJson[extname] || "text/plain";
//执行回调函数,结束异步问题
callback(mime);
});
}

node.js系列(实例):原生node.js实现静态资源管理的更多相关文章

  1. node.js系列笔记之node.js初识《一》

    node.js系列笔记之node.js初识<一> 一:环境说明 1.1 Linux系统CentOS 5.8 1.2 nodejs v0.10.15 1.3 nodejs源码下载地址 htt ...

  2. js系列(10)js的运用(二)

        本节继续介绍在html页面中js的运用.   (1)数码时钟:(http://files.cnblogs.com/files/MenAngel/text05.zip) <!DOCTYPE ...

  3. js系列(9)js的运用(一)

        本节开始介绍javascript在html页面中的运用.     (1)link样式表的动态绑定:(http://files.cnblogs.com/files/MenAngel/text04 ...

  4. node.js系列(实例):原生node.js实现接收前台post请求提交数据

    前台界面: 前台代码: <form class="form-horizontal" method="post" action="http:127 ...

  5. node.js系列(实例):原生node.js+formidable模块实现简单的文件上传

    /** * 原生node.js结合formidable模块实现图片上传改名 * @Author:Ghost * @Date:2016/07/15 * @description: * 1.引入模块htt ...

  6. Node.js系列——(4)优势及场景

    背景 之前几篇系列文章简单介绍了node.js的安装配置及基本操作: Node.js系列--(1)安装配置与基本使用 Node.js系列--(2)发起get/post请求 Node.js系列--(3) ...

  7. Node.js系列-http

    前言: 最近一直忙着公司项目的事,战友们的留言也没空回复,博客也有段时间没有更新了,年底了就是一个的忙啊~~~(ps:同感的也给个赞吧) 现在前端的就是一直地更新一直有新的东西出来,什么ES2015, ...

  8. Node.js系列-express(上)

    前言 Node.js系列的第一篇:http,大概描述了通过使用node.js内置的api创建一个服务并监听request实现简单的增删改查.现在,我们就通过通读express官网及使用express框 ...

  9. Node.js实战项目学习系列(1) 初识Node.js

    前言 一直想好好学习node.js都是半途而废的状态,这次沉下心来,想好好的学习下node.js.打算写一个系列的文章大概10几篇文章,会一直以实际案例作为贯穿的学习. 什么是node Node.js ...

  10. Node.js系列基础学习----安装,实现Hello World, REPL

    Node.js基础学习 简介 简单的说 Node.js 就是运行在服务端的 JavaScript.Node.js 是一个基于Chrome JavaScript 运行时建立的一个平台.Node.js是一 ...

随机推荐

  1. linux 压缩zip包

    压缩: zip -r  名称.zip 被压缩文件 解压: unzip 名称.zip

  2. Django|第一部

    Django · Django流程 · Django url · Django view · Django form ①:Django流程介绍 MTV模式 注明的MVC模式:所谓MVC就是把web应用 ...

  3. KMP算法的优化与详解

    文章开头,我首先抄录一些阮一峰先生关于KMP算法的一些讲解. 下面,我用自己的语言,试图写一篇比较好懂的 KMP 算法解释. 1. 首先,字符串"BBC ABCDAB ABCDABCDABD ...

  4. TokuDB性能测试报告

    一 .背景介绍 近年来,TokuDB作为MySQL的大数据(Big Data)存储引擎受到人们的普遍关注.其架构的核心基于一种新的叫做分形树(Fractal Trees)的索引数据结构,该结构是缓存无 ...

  5. 从零开始部署小型企业级虚拟桌面 -- Vmware Horizon View 6 For Linux VDI -- 概念简介

    什么是桌面虚拟化? 桌面虚拟化有很多概念,此处谈论的,是指的一般企业使用的“服务器 + 虚拟机 + 云终端”的方式来实现的. 桌面虚拟化的原理是什么? 桌面虚拟化看上去高大上,实际上原理非常的简单.拿 ...

  6. C++ protected访问权限思考

    看了云风关于protected的思考,自己也总结了下. C++的访问权限有三个 private.protected.public. 如果不包括继承的话,比较好理解,可以分为类外和类内两部分.类外不能访 ...

  7. Spring Boot HTTP over JSON 的错误码异常处理

    摘要: 原创出处:www.bysocket.com 泥瓦匠BYSocket 希望转载,保留摘要,谢谢! “年轻人不要怕表现,要敢于出来表现,但还是那句话,要有正确的度,你的表现是分析问题和解决问题的能 ...

  8. mysql新建数据库时的collation选择(转)

    转自别处的文章.末尾附原文链接 mysql的collation大致的意思就是字符序.首先字符本来是不分大小的,那么对字符的>, = , < 操作就需要有个字符序的规则.collation做 ...

  9. [Linux] PHP程序员玩转Linux系列-自动备份与SVN

    我的代码经常在开发修改,为了代码的安全性,比如哪天误删了文件,或者哪天改错东西了,可以恢复回来,我要搞代码备份.备份代码,我先做最简单的,使用linux的定时机制加shell命令打包文件,每天按日期保 ...

  10. Android知识点网址

    1.proguard字段详解 http://blog.csdn.net/jddkdd2/article/details/8858909 2.android提示框(时间,普通单选.多选对话框),常用控件 ...