nodejs核心API

2023-05-16

1.Buffer对象(不需要引入)


Bufferd对象用途:
以二进制流进行数据的传送传递

1.三种创建方式(类似于数组的创建,用16进制存储)
let buf1 = Buffer.alloc(20, 13);
console.log(buf1);
<Buffer 0d 0d 0d 0d 0d 0d 0d 0d 0d 0d 0d 0d 0d 0d 0d 0d 0d 0d 0d 0d>


2.不确定大小,内部可能有脏数据
let buf2 = Buffer.allocUnsafe(10, 0)
console.log(buf2);
<Buffer 00 00 00 00 00 00 00 00 00 00>


3.转换为二进制
let arr = [1, 2, 3];
let buf4 = Buffer.from(arr);
console.log(buf4); //<Buffer 01 02 03>

4.常用
let buf5 = Buffer.from('hello,world');
console.log(buf5);//<Buffer 68 65 6c 6c 6f 20 77 6f 72 6c 64>
console.log(buf5.toString());hello world


常用方法一:填充fill()
buf5.fill(0, 3);

console.log(buf5);<Buffer 68 65 6c 00 00 00 00 00 00 00 00>
console.log(buf5.toString());hel

常用方法二:write()写入内容
buf5.write("ni", 0, 3, 'utf-8');
buf5.write("hao", 2, 3, 'utf-8');
console.log(buf5.toString());

常用方法三:isBuffer() 判断是否是二进制流
let buf7 = Buffer.alloc(5);
console.log(Buffer.isBuffer(buf7)); //true
console.log(Buffer.isBuffer([])); //false

常用方法四:.length
console.log(buf7.length); // 5 

常用方法5:.bytelength
console.log(buf7.byteLength);  // 5


2.fs模块


2.1 同步和异步读取
// 1.引入文件系统
const fs = require('fs');

// 2.同步读取文件
let fd = fs.readFileSync(__dirname + '/read/test.txt')
console.log(fd.toString()); //hello,nodejs
console.log("后续的操作");

// 3.异步读取文件,不会等待后续操作
fs.readFile(__dirname + '/read/test.txt', (err, data) => {
    if (err) {
        console.log(err);
    } else {
        console.log(data.toString());
    }
})
console.log("后续的操作");


2.2 同步写入
const fs = require('fs');
// 1.打开文件
let fd = fs.openSync(__dirname + '/read/b.txt', 'w+')
console.log(fd);

// 2.同步写入文件
fs.writeFileSync(fd, "陕西西安",)

// 3.保存并退出
fs.closeSync(fd);

// 4.后续操作
console.log("后续的操作");


2.3异步写入
const fs = require('fs');
// 1.打开文件
fs.open(__dirname + '/read/b.txt', 'w+', (err, fd) => {
    if (!err) {
        // 2.写入文件
        fs.writeFile(fd, `张三${Date.now()}`, (err) => {
            if (!err) {
                console.log("写入文件成功");
            } else {
                throw err;
            }
        })
        // 3.文件
        fs.close(fd, (err) => {
            if (!err) {
                console.log("文件已经保存并关闭");
            } else {
                throw err;
            }
        })
    }
})

console.log("后续操作");


2.4copy实现
const fs = require('fs');

copy('', '', (err) => {
    
})
// fs.copyFile()

let copy = (src, target, callBack) => {
    // 1.读文件
    fs.readFile(src, (err, data) => {
        if (!err) {
            // 2.写文件
            fs.writeFile(target, data, (err, data) => {
                if (!err) {
                    callBack && callBack(err, data)
                } else {
                    throw err;
                }
            })
        }
    })
}
copy(__dirname + '/read/b.txt', __dirname + '/read/d.txt', (err) => {
    if (!err) {
        console.log("文件拷贝成功");
    }
})


2.5 读入流和写入流


// 1.创建读写流
const fs = require('fs')
const rs = fs.createReadStream("C:/Users/86136/Music/CloudMusic/许嵩 - 清明雨上.mp3")
const ws = fs.createWriteStream(__dirname + '/read/hello.mp3')

// 2.监听流的打开
rs.once('open', () => {
    console.log("写入流打开------");
})

