web学习笔记(四十六)

目录

1. path 路径模块

1.1 导入path模块

1.2 path.join()路径拼接

1.3 path.basename()  获取路径中的文件名

1.4 path.extname() 获取路径中的扩展名

2.服务器的相关概念

2.1 IP 地址

2.2 域名和域名服务器

2.3 端口号

3. http 模块

3.1使用http模块搭建服务器的步骤


1. path 路径模块

path 模块是 Node.js 官方提供的、用来处理路径的模块。它提供了一系列的方法和属性,用来满足用户对路径的处理需求。

1.1 导入path模块

path是node.js的一个内置模块,在使用前我们要进行导入操作。和fs模块的导入格式一样,使用tequire关键字引入。

let path = require('path');

1.2 path.join()路径拼接

       path.join可以将多个路径片段拼接成一个完整的路径字符串。path.join方法避免了+号拼接会将. 拼上的问题  join会直接将.去掉  如果是..那就会抵消一层路径 ../../抵消两层路径。这是在node.js中路径拼接最好的一种方法。

const pathstr = path.join('/a', '/b', '/c');
console.log(pathstr); //\a\b\c

const pathstr1 = path.join('/a', '/b', './c');
console.log(pathstr1); //\a\b\c

const pathstr2 = path.join('/a', '/b', '../c');
console.log(pathstr2); //\a\c

1.3 path.basename()  获取路径中的文件名

使用 path.basename() 方法,可以获取路径中的最后一部分,经常通过这个方法获取路径中的文件名。如果写参数二的话就表示将文件的扩展名去掉,只返回文件名。

参数一:必选    表示一个路径的字符串
参数二:可选    表示文件扩展名
let fliename = path.basename('index.html');
console.log(fliename);//index.html

//   参数二:不要扩展名 可选参数
let fliename1 = path.basename('index.html','.html');
console.log(fliename1);//index

1.4 path.extname() 获取路径中的扩展名

使用 path.extname() 方法,可以获取路径中的扩展名部分,里面只包含一个参数,而且是必选参数,这个参数是一个表示路径的字符串。

let pathstr3='\a\b\c\index.html'
let ext = path.extname(pathstr3);
console.log(ext);//.html

2.服务器的相关概念

2.1 IP 地址

         IP 地址就是互联网上每台计算机的唯一地址,因此 IP 地址具有唯一性。如果把“个人电脑”比作“一台电话”,那么“IP地址”就相当于“电话号码”,只有在知道对方 IP 地址的前提下,才能与对应的电脑之间进行数据通信。在开发期间,自己的电脑既是一台服务器,也是一个客户端,为了方便测试,可以在自己的浏览器中输入 127.0.0.1 这个 IP 地址,就能把自己的电脑当做一台服务器进行访问了。 (localhost)

        IP 地址的格式:通常用“点分十进制”表示成(a.b.c.d)的形式,其中,a,b,c,d 都是 0~255 之间的十进制整数。例如:用点分十进表示的 IP地址(192.168.1.1)。

2.2 域名和域名服务器

       尽管 IP 地址能够唯一地标记网络上的计算机,但IP地址是一长串数字,不直观,而且不便于记忆,于是人们又发明了另一套字符型的地址方案,即所谓的域名(Domain Name)地址。相当于在手机上给朋友的手机号写了一个备注,你可以通过手机号(ip地址)联系朋友,也可以通过备注(域名)来联系朋友

       IP地址和域名是一一对应的关系,这份对应关系存放在一种叫做域名服务器(DNS,Domain name server)的电脑中。使用者只需通过好记的域名访问对应的服务器即可,对应的转换工作由域名服务器实现。因此,域名服务器就是提供 IP 地址和域名之间的转换服务的服务器。

2.3 端口号

       计算机中的端口号,就好像是现实生活中的门牌号一样。通过门牌号,外卖小哥可以在整栋大楼众多的房间中,准确把外卖送到你的手中。同样的道理,在一台电脑中,可以运行成百上千个 web 服务。每个 web 服务都对应一个唯一的端口号。客户端发送过来的网络请求,通过端口号,可以被准确地交给对应的 web 服务进行处理。

3. http 模块

 http模块是一个内置模块,主要用来搭建web服务器 ,。通过 http 模块提供的 http.createServer() 方法,就能方便的把一台普通的电脑,变成一台 Web 服务器,从而对外提供 Web 资源服务。  但后续真正的开发使用的是第三方express,一般不会用http模块来搭建服务器。

3.1使用http模块搭建服务器的步骤

 1. 导入模块

