自己动手搭建一个简单的静态资源服务器
文章目录
- 自己动手搭建一个简单的静态资源服务器
- 介绍
- 一、设计到的模块
- 备注:
- 二、代码结构
- 三、具体代码
自己动手搭建一个简单的静态资源服务器
介绍
通过此文章的学习,可以自己使用NodeJs搭建一个简单的静态资源服务器,部署在云端后实现远程访问静态资源的目的。来实现通过网络在别处引用资源的目的。
比如你服务器有一个 名称为 avata.png 的图片,当你部署成功之后,可以使用 http://host:port/public/imgs/avata.png 的网络路径来进行访问这个图片资源。
目录结构:将脚本放入你想访问的文件夹内以后,在文件资源管理器的地址栏输入cmd,启动控制台 ,然后执行 node run 命令来启动静态资源服务器
一、设计到的模块
- http
- path
- fs
备注:
对中文支持不友好,访问中文路径由于浏览器会自动进行URL编码,会导致后台无法正确识别,从而导致访问不到中文路径。
不想引入额外的第三方库,所以暂时只能访问中文路径,对中文请使用拼音代替。
二、代码结构
三、具体代码
// 做一个静态资源服务器const http = require('http');
const path = require('path');
const fs = require('fs');
const port = 8848; // 要监听的端口号,可以根据自己的需要进行修改/*** 过去文件的内容,文件不存在则返回 null* @param {文件的地址栏路径} url * @returns 文件的内容*/
const getFileContent = async (filename) => {// 1. Judge whether the file existsconst stat = await getStat(filename);if (!stat) {// file does not existreturn null;} else if (stat.isDirectory()) {// file is a directory,default access /index.htmlfilename = path.resolve(filename, "index.html");// 拼接好完整路径后再次调用该方法来获取文件的内容,但应该设置好方法的出口,防止无限递归return await getFileContent(filename);}else {// Run here indicates that the file existsreturn await fs.promises.readFile(filename);}
}/*** 获取文件状态,不存在则返回 null* @param {完整文件路径} filename * @returns 文件的状态信息对象 Stat*/
const getStat = async (filename) => {try {const file = await fs.promises.stat(filename);return file;}catch (error) {return null;}
}const handler = async (req, res) => {// 如果后面跟的路径是 / 开头的,则会定位到根目录下进行查找const userPath = req.url.toString("utf-8");let filename = path.resolve(__dirname, "public", userPath.substr(1));const buffer = await getFileContent(filename);if (buffer) {res.write(buffer);} else {res.statusCode = 404;res.write("Resource not found!!!");}res.end();
};const server = http.createServer(handler);server.on('listening', () => {console.log('listen start', port);})server.listen(port);
自己动手搭建一个简单的静态资源服务器相关推荐
- 最简单的静态资源服务器(超级详细)
提示:本文有参考其他前端部署相关资源,侵权请联系作者删除 目录 一.前言 二.基础知识 三.入手部署最简单的静态资源服务器 1.手写最简单的静态资源服务器:响应字符串 2.手写简单静态资源服务器: 响 ...
- Linux上利用nginx搭建一个简单的rtmp视频流服务器(不涉及直播)
文章目录 Linux上利用nginx搭建一个简单的rtmp视频流服务器(不涉及直播) 一.基础环境搭建 二.构建Nginx 下载nginx-rtmp-module 安装Nginx 编译nginx,代理 ...
- 自己动手搭建一个简单的网站
我准备搭建一个属于自己的网站,一方面是了解建站的知识,另一个方面是为了测试Http请求相关的内容. 建站资料 下面是建站需要的资料: 服务器:也就是高级一点的电脑,它主要用来存放网页数据: web服务 ...
- 一个简单的静态web服务器
用python的socket写的一个简单多进程服务器 #-*-coding:utf-8-*- import re from socket import * from multiprocessing i ...
- 一个简单的静态web服务器实现
看完tomcat原理后,想自己用java仿一个简单的tomcat,先实现一个静态的web服务器.需要的技术有java网络编程(tcp/ip协议.http协议.socket等基础知识) 源码下载链接ht ...
- 用centos搭建一个简单的求生之路2服务器(用于好友联机降低延迟,不包含插件)
转自自己的社团网站 由于和好友联机玩求生之路2时经常出现mod兼容性问题和高ping值问题,游戏体验非常差,而且官方服务器并不能支持第三方地图,所以我们决定自己搭建一个服务器. 不过不知道什么原因,网 ...
- 求生之路寻找延迟服务器,用centos搭建一个简单的求生之路2服务器(用于好友联机降低延迟,不包含插件)...
由于和好友联机玩求生之路2时经常出现mod兼容性问题和高ping值问题,游戏体验非常差,而且官方服务器并不能支持第三方地图,所以我们决定自己搭建一个服务器. 不过不知道什么原因,网上关于搭建l4d2服 ...
- DNS浅析-Bind软件的使用及搭建一个简单的DNS缓存服务器
引入DNS软件: Bind:Berkey Information Name Domain 对数据库的支持不太好,不支持多线程 PowerDNS 性能强大 速 度块 Bind软件的配置使用 yum l ...
- 【原创】分布式之缓存击穿 【原创】自己动手实现静态资源服务器 【原创】自己动手实现JDK动态代理...
[原创]分布式之缓存击穿 什么是缓存击穿 在谈论缓存击穿之前,我们先来回忆下从缓存中加载数据的逻辑,如下图所示 因此,如果黑客每次故意查询一个在缓存内必然不存在的数据,导致每次请求都要去存储层去查询, ...
最新文章
- React + Koa 实现服务端渲染(SSR)
- 【教程】TestComplete测试桌面应用程序教程(四)
- extjs 验证消息不显示
- LATEX调整公式、图片与正文间距离,文字间距离,调整空白大小
- linux 2.6.35 内核配置 usb,Linux 2.6.24.4移植到S3C2410(nano2410)之:USB
- 栈溢出笔记1.2 覆盖EIP
- 如果深入学习前端,大佬给你总结了几个技巧!
- 论文翻译:MichiGAN: Multi-Input-Conditioned Hair Image Generation for Portrait Editing
- HTTP/1 已死!
- 【linux】make出现遗漏分隔符
- ffmpeg主要数据结构及其之间的关系
- XPS数据分析问题收集及解答
- 【MCM-2017】2017年数学建模美赛题目原文及翻译-B (个人思路)
- 2019年最新整理:1000多套完整微信小程序源码不同行业源码集合
- 个人所得税纳税记录(原税收完税证明)下载方法
- Mac(3) Parallels Desktop 安装 Windows10专业版
- 基于树莓派语音合成小白避坑
- 原生JS 实现网易云音乐
- C++反射:全方位解读Lura库的前世今生!
- java 粒度_Java函数保留粒度