// 2.监听流的读入
ws.once('open', () => {
    console.log("读入流打开------");
})

// 3.监听data
rs.on('data', (data) => {
    console.log(data);
    ws.write(data);
})

// 4.监听流的关闭
rs.once('end', () => {
    console.log("读入数据已经完成");
})

rs.once('close', () => {
    console.log("读入通道已经关闭");
})


2.6 pipe管道
 

// 1.创建读写流
const fs = require('fs')
const rs = fs.createReadStream("C:/Users/86136/Music/CloudMusic/许嵩 - 清明雨上.mp3")
const ws = fs.createWriteStream(__dirname + '/read/hello999.mp3')

// 2.创建管道
rs.pipe(ws);
pipe实现
rs.on('data', (data) => {
    let flag = ws.write(data)
    console.log(flag); // 下面的操作没有完成,都会返回false
    if (!flag) {
        // 暂停操作
        rs.pause()
    }
})

ws.on('drain', () => {
    // 继续读取流
    rs.resume()
})

rs.read('end', () => {
    ws.end()
})
 


3.http模块


创建httpServer

const http = require('http');

let server = http.createServer((req, res) => {
    res.end("hello,nodejs");
})

server.listen(8888, "127.0.0.1", () => {
    console.log("server running at http://127.0.0.1:8888");
    // 6s后关闭服务器
    /*  setTimeout(() => {
         server.close();
     }, 6000); */
});

// 1.监听服务器关闭
server.on('close', () => {
    console.log("服务器已经关闭");
})

// 2.监听服务器发生错误
server.on('error', (e) => {
    if (e.code === "EADDRINUSE") {
        console.log("端口号被调用");
    } else {
        console.log("其他错误");
    }
})

// 3.设置超时时间
server.setTimeout(1000, () => {
    console.log("设置超时时间为1s");
})
server.on('timeout', () => {
    // 超时要做什么操作
    console.log("连接已经超时");
})


4.URL模块


==把字符串转成url对象 ==

const url = require('url');
// url.parse()不推荐
const myURL = new URL("https://editor.csdn.net/md/?articleId=121215760");
console.log(myURL);


5.请求数据接收实例


<form action="http://127.0.0.1:8888" method="POST">
        <label for=" ">用户名: <input type="text" name="userName"></label>
        <label for="">密码: <input type="text" name="userPsw"></label>
        <input type="submit" value="提交">
    </form>


const http = require('http');
const queryString = require('querystring');
const util = require('util');

const server = http.createServer((req, res) => {
    console.log(req.method);
    res.writeHead(200, {
        "Content-Type": 'text/plain',
        'charset': 'utf-8',
        'Access-Control-Allow-Origin': '*',
        // 可以解决跨域请求
        'Access-Control-Allow-Methods': 'PUT,POST,GET,DELETE,OPTIONS'
    });

    // post请求得做事件监听
    let postData = '';
    req.on('data', (data) => {
        postData += data
    })

    // 监听数据接收完毕
    req.on('end', () => {
        postData = queryString.parse(postData)
        console.log(postData);
    })

    res.end("success")
})

server.listen(8888, () => {
    console.log("服务已经启动");
})


6.web容器搭建


对不同页面进行数据响应

const http = require('http');
const url = require('url')
const fs = require('fs');
const path = require('path')

const server = http.createServer((req, res) => {
    let pathUrl = url.parse(req.url)
    let pathName = pathUrl.pathname
        // console.log(pathName);
        // 要加载什么资源,要在请求头里添加Content-Type
    if (pathName === '/page1') {
        fs.readFile(path.join(__dirname + '/static/page1.html'), (err, data) => {
            if (!err) {
                res.writeHead(200, {
                    "Content-Type": 'text/html',
                    'charset': 'utf-8',
                })
                res.end(data)
            } else {
                throw err;
            }
        })
    } else if (pathName === '/page2') {
        fs.readFile(path.join(__dirname + '/static/page2.html'), (err, data) => {
            if (!err) {
                res.writeHead(200, {
                    "Content-Type": 'text/html',
                    'charset': 'utf-8',
                })
                res.end(data)
            } else {
                throw err;
            }
        })
    } else if (pathName === '/css') {
        fs.readFile(path.join(__dirname + '/static/index.css'), (err, data) => {
            if (!err) {
                res.writeHead(200, {
                    "Content-Type": 'text/css',
                    'charset': 'utf-8',
                })
                res.end(data)
            } else {
                throw err;
            }
        })
    } else if (pathName === '/img1') {
        fs.readFile(path.join(__dirname + '/static/img1.jpg'), (err, data) => {
            if (!err) {
                res.writeHead(200, {
                    "Content-Type": 'text/plain',
                    'charset': 'utf-8',
                })
                res.end(data)
            } else {
                throw err;
            }
        })
    } else {
        res.writeHead(404, {
            "Content-Type": 'text/html',
            'charset': 'utf-8',
        })
        res.end("<h1>404...</h1>")
    }
})