let fs = require('fs');
let http = require('http');

2.创建一个web服务

let web = http.createServer();

3.监听请求

on( )方法里面包含了两个参数; 参数一:请求方法  参数二:回调函数  ;而回调函数中也包含了两个参数  (req, res)参数一:表示请求体,参数二:表示响应体。

(1)请求体中有一些属性我们需要了解一下: 

  req.url获取请求的 URL
  req.method获取请求的方法(GET、POST 等)

(2)  /表示根目录:  http://127.0.0.1:8080/

(3)为了防止乱码,我们需要修改响应头中的编码: res.setHeader('Content-Type', 'text/html;charset=utf-8')

(4) res.end()是 Node.js 中用于结束响应过程的方法。当使用 Node.js 构建 HTTP 服务器时,可以通过 res.end() 来结束对客户端的响应。

web.on('request', (req, res) => {
    // console.log(req);
    // 请求体中有一些属性  url method
    console.log(req.url, req.method);
    //    /表示根目录  http://127.0.0.1:8080/
    // console.log('监听成功');
    // 防止乱码,改响应头中的编码
    res.setHeader('Content-Type', 'text/html;charset=utf-8')
    if (req.url == '/') {
        fs.readFile('./index.html', 'utf-8', (err, data) => {
            if (err) return console.log('读取失败' + err.message);
            res.end(data)
        })
    } else if (req.url == '/list.html') {
        fs.readFile('./list.html', 'utf-8', (err, data) => {
            if (err) return console.log('读取失败' + err.message);
            res.end(data)
        })
    } else {
        res.end('404找不到页面')
    }


    // 服务器响应
    // res.end('得到回应')
});

4.启动服务   

参数一:端口号
参数二: 回调函数
web.listen('8080', () => {
    console.log('web服务已启动 http://127.0.0.1');
})

5.关闭服务器: ctrl+c可以关闭服务器。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/494976.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

WIFI驱动移植实验:配置 Linux 内核

一. 简介 前面文章删除了Linux内核源码(NXP官方的kernel内核源码)自带的 WIFI驱动。 WIFI驱动移植实验:删除Linux内核自带的 RTL8192CU 驱动-CSDN博客 将正点原子提供的 rtl8188EUS驱动源码添加到 kernel内核源码中。文章如下&#xff1a…

Day59-Nginx反向代理与负载均衡算法精讲及会话保持精讲

Day59-Nginx反向代理与负载均衡算法精讲及会话保持精讲 7.nginx负载均衡调度算法7.1 什么是nginx负载均衡调度算法7.2 nginx负载均衡调度算法有哪些。 8.负载均衡后端的会话保持8.1 nginx负载均衡会话(session)保持8.2 负载均衡集群会话保持8.3 实践共享会话保持 7.nginx负载均…

《Mahjong Bump》

Mahjong Bump 类型:Tile 三消 视角:2d 乐趣点:清空杂乱快感,轻松的三合一休闲 平台:GP 时间:2021 个人职责: 所有程序部分开发 上架 GooglePlay 相关工做 针对游戏数据做出分析,讨论…

并发编程之的HashSet和HashMap的详细解析

HashSet不安全 HashSet也是线程不安全的,底层没有进行任何线程同步处理。 在hashset的源码中,底层是用hashmap实现的: 每次add的时候,把值放在了map对象中的key,而map对象的value则全部统一放一个常量: 在下…

【前端学习——js篇】6.事件模型

具体见:https://github.com/febobo/web-interview 6.事件模型 ①事件与事件流 事件(Events) 事件是指页面中发生的交互行为,比如用户点击按钮、键盘输入、鼠标移动等。在js中,可以通过事件来触发相应的操作,例如执行函数、改变…

STM32H743驱动SSD1309(3)

接前一篇文章:STM32H743驱动SSD1309(2) 三、命令说明 1. 设置命令锁定(FDh) 此双字节命令用于锁定OLED驱动器IC,不接受除其自身之外的任何命令。在输入FDh 16h(A[2]=1b)…

C语言文件操作详解

文件是什么 在我们日常使用的电脑上我们在电脑磁盘上会看到许许多多的文件夹,那里面的东西其实就是文件,为什么我们要使用文件?那是因为我们的电脑肯定会要用来存储东西的,如果没有文件,那么我们的东西都全部存放在内…

应急响应小结

应急响应的整体思路 应急响应的整体思路,就是上层有指导性原则和思想,下层有技能、知识点与工具,共同推进和保障应急响应流程的全生命周期。 原则和指导性思路 3W1H原则:3W即Who、What、Why,1H即How,做应…

