IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 网络协议 -> 不可抗力/(ㄒoㄒ)/~~ 开始学习node全栈<二>path与http -> 正文阅读

[网络协议]不可抗力/(ㄒoㄒ)/~~ 开始学习node全栈<二>path与http

首期链接

五. path模块

? path 模块 Node.js 官方提供的用来处理路径的模块
? path.join() : 将多个路径片段拼接成一个完整的路径字符串
? path.basename() : 从路径字符串中将文件名解析 出来
const path = require('path')

  1. path.join()

    const pathStr = path.join('/a', '/b/c', '../', './d', 'e')
    console.log(pathStr) //输出 \a\b\d\e
    
    const pathStr2 = path.join(__dirname, './files/1.txt')
    console.log(pathStr2) //输出 当前文件所处目录\files\1.txt
    
  2. path.basename()

    获取路径中的最后一部分,经常通过这方法获取路径中的文件名

    path.basename(path[, ext])
    
    const fpath = '/a/b/c/index.html'
    
    var fullName  = path.basename(fpath)
    console.log(fullName) //输出index.html
    
    var nameWithoutExt = path.basename(fpath, '.html')
    console.log(nameWithoutExt) //输出index
    
    
  3. path.extname()
    ? 获取路径中的扩展名部分

const fpath = '/a/b/c/index.html' //路径字符串
const fext = path.extname(fpath)
console.log(fext) //输出 .html

六. http模块

  1. http模块

    客户端与服务器 消费资源的电脑为客户端, 对外提供网络资源的电脑 服务器

    http 模块是Node.js 提供的用来创建web服务器的模块。通过http模块提供的http.createServer()方法 能方便把一台普通电脑变成一台服务器 对外提供资源

    使用 需导入

    const http = require('http')

  2. 理解 http 作用

    安装了web服务软件 IIS Apache等 可成为服务器

  3. Node.js中不需要 第三方 web 服务器软件,可以基于Node.js 提供的http模块 ,通过几行代码轻松手写一个 服务器软件从而对外提供web服务

  4. 服务器相关概念

    1. ip : 计算机的唯一地址 例如 192.168.2.31
      互联网中的每台Web服务器都有自己的ip例如ping www.baidu.com 可以查看到百度的ip地址
      自己电脑是一个服务器也是一个客户端 127.0.0.1 /localhost就把自己当成一个服务器访问了
    2. 域名和域名服务器 端口
      IP 地址与域名 一一对应,对应关系存放在域名服务器(DNS)中 ,域名服务器就是提供ip与域名之间相互转化
      端口 每一个web服务对应一个端口号,一个端口一个服务 默认 80 端口 可以省略
  5. 创建最基本的web服务器

    1. 创建的步骤 :
      导入http模块 --》 创建web服务实例 const server = http.createServer()–》
      为服务器实例绑定request事件 监听客户端请求 --》
      //为服务器绑定request 事件 即可监听客户端发过来的网络请求
      //使用服务器实例 .on()方法 为服务器绑定一个request事件
      server.on('request', (req, res)=>{
          //只要有客户端看来请求我们自己的服务器,就会触发request事件 从而调用这个事件处理函数
          console.log('someone visit our web server')
      })
      
      启动服务器
      //调用 server.listen(端口号 ,cb回调) 方法,即可启动web服务器
      
      server.listen(80, ()=>{
          console.log('http server running <http://127.0.0.1>')
      })
      
    2. req 与 res 对象
      只要服务器接受到了客户端的请求 就会调用通过 server.on() 为服务器绑定request事件处理函数,如果想在事件处理函数中 访问与客户端相关的数据或属性 与 访问与服务器相关的数据与属性 使用如下方式
      server.on('request', (req, res) => {
          //req 是请求对象 包含了与客户端相关的属性
          // req.url 是客户端请求的url地址
          //req.method 是客户端的method 请求类型
          const str = 'Your request url is ${req.url}, and request method is ${req.method}'
          console.log(str)
          // res 对象 是响应对象 包含服务器相关的数据与属性
          // end方法向客户端发送内容 并结束这次请求
          res.end(str)
      })
      -----------------------------------------
      const http = require('http')
      const server = http.createServer()
      server.on('request', function (req, res){
      console.log('浏览器 访问  http://127.0.0.1 vist web server')
      console.log(req.url) // /
      console.log(req.method) // GET
      res.end('server 响应内容') //浏览器 显示 'server 响应内容'   
      })
      
      server.listen(80, function(){
          console.log('server running http://127.0.0.1')
      })
          
      
    3. 中文乱码
      res.end() 发送中文时 出现乱码 此时需要手动设置内容的编码格式
      server.on('request', function (req, res){
      //需设置响应头 
      res.setHeader('Content-type', 'text/html; charset=utf-8')
      res.end('server 响应内容') //浏览器 显示 'server 响应内容'   
      })
      
  6. 根据不同的url 响应不同的html内容

    实现步骤

    获取请求的url 
    
    设置默认响应内容 404 not found
    
    判断用户请求是否为/或者/index.html首页
    
    判断用户请求是否为 /about.html 关于页面
    
    设置 Content-Type 响应头 中文乱码
    
    使用 res.end() 内容响应客户端
    
    server.on('request', function (req, res){
    const url = req.url
    let content = '<h1>404 Not found</h1>'
    if(url === '/' || url === '/index.html'){
        content = '<h1>index 欢迎 您</h1>'
    }else if(url === '/about.html'){
        content = '<h1>about 关于页面</h1>'
    }
    res.setHeader('Content-type', 'text/html; charset=utf-8')
    res.end(content)
    })
    

微信 公众号 搜索 Brillint技术圈 回复 “文章” 查看往期技术话题在这里插入图片描述

  网络协议 最新文章
使用Easyswoole 搭建简单的Websoket服务
常见的数据通信方式有哪些?
Openssl 1024bit RSA算法---公私钥获取和处
HTTPS协议的密钥交换流程
《小白WEB安全入门》03. 漏洞篇
HttpRunner4.x 安装与使用
2021-07-04
手写RPC学习笔记
K8S高可用版本部署
mySQL计算IP地址范围
上一篇文章      下一篇文章      查看所有文章
加:2022-10-22 21:53:48  更:2022-10-22 21:56:14 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年5日历 -2024/5/19 13:09:54-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码