server.listen(8888)


————————————————
版权声明:本文为CSDN博主「Melody_kui」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/m0_51279688/article/details/121215760

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

nodejs核心API 的相关文章

  • 如何使用 JS 和 Chrome 控制台向频道发送 Discord 消息?

    如何使用 JS 和 Chrome 控制台在不使用 Discord API 的情况下将 Discord 消息发送到 Discord 频道 看来这是不可能的事了 打开不和谐控制台 ctrl shift i 不起作用 请参阅下面的编辑 然后进入网
  • 获取 Youtube 上的游戏直播列表

    我正在尝试使用 Youtube 数据 API 来获取当前与游戏相关的直播流列表 但我找不到任何符合我需要的端点并返回每个频道的观看者数量 你们知道我该如何做到这一点吗 Thanks 游戏直播列表 videoCategoryId 20 是 游
  • 将数据传递给视图时,node ejs 引用错误数据未在 eval 处定义

    我已经接近使用express和ejs的节点应用程序 但是当我尝试将数据从控制器传递到我的视图时 如下所示 var myData theData data res render path join dirname views index my
  • 节点需要导入语句的文件扩展名

    我一直在构建一个打字稿应用程序 其中我从文件中导入了一些常量 VS Code 的自动导入为我完成了这项工作 但是当我编译并运行该文件时 它抛出了一个错误 因为它找不到该模块 似乎错误来自于导入语句没有文件扩展名 但它只出现在编译的 java
  • Node.js + Firebase orderByChild 不起作用

    我试图弄清楚这个嵌套顺序 但我所做的一切都不起作用 这是我试图订购的数据结构的示例 KV Lrm 93Agm8kAuXql body Acceleration 0 0 Altitude 11 Battery 12 7 Date 2016 0
  • 如何修复无效的 API 密钥、IP 或操作权限错误?

    这是币安加密货币交易所 API 我试图获取帐户信息 但我无法做到这一点 它是官方 C Api 这是github链接 https github com binance exchange binacpp 这是终端上的错误 回答问题时 请轻松一点
  • 通过键盘快捷键电子应用程序禁用重新加载

    我想实现一个绑定到的自定义操作Command R电子应用程序中的键盘快捷键 我克隆了electron quick start回购 并改变了main js文件到此 const app Menu MenuItem BrowserWindow r
  • 在azure应用程序服务中使用docker-compose

    我的平均堆栈代码在 docker compose 配置中工作 如果我跑docker compose up在我的电脑上 然后我可以成功登录我的应用程序localhost如果转到应用程序服务并单击 docker compose 预览选项并上传我
  • 在 Heroku 应用程序中同时运行 Django 和 Node

    我想在我的 heroku 实例上同时运行 django 应用程序和节点应用程序 这是我的进程文件 web python manage py runserver 0 0 0 0 PORT web node bin node modules a
  • 如何在 AWS CDK 堆栈中压缩 Node Lambda 依赖项?

    我正在使用 CDK 通过 API Gateway Lambda 和 DynamoDB 创建一个简单的无服务器项目 到目前为止看起来很酷 但是当我向 Lambda 添加外部依赖项时出现以下错误 Runtime ImportModuleErro
  • Vagrant 提供,无法启动 grunt

    我正在尝试让 vagrant 安装 nodejs 正常运行所需的所有内容 然后在节点项目的根文件夹上执行 nohup grunt server 之后 我期望服务器在端口 3030 上侦听 但事实并非如此 如果在配置后我这样做 流浪者 ssh
  • Sails.js 升级到 v1 反向区分大小写查询

    升级到 sails v1 后 控制器中的所有请求都变得区分大小写 尽管这是预料之中的 但在这里评论道 https sailsjs com documentation concepts models and orm models case s
  • 使用 SAS EG 通过代理从 API 下载 JSON 文件

    我正在尝试使用瑞士当局提供的 API 对公司网络内的地址进行地理编码 我的公司使用带有用户名和密码的代理服务器 我是 SAS EG 的新手 这是我迄今为止拥有的代码 我必须匿名一些内容才能被允许在此处发布 filename response
  • Socket.io 不断重复连接并忽略其他事件

    我正在尝试制作一个网络应用程序 用户可以在其中互相玩环形国际象棋 这是我的 app js 在服务器上 var express require express var app express var http require http Ser
  • 将图像存储在 Mongodb 中并使用 Nodejs 提供服务

    我知道 Mongodb 可以通过两种方式存储图像 通过将图像存储为二进制在常规文档中 通过 Gridfs 管理更大的图像 为简单起见 并且因为我计划服务器的图像很小 所以我将选择选项 1 为了将图像提供给浏览器 我使用的是nodejs 我的
  • NodeMailer,发送特定数量的电子邮件

    我需要帮助使用 nodemailer 发送特定数量的电子邮件 假设我想向特定的人发送 20 封电子邮件 这是我的代码 const transporter nodemailer createTransport smtpTransport ho
  • 如何在 Node.js 中等待

    这是一个关于我认为 Node js 中的简单模式的问题 这是我在 CoffeeScript 中的示例 db is open false db open gt db is open true wait gt wait until db is
  • FindAndUpdate 如何检查文档是否真的更新

    想象一下以下模型 var Office id 1 name My Office branches adddress Some street that avenue isPrincipal true adddress Another addr
  • 我可以以低权限运行 Node.JS 吗?

    我想以低权限用户运行节点 可以吗 我需要使用 Express js 框架 是的 有许多解决方案可用于执行此操作 具体取决于您的具体需求 如果你想在端口 80 上运行节点 你可以使用 nginx 尚不能与 WebSockets 配合使用 或h
  • Jade 模板引擎中的 IE 条件语句

    如何将以下 IE 条件语句转换为 JADE 语言 我已尝试以下操作 但它不起作用 if IE 8 html lang en class ie8 if IE 9 html lang en class ie9 if IE html lang e

