原生node写一个静态资源服务器】的更多相关文章

myanywhere 用原生node做一个简易阉割版的anywhere静态资源服务器,以提升对node与http的理解. 相关知识 es6及es7语法 http的相关网络知识 响应头 缓存相关 压缩相关 path模块 path.join拼接路径 path.relative path.basename path.extname http模块 fs模块 fs.stat函数 使用 fs.stat函数取得stats来获取文件或文件夹的参数 stats.isFile 判断是否为文件夹 fs.createR…
对于Node.js新手,搭建一个静态资源服务器是个不错的锻炼,从最简单的返回文件或错误开始,渐进增强,还可以逐步加深对http的理解.那就开始吧,让我们的双手沾满网络请求! Note: 当然在项目中如果有使用express框架,用express.static一行代码就可以达到目的了: app.use(express.static('public')) 这里我们要实现的正是express.static背后所做工作的一部分,建议同步阅读该模块源码. 基本功能 不急着写下第一行代码,而是先梳理一下就基…
在学习node的时候都会练习做一个聊天室的项目,主要使用socket.io模块和http模块.这里我们使用更加原始的方式去写一个在命令行聊天的聊天室. http模块,socket.io都是高度封装之后的模块,我们使用更加原始的net模块来做. socket 做聊天室,我们首先要了解一下socket,用百度百科上的定义:网络上的两个程序通过一个双向的通信连接实现数据的交换,这个连接的一端称为一个socket.socket对TCP/IP封装提供网络开发的接口,提供网络通信的接口.详细可以看看各种百科…
打开github,在github上创建新项目: Repository name: anydoor Descripotion: Tiny NodeJS Static Web server 选择:public 选择:Initialize this repository with a README 添加gitignore文件:Add .gitignore:Node 添加License文件:Add a license: MIT License git clone 该项目地址到本地文件夹 .gitigno…
我们的目标是实现一个可访问静态文件的服务器,即可以在浏览器访问文件夹和文件,通过点击来查看文件. 1.先创建一个文件夹anydoor,然后在该文件夹里npm init一个package.json文件,按如下图所示创建文件夹和文件(node_models,package-lock.json是安装生成,不用自己创建).为了方便管理,我们把一些设置性和公共的参数放在defaultConfig.js里,方便后期的更改和管理,在app.js中创建一个服务器. //app.js,(npm install c…
安装 npm install yumu-static-server -g 使用 shift+鼠标右键  在此处打开Powershell 窗口 server # 会在当前目录下启动一个静态资源服务器,默认端口为8080 server -p[port] 3000 # 会在当前目录下启动一个静态资源服务器,端口为3000 server -i[index] index.html # 设置文件夹在默认加载的文件 server -c[charset] UTF-8 # 设置文件默认加载的字符编码 server…
极简 Node.js 入门系列教程:https://www.yuque.com/sunluyong/node 本文更佳阅读体验:https://www.yuque.com/sunluyong/node/static-server 在创建 HTTP 服务器实现了一个最简单的静态资源服务器,可以对代码进行写改造,增加文件夹预览功能,暴露出一些配置,变成一个可定制的静态资源服务器模块 模块化 可定制的静态资源服务器理想的使用方式应该是这样的 const StaticServer = require('…
实现思路 首先读取当前路径下所有的文件和文件夹 当去点击某个列表项时判断其实文件还是文件夹,文件的话直接读取,文件夹则再次利用上一个步骤读取并展示 文件结构 代码 index.js 入口文件 const Koa = require('koa') const path = require('path') const getContent = require('./util/content') const mimes = require('./util/mimes') const app = new…
第一次接触nginx的时候,那时候公司还是用的一些不知名的小技术,后来公司发展问题,重新招了人,然后接触到nginx,公司 使用nginx用来做代理服务器,所有请求 都先经过nginx服务器,然后交由nginx服务器具体选择 哪台服务器 处理该请求,知道大概意思,也没深究,回顾一下当初学习掌握 nginx的过程 1.什么是nginx: nginx是一款高性能的http 服务器,也可以当做是反向代理服务器,俄罗斯程序设计,支撑5W左右的并发连接  并且cpu.内存等资源消耗却非常低,运行非常稳定…
背景 限制 SPA 应用已经成为主流,在项目开发阶段产品经理和后端开发同学经常要查看前端页面,下面就是我们团队常用的使用 express 搭建的 SPA 静态资源服务器方案. 为 SPA 应用添加入口(index.html)的 sendFile 当 SPA 应用开启 html5 mode 的情况下,指定 url 下(<base href="/">的情况为/)的全部请求都会访问入口文件(一般情况下是 index.html),然后 SPA 应用会根据 url 再去决定访问的实际…
项目初始化 .gitignore cnpm i eslint -D eslint --init得到.eslintrc.js .eslintrc.js module.exports = { 'env': { 'browser': true, 'commonjs': true, 'es6': true }, 'extends': 'eslint:recommended', 'globals': { 'Atomics': 'readonly', 'SharedArrayBuffer': 'readon…
Cli(command-line interface),中文是 命令行界面,简单来说就是可以通过命令行快速生成自己的项目模板等功能(比较熟悉的是vue-cli脚手架这些),把上述写的包做成Cli工具. 延续上一次的代码,这次现在readme.md里面先注释告诉用户又那些命令行的语句具体对应哪些功能 step1:README.md # anydoor Tiny NodeJS Static Web server ##安装 ``` npm i -g anydoor ``` ##使用方法 ``` any…
[原创]分布式之缓存击穿   什么是缓存击穿 在谈论缓存击穿之前,我们先来回忆下从缓存中加载数据的逻辑,如下图所示 因此,如果黑客每次故意查询一个在缓存内必然不存在的数据,导致每次请求都要去存储层去查询,这样缓存就失去了意义.如果在大流量下数据库可能挂掉.这就是缓存击穿.场景如下图所示: 我们正常人在登录首页的时候,都是根据userID来命中数据,然而黑客的目的是破坏你的系统,黑客可以随机生成一堆userID,然后将这些请求怼到你的服务器上,这些请求在缓存中不存在,就会穿过缓存,直接怼到数据库上…
java web的项目中,我们经常将项目部署到Tomcat或者jetty上,可以通过Tomcat或者jetty启动的服务来访问静态资源.但是随着Nginx的普及,用Nginx来作为静态资源服务器,似乎有着更高的性能.接下来的Nginx——静态资源服务器系列随笔,我想探讨以下几个问题: Nginx作为静态资源服务器,有什么优势? Nginx如何和tomcat结合起来使用? Nginx如何搭建CDN? 等等 静态资源是指非服务器运行动态生成的文件,主要包括浏览器端渲染(html.css.js).图片…
静态资源服务器 什么是静态资源服务器 我们无论做什么项目,都会有一些页面中需要显示的静态资源,例如图片,视频文档等 我们一般会创建一个单独的项目,这个项目中保存静态资源 其他项目可以通过我们保存资源的路径访问 为什么需要静态资源服务器 原因是静态资源服务器可以将项目需要的所有图片统一管理起来 当其他模块需要图片时,可以从数据库中直接获得访问静态资源的路径即可 方便管理所有静态资源…
最近一两年用C++写了好几个基于TCP通信类型程序,都是写一个小型的服务器,监听请求,解析自定义的协议,处理请求,返回结果.每次写新程序时都把老代码拿来,修改一下协议解析部分和业务处理部分,然后就一个新的程序就诞生了.如此这般做了几回,就萌生了一个想法:是不是可以做一个通用的服务器程序,每次只要实现很少的代码就可以构建的一个新的服务器程序? 巧的是在用C++写代码的时候,我刚好碰到过一个叫做Push Framework的开源项目(在这里可以找到:www.pushframework.com),就是…
CBrother脚本语言10分钟写一个拯救“小霸王服务器”的程序 到了一家新公司,接手了一坨c++服务器代码,到处内存泄漏,这服务器没有数据库,挂了后重启一下就好了,公司就这么凑活着用了几年了,定时重启吧,也不是天天挂,不定时重启吧,说不准哪天就挂了...... 小公司,从写代码到维护就我一个人,每到下班后或者周末,电话一响,我就知道挂了,得找电脑重启一下,要是出去玩了还得找网吧,装个远程软件吧,公司说服务器之前被远程软件黑过,不准装,烦. 想着弄个什么程序在手机上点一下就给重启了就好了,咱这种…
用原生js写一个"多动症"的简历 预览地址源码地址 最近在知乎上看到@方应杭用vue写了一个会动的简历,觉得挺好玩的,研究一下其实现思路,决定试试用原生js来实现. 会动的简历实现思路 这张会动的简历,就好像一个打字员在不断地录入文字,页面呈现动态效果.又好像一个早已经录制好影片,而我们只是坐在放映机前观看. 原理分两个部分 页面能看见的不断跳动着的增加的文字,由innerHTML控制 页面的布局效果由藏在"背后的"style标签完成 想象一下你要往一张网页每间隔0…
Node.js是JavaScript基础上发展起来的语言,所以前端开发者应该天生就会一点.一般我们会用它来做CLI工具或者Web服务器,做Web服务器也有很多成熟的框架,比如Express和Koa.但是Express和Koa都是对Node.js原生API的封装,所以其实不借助任何框架,只用原生API我们也能写一个Web服务器出来.本文要讲的就是不借助框架,只用原生API怎么写一个Web服务器.因为在我的计划中,后面会写Express和Koa的源码解析,他们都是使用原生API来实现的.所以本文其实…
昨天买了一个服务器想着用来测试一些自己的项目,由于是第一次建站,在tomcat,linux,node.js间想了好久.最终因为node搭建比较方便没那么麻烦就决定用node.js来搭建网站项目. 搭建服务器也很简单首先下载安装node.js后,建立一个项目文件夹再在文件夹下建一个js文件可任意取名,这个文件对项目进行配置 全部配置如下: "use strict"; //加载所需要的模块 var http = require('http'); var url = require('url…
搭建静态资源web服务器 1,创建静态页面 在nginx的安装目录(/usr/local/nginx)下创建文件夹webapplications/helloworld,然后创建一个名为index.html的页面. 2,修改配置文件 打开nginx的配置文件(默认在/usr/local/nginx/conf/nginx.conf),添加以下配置: 保存配置后,运行nginx –s reload重新加载配置. 3,访问 打开浏览器,输入地址:http://192.168.1.50/,即可访问我们的静…
在一个项目还是单体架构的时候,所有的js,css,image都会在一个web网站上,看起来并没有什么问题,比如下面这样: 但是当web网站流量起来的时候,这个单体架构必须要进行横向扩展,而在原来的架构中静态资源这羊毛是出在单体架构这头羊身上,所以横向多少 个单体,就有多少个静态资源文件夹,比如下面这样的架构. 那这种架构有什么问题呢? 总的来说会有如下二个问题: 1.   浏览器对单一域名的请求有并发限制. 在同一个域名下,一般来说有js,css,img,media,html等等静态资源,如果资…
前言 昨天尝试了,基于对http协议的探究,我们用控制台写了一个简单的浏览器.尽管浏览器很low,但是对于http协议有个更好的理解. 说了上面这一段,诸位猜到我要干嘛了吗?(其实不用猜哈,标题里都有,又都不瞎...我就是调侃一下,说些没营养的笑话.我认为这样能不那么枯燥,尽管不好笑吧,但这不重要!) 没错,今天要尝试的东西,是自己写一个web服务器.初衷依旧和昨天一样,旨在理解一些东西,而不是真的写出一个多牛的东西. 第一次尝试(V1.0) 1.理论支持 其实关于http协议的理论方面我在<写…
Nginx Windows 版本的启动停止,重新加载配置 启动 Windows版本下载解压后有一个nginx.exe可执行文件,双击启动. 启动后 浏览器访问http://127.0.0.1 可以看到Nginx的欢迎页面,说明已经启动成功. 停止 在命令行中 cd {nginx_home} 到下载解压的目录 执行 nginx -s quit 停止服务器进程. 重新加载配置文件 Nginx的配置文件在conf/nginx.conf下,改动配置文件后执行 nginx -s reload 可以在不重启…
场景 Nginx入门简介和反向代理.负载均衡.动静分离理解: https://blog.csdn.net/BADAO_LIUMANG_QIZHI/article/details/102790862 Ubuntu Server 16.04 LTS上怎样安装下载安装Nginx并启动: https://blog.csdn.net/BADAO_LIUMANG_QIZHI/article/details/102828075 什么是动静分离 Nginx 动静分离简单来说就是把动态跟静态请求分开,不能理解成只…
静态Web服务器的主要功能由ngx_http_core_module模块(HTTP框架的主要成员)实现与core模块类似,可以根据相关模块(如ngx_http_gzip_filter_module.ngx_http_image_filter_module等)的配置项说明,方便地在nginx.conf配置文件中加入新的配置项,从而实现更多的Web服务器功能. 一个典型的静态Web服务器会包含多个server块和location块,例如: http { gzip on; upstream { … }…
最近公司需要做一个宣传片播放  视频有点大 好几百M 就想到使用Nginx来代理静态资源,在过程中出现了一些问题,比如端口没开.访问是403等,没有成功,后面慢慢查找问题,才发现大部分博客资料的都不全,所以在这里记录一下. 安装过程本文就不提了 网上都有很多 本文主要说明 nginx.conf 的配置 如下: 进入编辑nginx.conf 文件 输入密码 配置nginx.conf 上传文件到配置的路径 在网页地址栏输入对应的地址 如果出现 nginx静态资源文件无法访问,403 forbidde…
我们做本地服务器,经常会选择Apache.IIS或者Tomcat,当然这些最方便的算是Apache,几乎不需要配置,最多就是配置下端口,亦或者我们想不用localhost,改成其他也是可以的,只要去更改hosts文件即可.但是学了node怎么能不用用呢,这里介绍如何用node实现你自己的服务器. 1.需要什么 首先我们需要启动文件,然后就是放置我们要打开的文件的目录,在这里我们对要打开的文件类型不同的解析,所以加了个mimeTyep文件,然后就是一个快速启动方式.目录如下: 2.启动文件 使用h…
1修改hosts文件 127.0.0.1 www.test1.com 127.0.0.1 www.test2.com 127.0.0.1 static.com 2配置tomcat的server.xml <?xml version='1.0' encoding='utf-8'?> <Server port="8005" shutdown="SHUTDOWN"> <Listener className="org.apache.ca…
var http = require("http"); var fs = require("fs"); var url = require("url"); var path = require("path"); var server = http.createServer(function(req,res){ //这里如果不用req.url来if判断,那么用户不管输入什么网址, //做的事情都一样啊 //得到地址 var pa…