利用Nodejs 构建 WEB服务器

2023-11-06

前言

Web 服务器一般指网站服务器,是指驻留于因特网上某种类型计算机的程序,可以_向浏览器等 Web 客户端提供文档_,也可以放置网站文件,让全世界浏览;可以放置数据文件,让全世界下载。目前最主流的三个 Web 服务器是 Apache Nginx IIS。废话不多说,来看看本次分享 都有哪些亮点吧!

一、Nodejs 构建简单的 WEB 服务器

关键词:Web服务器 Node.js

1. 引入 HTTP 模块

const http = require('http')

2. 用 HTTP模块 创建服务

const Server=http.createServer((req,res)=>{
    // 发送 HTTP 头部
    // HTTP 状态值: 200 : OK
    //设置 HTTP 头部,状态码是 200,文件类型是 html,字符集是 utf-8
    
    res.writeHead(200,{"Content-Type":"text/html;charset='utf-8'"});
    
    res.write('你好 nodejs');
    
    res.write('我是第一个 nodejs 程序');
    
    res.end(); /*结束响应*/
})

Server.listen('8001')

3. 用HTTP模块、fs模块、url模块、path模块来搭建一个静态web服务器

/* 
    通过nodejs 中的  
    HTTP模块、URL模块、fs模块、Path模块
    来构建静态资源服务器
*/
// 引入HTTP模块来创建web服务器
var http = require('http')
    // 引入fs模块来进行文件操作
var fs = require('fs')
    // 引入path模块,可以拿到请求文件的后缀名
var path = require('path')
    // 引入url模块来处理请求的数据
var url = require('url')

// 引入自定义模块,获取`得到后缀名`的函数

var mimeModel = require('./model/getmime.js');

http.createServer((req, res) => {


    // res.write('hello node.js')
    // http://localhost:8001/news.html       /news.html
    // http://localhost:8001/index.html      /index.html

    var pathname = url.parse(req.url).pathname;   //通过url.parse()直接获取请求的数据路径

    // 过滤请求
    if (pathname == '/') {
        pathname = 'index.html'; //默认加载首页
    }
    // 获取文件的后缀名,根据不同的后缀名返回不同的信息
    var extname = path.extname(pathname);

    if (pathname != '/favicon.ico') {

        // 通过文件操作来获取static下面的index.html

        fs.readFile('./创建WEB服务器/static/' + pathname, (err, result) => {

            if (err) {
                fs.readFile('./创建WEB服务器/static/404.html', (error, data) => {
                    if (error) {
                        console.log(error)
                        return
                    }
                    res.writeHead(404, { "Content-Type": "text/html;charset='utf-8' " });

                    res.write(data);
                    res.end() //结束响应
                })
            } else {
                // 这就实现了最基本的静态web服务

                // 响应头
                var mime = mimeModel.getMime(extname); //获取文件类型
                res.writeHead(200, { "Content-Type": "" + mime + ";charset='utf-8' " });

                res.write(result);
                res.end() //结束响应
            }
        })


    }

}).listen(8001)

结语

OK,这次的 分享到这就结束了,虽然看起来构建WEB静态资源服务器简单,但是也需要动手练习才能

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

利用Nodejs 构建 WEB服务器 的相关文章

