返回顶部
首页 > 资讯 > 服务器 >Nodejs实现的一个静态服务器实例
  • 249
分享到

Nodejs实现的一个静态服务器实例

静态实例服务器 2022-06-04 17:06:48 249人浏览 独家记忆
摘要

参考cnodejs.org上面的静态服务器例子,写了下面的一个nodejs静态服务器例子,里面包含cache,压缩,贴代码如下: var port=3333; var Http = require(

参考cnodejs.org上面的静态服务器例子,写了下面的一个nodejs静态服务器例子,里面包含cache,压缩,贴代码如下:



var port=3333;

var Http = require("http");

var url = require("url");

var fs = require("fs");

var path = require("path");

var mime = require("./mime").types;

var config = require("./config");

var zlib = require("zlib");

//创建http服务端

var server=http.createServer(function(request,response){

    var obj= url.parse(request.url);

    response.setHeader("Server","Node/V8");

    console.log(obj);

    var pathname=obj.pathname;

    if(pathname.slice(-1)==="/"){

        pathname=pathname+config.Welcome.file;   //默认取当前默认下的index.html

    }

    var realPath = path.join("assets", path.nORMalize(pathname.replace(/../g, "")));

    console.log(realPath) ;

    var pathHandle=function(realPath){

    //用fs.stat方法获取文件

        fs.stat(realPath,function(err,stats){

            if(err){

                response.writeHead(404,"not found",{'Content-Type':'text/plain'});

                response.write("the request "+realPath+" is not found");

                response.end();

            }else{

                if(stats.isDirectory()){

                }else{

                    var ext = path.extname(realPath);

                    ext = ext ? ext.slice(1) : 'unknown';

                    var contentType = mime[ext] || "text/plain";

                    response.setHeader("Content-Type", contentType);

var lastModified = stats.mtime.toUTCString(); var ifModifiedSince = "If-Modified-Since".toLowerCase(); response.setHeader("Last-Modified", lastModified);

if (ext.match(config.Expires.fileMatch)) { var expires = new Date(); expires.setTime(expires.getTime() + config.Expires.maxAge * 1000); response.setHeader("Expires", expires.toUTCString()); response.setHeader("Cache-Control", "max-age=" + config.Expires.maxAge); }

if (request.headers[ifModifiedSince] && lastModified == request.headers[ifModifiedSince]) { console.log("从浏览器cache里取") response.writeHead(304, "Not Modified"); response.end(); } else { var raw = fs.createReadStream(realPath); var acceptEncoding = request.headers['accept-encoding'] || ""; var matched = ext.match(config.Compress.match);

if (matched && acceptEncoding.match(/bgzipb/)) { response.writeHead(200, "Ok", {'Content-Encoding': 'gzip'}); raw.pipe(zlib.createGzip()).pipe(response); } else if (matched && acceptEncoding.match(/bdeflateb/)) { response.writeHead(200, "Ok", {'Content-Encoding': 'deflate'}); raw.pipe(zlib.createDeflate()).pipe(response); } else { response.writeHead(200, "Ok"); raw.pipe(response); } } } } });

} pathHandle(realPath); }); server.listen(port); console.log("http server run in port:"+port);

首先需要在JS文件里创建一个assets的文件夹,里面放入你要浏览的静态文件,比如,index.html,demo.js等。

运行方式为:在命令行里切换到上面的JS的文件目录,然后输入 node JS文件名

浏览器内输入http://localhost:3333/就会看到效果。

--补上上面代码里缺少的两个模块

mime.js

exports.types = {

"CSS": "text/css",

"gif": "image/gif",

"html": "text/html",

"ico": "image/x-icon",

"jpeg": "image/jpeg",

"jpg": "image/jpeg",

"js": "text/javascript",

"JSON": "application/json",

"pdf": "application/pdf",

"png": "image/png",

"svg": "image/svg+xml",

"swf": "application/x-shockwave-flash",

"tiff": "image/tiff",

"txt": "text/plain",

"wav": "audio/x-wav",

"wma": "audio/x-ms-wma",

"wmv": "video/x-ms-wmv",

"xml": "text/xml" };

config.js

exports.Expires = {

    fileMatch: /^(gif|png|jpg|js|css)$/ig,

    maxAge: 60 * 60 * 24 * 365

};

exports.Compress = { match: /css|js|html/ig };

exports.Welcome = { file: "index.html" };

--结束END--

本文标题: Nodejs实现的一个静态服务器实例

本文链接: https://lsjlt.com/news/11972.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • Nodejs实现的一个静态服务器实例
    参考cnodejs.org上面的静态服务器例子,写了下面的一个nodejs静态服务器例子,里面包含cache,压缩,贴代码如下: var port=3333; var http = require(...
    99+
    2022-06-04
    静态 实例 服务器
  • 如何使用Node.js实现一个静态资源服务器
    今天就跟大家聊聊有关如何使用Node.js实现一个静态资源服务器,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。项目涉及...
    99+
    2024-04-02
  • 使用nodejs、Python写的一个简易HTTP静态文件服务器
    日常开发过程中,我们经常需要修改一些放在 CDN 上的静态文件(如 JavaScript、CSS、HTML 文件等),这个过程中,我们希望能有一种方式将线上 CDN 的目录映射为本地硬盘上的某个目录,这样,...
    99+
    2022-06-04
    静态 简易 文件服务器
  • 怎么在JAVA项目中实现一个静态单例
    怎么在JAVA项目中实现一个静态单例?很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。JAVA  静态的单例的实例详解实现代码:public c...
    99+
    2023-05-31
    java 单例 ava
  • Python多任务版静态Web服务器实现示例
    目录概述实现步骤1.导入threading模块2.设置端口号复用, 程序退出端口立即释放3.当客户端和服务器建立连接程,创建子线程4.设置守护主进程5.启动子线程代码实现概述 使用多...
    99+
    2024-04-02
  • PHP中怎么实现一个静态页面
    这篇文章将为大家详细讲解有关PHP中怎么实现一个静态页面,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。一,PHP脚本与动态页面。PHP脚本是一种服务器端脚本程序,可通过嵌入等方法与HTML文...
    99+
    2023-06-17
  • 使用nodejs搭建一个简易HTTP服务的实现示例
    目录先搭建一个简单的HTTP服务根据不同的请求地址返回不同的信息获取请求参数实现服务端设置(跨域)cookie和读取客户端发送的cookie本文只使用nodejs的http模块搭建一...
    99+
    2024-04-02
  • nodejs搭建静态资源服务器
    随着互联网的发展,Web开发在全球范围内已经成为了一项非常热门的行业,对于开发人员来说,为了能够快速有效地开发并发布代码,需要有一个静态资源服务器来帮助我们管理和处理静态资源,特别是在前后端分离的开发模式中使用频率较高,而Node.js发布...
    99+
    2023-05-14
  • python静态web服务器如何实现
    今天小编给大家分享一下python静态web服务器如何实现的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。编写TCP服务器程序...
    99+
    2023-07-04
  • 如何使用nodeJS实现一个mock数据服务器
    这篇文章主要介绍如何使用nodeJS实现一个mock数据服务器,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!对于前端开发者而言,javascript正扮演着越来越重要的地位,它不仅能...
    99+
    2024-04-02
  • Nodejs实现的一个简单udp广播服务器、客户端
    nodejs发送udp广播还是蛮简单的,我们先写个服务器用于接收广播数据,代码如下: var dgram = require("dgram"); var server = dgram.createSock...
    99+
    2022-06-04
    客户端 简单 服务器
  • Python本地搭建静态Web服务器的实现
    目录静态Web服务器-返回固定页面数据1. 开发自己的静态Web服务器2. 静态Web服务器-返回固定页面数据的示例代码3. 小结静态Web服务器-返回指定页面数据1. 静态Web服...
    99+
    2023-02-01
    Python搭建静态Web服务器 Python 静态Web服务器
  • 一个云服务器多个实例
    在云服务器中,每个实例可以运行一个或多个应用程序,并且可以通过网络连接共享它们。这意味着,多个实例可以访问彼此的资源,同时还可以访问与实例相同的资源,例如存储空间、网络带宽等。因此,为了保证数据的可靠性和性能,需要确保多个实例之间的隔离性。...
    99+
    2023-10-26
    多个 实例 服务器
  • 使用Node.js实现一个简单的FastCGI服务器实例
    本文是我最近对Node.js学习过程中产生的一个想法,提出来和大家一起探讨。 Node.js的HTTP服务器 使用Node.js可以非常容易的实现一个http服务,最简的例子如官方网站的示例: var ht...
    99+
    2022-06-04
    实例 简单 服务器
  • 怎么在Java项目中实现一个动态与静态绑定
    本篇文章为大家展示了怎么在Java项目中实现一个动态与静态绑定,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。Java的动态绑定所谓的动态绑定就是指程执行期间(而不是在编译期间)判断所引用对象的实际类...
    99+
    2023-05-31
    java 动态绑定 静态绑定
  • 轻松创建nodejs服务器(1):一个简单nodejs服务器例子
    我们先来实现一个简单的例子,hello world。 似乎每种语言教程的第一节都会讲这个,我们也不例外。 首先我们先创建一个项目目录,目录可自己定义,本案例的目录为 e:/nodetest/。 由于我们要搭...
    99+
    2022-06-04
    服务器 例子 轻松
  • 用nodejs的实现原理和搭建服务器(动态)
    今天是我学习的Node.js的第二天,所谓的node.js其实它是javascript编写的服务器的语言,同时它又是属于后台的框架,是一个开放性的平台。 一、相关理论知识: 我们可以用requre来引入模块...
    99+
    2022-06-04
    原理 服务器 动态
  • 基于Node实现简易serve静态资源服务器的示例详解
    目录前言基础示例简易 serve 实现arg - 命令行参数读取chalk - 控制台信息输出源码扩展rewrite 和 redirect 的区别?前言 静态资源服务器(HTTP 服...
    99+
    2024-04-02
  • Python 实现静态链表案例详解
    静态链表和动态链表区别 静态链表和动态链表的共同点是,数据之间"一对一"的逻辑关系都是依靠指针(静态链表中称"游标")来维持。 静态链表 使用静态链表存储数据,需要预先申请足够大的一...
    99+
    2024-04-02
  • 使用PHP怎么实现一个页面静态化功能
    使用PHP怎么实现一个页面静态化功能?很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。php有什么用php是一个嵌套的缩写名称,是英文超级文本预处理语言,它的语法混...
    99+
    2023-06-06
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作