博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
从头编写一个 HTTP 静态资源服务器
阅读量:7079 次
发布时间:2019-06-28

本文共 1403 字,大约阅读时间需要 4 分钟。

hot3.png

首先需要的Node 模块有 http,url,path,fs 模块。

// 提供一个http 服务var http = require('http');// 用于处理 url 字符串和 url对象var url = require('url');// 用于处理文件路径var path = require('path');// fs 模块  用于读取文件的var fs = require('fs');

然后要用 http模块来创建一个http模块。

http.createServer(function(request,response){  // })

当一个http 请求过来的时候,需要解析request.url 字段,利用url.parse()将request.url 字符串转义成url 对象。

var pathName = url.parse(request.url).pathname;

这里假设的是把js文件所在的目录作为静态服务器的地址。

var realName = path.join('.', pathName);

然获取到请求资源的文件类型

var ext = path.extname(pathName);ext = ext ? ext.slice(1) : 'unknown';

然后判断文件是否存在,如果存在,则返回文件,否者返回404

// 判断文件是否存在。fs.exists(realName, function (exists) {})

如果不存在

if (!exists) {   response.writeHead(404, {'Context-type' : 'text/plain'});   response.write('this request url' + pathName + ' was not found on this server.');   response.end();}

如果文件存在,则读取文件的二进制流

var requestType = {    "css" : "text/css",    "js" : "text/javascript",    "html":"text/html"};fs.readFile(realName, 'binary', function (err, file) {     if (err) {        response.writeHead(500, {'Context-type' : 'text/plain'});       response.end(err);     }     else {           var contentType = requestType[ext] || "text/plain";           response.writeHead(200, {'Context-type' : contentType});           response.write(file, 'binary');           response.end();     }});

这样,一个简单的HTTP 静态资源服务器就写好了。

贴上项目地址:

转载于:https://my.oschina.net/bosscheng/blog/2240234

你可能感兴趣的文章
细节是否真的打败爱情,十年后你还会爱我吗?
查看>>
Windows Phone 8 SDK RC 版推出
查看>>
Database2Sharp代码生成工具使用心得
查看>>
稀疏矩阵的十字链表存储
查看>>
【算法导论第13章】红黑树
查看>>
对PostgreSQL中bufmgr.c 中 bufs_to_lap的初步理解
查看>>
Windows 内存分析之路 --How to use Resource Monitor
查看>>
文件上传
查看>>
理解maven的核心概念
查看>>
一个简单的名片管理程序(C#)
查看>>
max tablename length limit in MySQL is 64
查看>>
Ubuntu 12.04 中国科学技术大学源
查看>>
Ubuntu12.10 Server 安装 VirtualBox-4.2.6 (64位) 过程详解
查看>>
(转)c#实现WinRAR解压缩
查看>>
MIME
查看>>
NetworkInterface的使用
查看>>
海外澳洲技术移民花费一览表(2006年11月完整版) - Topboy - 博客园
查看>>
vs2010 命令行下用 msbuild 发布web站点
查看>>
在IIS上启用Gzip压缩(HTTP压缩)
查看>>
16进制字符串和字节数组的转换
查看>>