随机推荐

  • VS2008——调试方法大全

    一 断点调试 总结以下VS2008的调试方法 xff0c 首先最常用的就是使用断点了 xff0c 断点分为两种 xff1a 普通断点 跟踪点 普通断点就是红色圆点 xff0c 跟踪点是红色菱形 可以通过右键设置断点相关内容 xff0c 让断
  • Effective C++——22.将成员变量声明为private

    1 一致性 xff1a 如果public中的每样东西都是函数 xff0c 就不需要思考使用的时候要不要带小括号 2 使用函数可以让成员变量的处理有更精确的控制 3 封装性 xff1a 有时候要根据不同情况修改set和get的实现方式 xff
  • Effective C++——4.确定对象被使用前已经初始化

    1 为防止有的情况下对象未初始化导致的混乱 xff0c 最佳的处理办法就是 xff1a 永远在使用对象之前先将它初始化 对于无任何成员的内置类型 xff0c 必须手工完成 2 内置类型以外的任何其他东西 xff0c 初始化责任在构造函数中
  • Effective C++——32.确定public继承是“is-a”关系

    1 is a关系的概念 xff0c 就是基类可以实现的事情 xff0c 子类就一定要能实现 如果不能实现 xff0c 可以修改设计 xff0c 比如将基类能实现 xff0c 子类却不能实现的事情派生出一个中间基类 记住一点 xff1a 1
  • Java中repaint方法清除原来图像问题

    虽然Java界面编程作用不大 xff0c 但在兴趣的驱使下还是了解了一下 xff0c 在写小程序的时候发现了repaint方法有时候会清理原来的图像 xff0c 有时候又不清理 下面贴出我通过API文档得出的结论 xff0c 以下例子窗口为
  • 怎样找回自己CSDN丢失博客?

    写博客是件很欢快的事情 xff0c 但没多久就发现自己刚写的博客丢失 xff0c 这是一件更加 欢快 的事情 百度了一下关于CSDN博客丢失的现象 xff0c 虽然不算很多 xff0c 但还是有个别人也同样发生了这样的情况 注 xff1a
  • 拓扑排序(队列实现)

    什么是拓扑排序呢 xff1f 就是将一个有向无环图中所有顶点在不违反先决条件关系的前提下排成线性序列的过程称为拓扑排序 学拓扑排序有什么用呢 xff1f 当然有用啦 比如说学校排课的时候 xff0c 会考虑到有的课程需要先修 我们学完C程序
  • Arch的VBox安装笔记

    Arch Version archlinux 2015 12 01 dual Virtual Box Version 5 0 16 r105871 Update xff1a 2016 03 26 17 08 18 1 分区 xff08 cf
  • Java Runtime (class file version 61.0), this version of the Java Runtime only recognizes class file

    maven打包报错 org springframework boot maven BuildInfoMojo hasbeen copiled by a more recent version of the Java Runtime clas
  • 前端JS接收服务端的二进制文件流实现文件下载

    前端JS接收服务端的二进制文件流实现文件下载 var binaryData 61 binaryData push res 改成Boole或者file类型 const url 61 window URL createObjectURL new
  • debian10ssh配置用户限制,日志等

    需求 xff1a 工作端口为2021 xff1b 只允许用户user01 xff0c 密码ChinaSkill21登录到router 其他用户 xff08 包括root xff09 不能登录 xff0c 创建一个新用户 xff0c 新用户可
  • CentOS搭建PySpider爬虫服务

    1 环境准备 前置环境部署 在开始部署前 xff0c 我们需要做一些前置准备 yum 更新 yum span class hljs operator span class hljs keyword update span y span 安装
  • openGauss5.0企业版CentOS单节点安装

    目录 一 安装环境 二 前置依赖包 三 安装前准备1 四 安装前准备2 五 安装 一 安装环境 CPU xff1a 2核 内存 xff1a 4G 磁盘 xff1a 20G 操作系统 xff1a CentOS 7 9 python版本 xff
  • SpringBoot+PageHelper+Bootstrap+Thymeleaf 实现分页功能

    本文针对那种想要快速实现功能 xff0c 而不是研究原理的 xff0c 那你就直接复制我的东西 xff0c 运行就好 如果想深入学习的同学请另行百度 第一种 Spring Boot 43 Thymeleaf 使用PageHelper实现分页
  • Idea集成使用SVN教程

    idea 从项目窗口跳到打开项目选项窗口 操作之后即可跳到如下界面 第一步 下载svn的客户端 xff0c 通俗一点来说就是小乌龟啦 xff01 官网下载地址 xff1a Downloads TortoiseSVN 下载之后直接安装就好了
  • IntelliJ IDEA 下的svn配置及使用的非常详细的图文总结

    IntelliJ IDEA 下的svn配置及使用的非常详细的图文总结 请叫我大师兄 CSDN博客 ideasvn配置 https blog csdn net qq 27093465 article details 74898489 首先 x
  • webpack 错误

    1 ERROR in src main css Module build failed from node modules mini css extract plugin dist loader js ReferenceError docu
  • 客户端js 读取 json 数据

    采用 XMLHttpRequest 读取 1 new 初始化 XMLHttpRequest 2 open 设置请求方式 xff0c 地址 3 send 发起请求 4 onload 请求成功 xff0c 返回结果 代码 xff1a lt DO
  • dataTable的中文文档

    DataTables Table plug in for jQuery https datatables net 用google 打开 xff0c 直接翻译 参考 选项 DataTables 及其扩展是极其可配置的库 xff0c 它们对 H
  • nodejs核心API

    1 Buffer对象 不需要引入 Bufferd对象用途 以二进制流进行数据的传送传递 1 三种创建方式 类似于数组的创建 用16进制存储 let buf1 61 Buffer alloc 20 13 console log buf1 lt