Vastbase编程利器:PL/pgSQL原理简介

PL/pgSQL是Vastbase提供的一种过程语言,在普通SQL语句的使用上增加了编程语言的特点,可以用于创建函数、存储过程、触发器过程以及创建匿名块等。 本文介绍Vastbase中PL/pgSQL的执行流程,包括PL/pgSQL的编译与运行。 1、编译 PL/pgSQL的编译…

Windows入侵排查

目录 0x00 前言 0x01 入侵排查思路 1.1 检查系统账号安全 1.2 检查异常端口、进程 1.3 检查启动项、计划任务、服务 0x00 前言 当企业发生黑客入侵、系统崩溃或其它影响业务正常运行的安全事件时,急需第一时间进行处理,使企业的网络信息系统在最短时…

CQ 社区版2.10.0 | 新增 SQL 审核、全新英文版上线…

三月中旬,我们预告了 CloudQuery 社区版即将上线的「SQL 审核」功能。现在,它来了! 本次社区版 v2.10.0,除了 SQL 审核功能,我们还在手动授权、连接分组等模块做了新功能和优化。 新增功能 新增 SQL 审核功能 支持…

政安晨:【深度学习神经网络基础】(二)—— 神经元与层

政安晨的个人主页:政安晨 欢迎 👍点赞✍评论⭐收藏 收录专栏: 政安晨的机器学习笔记 希望政安晨的博客能够对您有所裨益,如有不足之处,欢迎在评论区提出指正! 神经元是深度学习神经网络中的基本单元,模拟了…

从零开始为香橙派orangepi zero 3移植主线linux——1.uboot

从零开始为香橙派orangepi zero 3移植主线linux——1.uboot 0.前言一、准备二、制作引导文件1.BL312.SCP firmware (Crust)3.uboot 三、烧录四、运行 0.前言 之前买了块香橙派zero3,CPU是全志H618,四核cortex-A53,烧录了官方的ubuntu系统后就…

nodejs中使用WebScoket的简单示例

前言 WebScoket可以用来实现即时通信,一般用于通信聊天工具或者是需要实时接受数据等功能 在浏览器环境中,WebScoket是一个构造函数,需要new创建连接的实例; 在nodejs环境中,则需要使用ws模块来完成服务的创建。 示例 下面是可以直接使用的代码,不需要修改 node创建服务端…

Avalonia笔记4-Rider如何添加xaml支持

在Linux Rider中,File Type中是有XAML文件的,但是新增xaml文件并不能正确的添加到项目中,而且就算是新增文件,直接命名为“XXX.xaml”,也是没有智能提示的。 在引用Style文件的时候,需要新建一个axaml的文…

STM32H743驱动SSD1309(2)

接前一篇文章:STM32H743驱动SSD1309(1) 二、芯片详解 1. 概览 上一回已提到,SSD1309是一个单片CMOS OLED/PLED驱动芯片可以驱动有机/聚合发光二极管点阵图形显示系统。由128个segments和64个commons组成。该芯片专为共阴极OLED…

机器学习——聚类算法-KMeans聚类

机器学习——聚类算法-KMeans聚类 在机器学习中,聚类是一种无监督学习方法,用于将数据集中的样本划分为若干个簇,使得同一簇内的样本相似度高,不同簇之间的样本相似度低。KMeans聚类是一种常用的聚类算法之一,本文将介…

【设计经验】0Ω电阻在电路中有什么作用

电路设计与调试过程中,我们很多时候要用到0Ω电阻(如下图),那么0Ω电阻到底在这过程中充当了什么样的角色呢? 0R电阻在电路中有什么作用? #创作灵感#:脑海存留的如下几点疑惑需要解开。 1、电路初次设计使用串接电阻为什么是0R电阻; 2、单板调试时为什么有时候会用到0R…

VMware Live Recovery 9.0 发布 - 多云实时恢复

VMware Live Recovery 9.0 - 多云实时恢复 VMware Live Cyber Recovery VMware Live Site Recovery 请访问原文链接:https://sysin.org/blog/vmware-live-recovery/,查看最新版。原创作品,转载请保留出处。 作者主页:sysin.or…

Unity学习笔记 9.2D射线

下载源码 UnityPackage 1.Ray2D 让小球向右发射射线: Ray2D ray;void Start() {// Ray2D(起点,终点)ray new Ray2D(this.transform.position, Vector2.right);// Debug.DrawLine(起点,终点,颜色,显示时间)Debug.DrawL…