随机推荐

  • 设计模式:适配器模式

    适配器模式 即Adapter模式 又叫包装器Wrapper 用于改变已有类的接口形式 它可以将某个类的接口转换成客户端期望的另一个接口 主要目的是实现兼容性 让原本因接口不匹配不能一起工作的两个类可以协同工作 比如正常的电压是220v 插座
  • 【Kubernetes资源篇】StatefulSet无状态服务管理入门实战详解

    文章目录 一 StatefulSet理论知识 1 StatefulSet Pod控制器特性 2 什么是有状态服务和无状态服务 3 Deployment和StatefulSet区别 二 案例 StatefulSet资源实战演示 1 创建WEB
  • 解决CQ-HTTP无法远程登录的问题

    解决CQ HTTP无法远程登录的问题 前言 2022 6 3 第一步 准备 第二步 配置两端的go cqhttp 第三步 正文 前言 2022 6 3 相信自从酷Q无了后 很多人都了解到了go cqhttp这一优秀的qq机器人插件 但是在服
  • Django框架之搭建虚拟环境

    1 建立虚拟环境 pip install virtualenv 2 打开E盘创建文件夹名字为 aikun 3 进入文件夹中 shift 右击 打开Powershell 建立虚拟环境 4 输入 python m venv aikun env
  • HBase异常 -- KeeperErrorCode = ConnectionLoss for /hbase/hbaseid(单机)

    环境信息 虚拟机版本 centos7 HBase版本1 3 3 Hadoop版本 2 6 4 Zookeeper版本 3 4 5 异常信息 ERROR main zookeeper RecoverableZooKeeper ZooKeepe
  • AD域中组织单位和组的区别

    组和组织单元有很大的不同 组主要用于权限设置 而组织单元则主要用于网络构建 另外 组织单元只表示单个域中的对象集合 可包括组对象 而组可以包含用户 计算机 本地服务器上的共享资源 单个域 域目录树或目录林 组织单位是ou 组是group 前
  • GANs:生成对抗网络系列及应用

    GANs Goodfellow和Bengio等人发表在NIPS 2014年的文章Generative Adversarial Network是生成对抗网络的开创文章 论文思想启发自博弈论中的二人零和博弈 在二人零和博弈中 两位博弈放的利益之
  • 显示生成连续大小写字母

    9 生成连续大小写字母 package array 显示生成连续字母 public class array4 public static void main String args TODO Auto generated method st
  • java实现分页功能_Java实现简单的分页功能

    本文实例为大家分享了Java实现分页功能的具体代码 供大家参考 具体内容如下 不用根据改变SQL的形式去查询 直接查询所有的数据 根据页码自动显示数据 分页对象 public class PageUtils implements Seria
  • windows知识系列:硬软连接

    总结 创建硬连接 mklink H link 要关联的文件夹 创建软连接 mklink D link 要关联的文件夹 参考 硬 软连接 以及在windows中的用法
  • OPENCV4学习代码-Mat类构造与赋值

    代码清单2 4 默认构造函数使用方式 cv Mat Mat 代码清单2 5 利用矩阵尺寸和类型参数构造Mat类 cv Mat Mat int rows int cols int type 代码清单2 6 用Size 结构构造Mat类 cv
  • 华为机考笔记之字符串以水仙花规则拆分

    题目 一 输入一组字符串 求字符串分组后 每组的和为水仙花数 注 水仙花数是一个三位数 其个位 十位 百位的立次方 的和等于自身 如 371 3 3 7 3 1 1 1 如果无法找到该分组 返回0 2 找到该分组 切分组不唯一 返回 1 3
  • js 每隔 10 秒钟 运行一次,发送一个 ajax 请求

    每隔 10 秒钟 运行一次 发送一个 ajax 请求 function runEvery10Sec 1000 10 10 秒钟 setTimeout runEvery10Sec 1000 10 ajax dataType json type
  • jQuery取得select选中的值

    jQuery取得select选中的值 本来以为jQuery select1 val 是取得选中的值 那么jQuery select1 text 就是取得的文本 这是不正确的 正确做法是 jQuery select1 option selec
  • Qt中的单例模式:实现一个单例的界面类

    文章目录 前言 一 什么是单例模式 二 单例模式的优缺点及使用场景 三 Qt中单例类的创建 四 单例类的使用 测试 总结 前言 本文主要讲述了使用加锁的懒汉式来实现单例 文中示例将一个界面类修改为单例类 并在主界面获取多次该类的实例来进行测
  • 统计一个字符串中大写字母字符,小写字母字符,数字字符出现的次数

    统计一个字符串中大写字母字符 小写字母字符 数字字符出现的次数 不考虑其他字符 1 需求 统计一个字符串中大写字母字符 小写字母字符 数字字符出现的次数 不考虑其他字符 举例 Hello123World 结果 大写字符 2个 小写字符 8个
  • IDEA中常用的插件

    目录 Free MyBatis plugin codehelper generator grep console Translation Alibaba Java Coding Guidelines CamelCase GenerateAl
  • unordered_map的哈希HASH重载——举例unordered_map与pair联合使用

    有些时候 为了图省力 我们没准会这样的调用一个函数 unordered map lt pair
  • 分子模拟—Ovito渲染案例教程

    heartsuit spadesuit 分子模拟 Ovito渲染案例教程 heartsuit
  • 利用Nodejs 构建 WEB服务器

    前言 Web 服务器一般指网站服务器 是指驻留于因特网上某种类型计算机的程序 可以 向浏览器等 Web 客户端提供文档 也可以放置网站文件 让全世界浏览 可以放置数据文件 让全世界下载 目前最主流的三个 Web 服务器是 Apache Ng