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 小米 华为 单反 装机 图拉丁
 
   -> 网络协议 -> node--http模块、fs模块、url模块 -> 正文阅读

[网络协议]node--http模块、fs模块、url模块

http模块:

1.引入node自带的模块http,这个模块可调用函数来创建后端服务器

var http = require("http")
//创建一个服务器对象,回调函数不会直接运行,会在用户每次访问这台服务器的某个端口才会运行
var app = http.createServer((req, res) => {})

注:req是前端传进来的数据包,res是后端返回的数据包。

? ? ? ? 2.一定要写端口:表示ip是访问计算机的标志 ?端口就可以进入计算机的具体哪一个程序(此处表示监听的是计算机上端口号为8080的程序)

app.listen(8080)

? ? ? 3.设置编码和数据包格式(此处是表示返回给前端一个HTML文件,使用utf-8编码)

res.setHeader("content-Type", "text/html;charset=utf-8")

? ?注:"text/html":返回的是html文件

? ? ? ? ? ?"text/css":返回的是css文件

? ? ? ? ?? "text/txt":返回的是txt文件

????????????"image-png":返回的是png格式的图片

? ? ? ? 还有其他的,此处就不以一一列举了。

4.后端返回数据给前端res.end()


 res.end("<h1>这是个HTML文件(主页)</h1>")

注:end()一调用,就返回数据代表此次会话结束,就断开连接

????????res.end()方法接受 字符串或者buffer

//如果服务器监听到8081端口有客户端访问,就返回"hello,666"

//引入node自带的模块http,这个模块可调用函数来创建 后端服务器 
var http = require("http")
//创建一个服务器对象,回调函数不会直接运行,会在用户每次访问这台服务器的8081端口才会运行
//req是前端传进来的数据包,res是后端返回的数据包
var app = http.createServer((req, res) => {
    //打印前端输入的网址
    console.log(req.url)
    //可以通过网址:端口号后面的部分来进行多网页
    if (req.url == "/home") {
        //配置返回给用户的数据包的数据格式 和编码的类型utf-8
        res.setHeader("content-Type", "text/html;charset=utf-8")
        //end()一调用,就返回数据代表此次会话结束,就断开连接
        res.end("<h1>这是个HTML文件(主页)</h1>")
    } else if (req.url == "/cart") {
        res.setHeader("content-Type", "text/html;charset=utf-8")
        res.end("<h2>这是个HTML文件(购物车网页)</h2>")

    }else{
        res.end("not found")
    }
})
//监听计算机的端口:min-max
app.listen(8081)

fs模块:

? ? ? ? 1.引入fs自带的模块?

var fs=require("fs")

? ? ? ? 2.读取文件?fs.readFile(path,(err,data)=>{})

fs.readFile("../picture/sky.png",(err,data)=>{
    //读取成功或失败都有值
    console.log(err,data)
})

注:path 填路径 可以绝对可以相对 err代表读取失败 data代表读取成功 它是一个buffer类型的数据(二进制数据流) 可以通过toString()转化为字符串。

? ? ? ? 3.写入文件(创建文件)?fs.writeFile(path ,data,callback(er))

fs.writeFile("./write","这是我写的文件",(err)=>{
        console.log(err)
})

注:如果文件存在,该方法写入的内容会覆盖旧的文件内容,不存在就创建一个新的文件

????????path - 文件路径;

???????? data - 要写入文件的数据,可以是 String(字符串);

????????callback - 回调函数,回调函数只包含错误信息参数(err),在写入失败时返回。

? ? ? ? ?4.以追加的方式写文件?fs.appendFile(path?+"追加的内容",callback(err))

fs.appendFile(__dirname + '/write', '我会追加到文件内容的末尾', function (er) {
    console.log('追加内容完成');
})

? ? ? ? 5.删除文件??fs.unlink(path,callback(err))

fs.unlink("./write", (err) => {
    console.log(err) //null
})

? ? ? ? 6.创建目录?fs.mkdir(path,callback(err))

fs.mkdir("./dir1",(err)=>{
    console.log(err)//null 在指定路径创建了一个文件夹,没有出现错误
})

? ? ? ? 7.?移动/重命名文件或目录:整个功能相当于重命名一个文件/文件夹路径

fs.rename(oldPath, newPath, callback);

fs.rename("./dir1","./dir4",(err)=>{
    console.log(11111,err)//重命名
})

fs.rename("./write333","./dir3/write333",(err)=>{
    console.log(2222,err)//移动
})

注:oldPath, 原目录/文件的完整路径及名;

????????newPath, 新目录/文件的完整路径及名;如果新路径与原路径相同,而只文件名不同,则是重命名

????????callback(err), 操作完成回调函数;err操作失败对象

????????移动文件有一个bug:新路径和旧路径必须是同一个根盘

? ? ? ? 8.拷贝文件??fs.copy(oldPath, newPath, callback);

fs.copyFile("./write2","./dir2/write22",(err)=>{
    console.log(333,err)
})

注:?oldPath, 原文件的完整路径;

????????newPath, 新文件的完整路径;

????????callback(err), 操作完成回调函数;err操作失败对象

????????拷贝文件以后两个文件都会存在磁盘中

url模块:?

????????可以把url网址解析为一个对象,里面有两个重要的属性:pathname和query string

????????pathname:是端口号后面的,"?"以前的地址

? ? ? ?querystring是"?"后面的键值对

? ? ? ? url是一个对象,其中的query string也是对象

? ? ? ? 通过pathname,可以实现静态资源托管

var http = require("http")
var fs = require("fs")
var url = require("url")
var querystring=require("querystring")

var app = http.createServer((req, res) => {
    var urlobj = url.parse(req.url)
    var path = urlobj.pathname
    console.log(path)
    var que = urlobj.query
    if (req.url == "/") {
        fs.readFile(__dirname + "/picture" + "/ysx.jpg", (err, data) => {
            if (!err) {
                res.end(data)
            } else {
                res.end("1111404")
            }
        })
    }
    fs.readFile(__dirname + "/picture" + path, (err, data) => {

        var queryobj=querystring.parse(que)
        console.log(queryobj)//获取网址“?”后面的键值对
        
        if (!err) {
            res.end(data)
        } else {
            res.end("404")
        }
    })
    
})
app.listen(8085)

在读取文件的路径里面拼接了path,如果前端网址还有"?"以后的部分,也可以读取到相应的文件。如果直接写的类似"./src/index.html",前端网址还有问号后面一部分就读取不出来(如:http://192.168.6.112:8080/src/index.html?conut=20&&name=rose",读取不了相应文件,如果是用的pathname则可以读取出来)

  网络协议 最新文章
使用Easyswoole 搭建简单的Websoket服务
常见的数据通信方式有哪些?
Openssl 1024bit RSA算法---公私钥获取和处
HTTPS协议的密钥交换流程
《小白WEB安全入门》03. 漏洞篇
HttpRunner4.x 安装与使用
2021-07-04
手写RPC学习笔记
K8S高可用版本部署
mySQL计算IP地址范围
上一篇文章      下一篇文章      查看所有文章
加:2022-08-06 11:14:36  更:2022-08-06 11:15:08 
 
开发: 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年11日历 -2024/11/25 23:18:24-

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