【Node.js学习 day2——预备知识】

这篇具有很好参考价值的文章主要介绍了【Node.js学习 day2——预备知识】。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

Buffer(缓冲器)

1、概念
Buffer是一个类似于数组的对象,用于表示固定长度的字节序列
Buffer本质是一段内存空间,专门用来处理二进制数据
2、特点

  • Buffer大小规定且无法调整
  • Buffer性能较好,可以直接对计算机内存进行操作
  • 每个元素的大小为1字节(byte)

3、使用

  • 创建Buffer(3种方式)
//1.alloc
let buf = Buffer.alloc(10);
console.log(buf)

//2.allocUnsafe
let buf_2 = Buffer.allocUnsafe(10);
console.log(buf_2);

//3.from 字符串或其他转换
let buf_3 = Buffer.from('hello');
let buf_4 = Buffer.from([105, 108, 111, 118, 101, 121, 111, 117]);
console.log(buf_4);

4、 Buffer操作及注意事项

//buffer与字符串的转换
let buf_4 = Buffer.from([105, 108, 111, 118, 101, 121, 111, 117]);
console.log(buf_4.toString());//utf-8

let buf = Buffer.from('hello');
console.log(buf[0].toString(2));
console.log(buf);
buf[0]=95;
console.log(buf.toString());

//溢出
let buf_1 = Buffer.from('hello');
buf[0] = 361;//舍弃高位的数字 0001 0110 1001 => 0110 1001
console.log(buf_1);//69

//中文
let buf_2 = Buffer.from('你好');
console.log(buf_2);

程序运行的基本流程

  • 程序一般保存在硬盘中,软件安装的过程就是将程序写入硬盘的过程。
  • 程序在运行时会加载进入内存,然后由CPU读取并执行程序

进程与线程

  • 进程:进行中的程序
  • 线程:一个进程中执行的一个执行流
  • 一个线程是属于某个进程的
  • 一个进程往往包含多个线程

fs模块

fs模块可以实现与硬盘的交互,例如文件的创建、删除、重命名、移动,还有文件内容的写入、读取、以及文件夹的相关操作。

1. 写入文件

//1.导入fs模块
const fs = require('fs');

//2.写入文件
fs.writeFile('./座右铭.txt','三人行,则必有我师焉',err=>{
    //err 写入失败:错误对象 写入成功:null
    if(err){
        console.log('写入失败');
        return;
    }
    console.log('写入成功');
});

【Node.js学习 day2——预备知识】,node.js,学习
2. 同步与异步

fs.writeFileSync(‘./data.txt’, 'test);

3. 文件追加写入

//1.导入fs模块
const fs = require('fs');

//1.调用appendFile 异步追加写入
fs.appendFile('./座右铭.txt',',择其善者而从之,其不善者而改之', err=>{
    //判断
    if(err){
        console.log('写入失败~~');
        retun;
    }
    console.log('追加写入成功');
})

//2.同步追加写入
fs.appendFileSync('./座右铭.txt','\r\n温故而知新,可以为师矣')

//3.writeFile实现追加写入(重写)
fs.writeFile('./座右铭.txt', 'love love love', err =>{
    if(err){
        console.log('写入失败~');
        return ;
    }
    console.log('写入成功');
})

4. 文件流式写入
程序打开一个文件是需要消耗资源的,流式写入可以减少打开关闭文件的次数。
流式写入方式适用于大文件写入或者频繁写入的场景,writeFile适合于写入频率较低的场景。

//1.导入fs
const fs = require('fs');

//2.创建写入流对象
const ws = fs.createWriteStream('./观书有感.txt');

//3.write
ws.write('半亩方塘一鉴开\r\n');
ws.write('天光云影共徘徊\r\n');
ws.write('问渠那得清如许\r\n');
ws.write('为有源头活水来\r\n');

//4.关闭通道
ws.close();

5. 文件写入应用场景
文件写入在计算机中是一个非常常见的操作,下面的场景都用到了文件写入

  • 下载文件
  • 安装文件
  • 保存程序日志,如Git
  • 编辑器保存文件
  • 视频录制

当需要持久化保存数据的时候,应该想到文件写入

6. 文件读取
文件读取顾名思义,就是通过程序从文件中取出其中的数据,可以使用如下几种方式:

方法 说明
readFile 异步读取
readFileSync 同步读取
createReadStream 流式读取
//1.导入fs模块
const fs = require('fs');

//2.异步读取
fs.readFile('./观书有感.txt', (err, data) => {
    if(err){
        console.log('读取失败~');
        return ;
    }
    console.log(data.toString());
});

//3.同步读取
let data = fs.readFileSync('./观书有感.txt');
console.log(data.toString());

流式读取:

//1.导入fs模块
const fs = require('fs');

//2.创建读取流对象
const rs = fs.createReadStream('../资料/笑看风云.mp4');

//3.绑定data时间  chunk 块儿  大块儿
rs.on('data', chunk =>{
    console.log(chunk.length);//65536字节 => 64KB
    // console.log(chunk.toString()); //65536字节 => 64KB
});

//4. end 可选事件
rs.on('end', ()=>{
    console.log('读取完成');
});

7. 读取文件应用场景

  • 电脑开机
  • 程序运行
  • 编辑器打开文件
  • 查看图片
  • 播放视频
  • 播放音乐
  • Git查看日志
  • 上传文件
  • 查看聊天记录

8. 文件复制

//1.导入fs模块
const fs = require('fs');

//1、readFile
//读取文件内容
let data = fs.readFileSync('../资料/笑看风云.mp4');
//写入文件
fs.writeFileSync('../资料/笑看风云-2.mp4',data);

//2、流式操作
//创建读取流对象
const rs = fs.createReadStream('../资料/笑看风云.mp4');
//创建写入流对象
const ws = fs.createWriteStream('../资料/笑看风云.mp4');

//绑定data事件
rs.on('data', chunk =>{
    ws.write(chunk);
});

8. 文件重命名和移动

  • 重命名
//1.导入fs模块

const fs = require('fs');

//调用rename方法
fs.rename('./座右铭.txt', './论语.txt', err =>{
    if(err){
        console.log('操作失败~');
        return ;
    }
    console.log('操作成功!');
});
  • 移动
//1.导入fs模块

const fs = require('fs');

//调用rename方法
fs.rename('./论语.txt','../资料/论语.txt', err => {
    if(err){
        console.log('操作失败~');
        return ;
    }else{
        console.log('操作成功!');
    }
});

8. 文件删除

  • 调用unlink方法
//1.导入fs模块

const fs = require('fs');

//调用unlink方法
fs.unlink('./观书有感.txt', err => {
    if(err){
        console.log('操作失败');
        return ;
    }else{
        console.log('操作成功');
    }
});

  • 调用rm方法
//1.导入fs模块

const fs = require('fs');

//调用unlink方法
fs.rm('../资料/论语.txt', err => {
    if(err){
        console.log('操作失败');
        return ;
    }else{
        console.log('操作成功');
    }
});

9. 文件夹操作

//1.导入fs模块

const fs = require('fs');

//创建文件夹 mk make 制作 dir directory文件夹
fs.mkdir('./html', err=>{
    if(err){
        console.log('操作失败');
        return ;
    }else{
        console.log('操作成功');
    }
});

  • 递归创建
//1.导入fs模块

const fs = require('fs');

//递归创建
fs.mkdir('./a/b/c',{recursive: true}, err=>{
    if(err){
        console.log('操作失败');
        return ;
    }else{
        console.log('操作成功');
    }
});

【Node.js学习 day2——预备知识】,node.js,学习

  • 读取文件夹状态
//1.导入fs模块

const fs = require('fs');

//读取文件夹 read读取 dir directory文件夹
fs.readdir('../资料',(err, data)=>{
    if(err){
        console.log('操作失败');
        return ;
    }else{
        console.log(data);
    }
});

【Node.js学习 day2——预备知识】,node.js,学习
【Node.js学习 day2——预备知识】,node.js,学习

  • 删除文件夹
//1.导入fs模块

const fs = require('fs');

//删除文件夹 rm remove移除
fs.rmdir('./html', err => {
    if(err){
        console.log('删除失败');
        return ;
    }else{
        console.log('删除成功');
    }
});

  • 递归删除
//1.导入fs模块

const fs = require('fs');

//递归删除 不推荐使用
fs.rmdir('./a', {recursive:true}, err => {
    if(err){
        console.log('删除失败');
        return ;
    }else{
        console.log('删除成功');
    }
});

//推荐使用
fs.rm('./a',{recursive:true}, err => {
    if(err){
        console.log('操作失败');
        return ;
    }else{
        console.log('操作成功');
    }
})

10. 查看资源状态

//1.导入fs模块

const fs = require('fs');

//stat方法 status缩写 状态
fs.stat('../资料/观书有感.txt', (err, data) => {
    if(err){
        console.log('操作失败');
        return ;
    }else{
        console.log(data);
    }
});

【Node.js学习 day2——预备知识】,node.js,学习
11. 路径补充说明
fs模块对资源进行操作时,路径的写法有两种:

  • 相对路径
    ./座右铭.txt 当前目录下的座右铭.txt
    座右铭.txt 等效于上面的写法
    …/座右铭.txt当前目录的上一级目录中的座右铭.txt
  • 绝对路径
    D:/Program Files windows系统下的绝对路径
    /usr/bin Linux系统下的绝对路径

相对路径中所谓的当前目录,指的是命令行的工作目录,而并非是文件的所在目录
所以当命令行的工作目录与文件所在目录不一致时,会出现一些BUG

12. 相对路径的Bug与解决

//1.导入fs模块

const fs = require('fs');

//相对路径参照物:命令行的工作目录
fs.writeFileSync('./index.html', 'love');

//绝对路径 '全局变量' 保存的是:所在文件的所在目录的绝对路径
console.log(__dirname);
fs.writeFileSync(__dirname + 'index.html', 'love');

13. 批量重命名

//导入fs模块
const fs = require('fs');

//读取code文件夹
const files = fs.readdirSync('../资料');

//遍历数据
files.forEach(item =>{
    //拆分文件名
    let data = item.split('-');
    let [num, name] = data;
    //判断
    if(Number(num)<10){
        num ='0'+num;
    }
    //创建新的文件名
    let newName = num + '_' + name;
    //重命名
    fs.renameSync('../资料/${item}','../资料/${newName}');
});

path模块

path模块提供了操作路径的功能,当用API如下:

API 说明
path.resolve 拼接规范的绝对路径
path.sep 获取操作系统的路径分隔符
path.parse 解析路径并返回对象
path.basename 获取路径的基础名称
path.dirname 获取路径的目录名
path.extname 获得路径的扩展名

HTTP协议

【Node.js学习 day2——预备知识】,node.js,学习

  • 请求方法
方法 作用
GET 主要用于获取数据
POST 主要用于新增数据
PUT/PATCH 主要用于更新数据
DELETE 主要用于删除数据
HEAD/OPTIONS/CONNECT/TRACE 使用相对较少
  • URL
    Uniform Resource Locator 统一资源定位符
    【Node.js学习 day2——预备知识】,node.js,学习
    协议名+主机名
    【Node.js学习 day2——预备知识】,node.js,学习
  • 响应报文结构与响应行
    【Node.js学习 day2——预备知识】,node.js,学习
    【Node.js学习 day2——预备知识】,node.js,学习
    响应状态码
状态码 含义
200 请求成功
403 禁止请求
404 找不到资源
500 服务器内部错误
状态码 含义
1xx 信息响应
2xx 成功响应
3xx 重定向消息
4xx 客户端错误响应
5xx 服务端错误响应

IP

ip的作用:

  • ip本身是一个数字标识
  • ip用来标识网络中的设备,实现设备间通信

ip的分类:

类型 说明
本机回环IP地址 127.0.0.1~127.255.255.254
本机回环IP地址 127.0.0.1~127.255.255.254
局域网IP(私网IP) 192.168.0.0~192.168.255.255
172.16.0.0~172.31.255.255
10.0.0.0~10.255.255.255
广域网IP(公网IP) 除上述之外

端口

  • 应用程序的数字标识
  • 一台现代计算机有65536个端口(0~65535)
  • 一个应用程序可以使用一个或多个端口

端口的主要作用:
实现不同主机应用程序之间的通信文章来源地址https://www.toymoban.com/news/detail-824723.html

到了这里,关于【Node.js学习 day2——预备知识】的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • day4:Node.js 核心库

    常用工具模块 Node.js有许多常用的工具,以下是一些常见的: util : 是一个Node.js 核心模块,提供常用函数的集合,用于弥补核心 JavaScript 的功能 过于精简的不足。 Lodash :Lodash是一个功能丰富的JavaScript实用工具库,提供了许多用于处理数组、对象和其他常见数据结构的方法

    2024年02月07日
    浏览(43)
  • day5:Node.js 第三方库

    使用 Express.js 构建 Web 应用 Express框架是Node.js生态系统中的一种流行的Web应用程序框架。其核心功能主要包括以下几个方面: 路由 :Express提供了一种方便的方式来定义路由,使得开发人员可以基于不同的HTTP方法(如GET、POST等)和URL来定义处理请求的函数。 中间件 :这是

    2024年02月07日
    浏览(40)
  • Node.js知识梳理(一)——基础

    以下内容来自对《从前端到全栈》一书的学习记录~ 学习的时候用的是 V16.20.0 , 18+ 之后的语法差别还是有的~ Node.js 是运行在操作系统中的 JavaScript 运行时环境,和浏览器的运行环境不太一样: 不具备浏览器提供的 DOM API ,比如 Window 对象、 Location 对象、 Document 对象、 HTM

    2024年02月13日
    浏览(48)
  • Node.js知识梳理(二)——进阶

    以下内容来自对《从前端到全栈》一书的学习记录~ 学习的时候用的是 V16.20.0 , 18+ 之后的语法差别还是有的~ 请求优化 我们在请求资源的时候,是需要做优化的,这里的优化涉及到了缓存。浏览器的缓存策略有两种: 强缓存 协商缓存 关于两者的区别可以看看之前的那篇《

    2024年02月12日
    浏览(39)
  • Node.js详解(一):基础知识

    Node.js是一个javascript运行环境。它让javascript可以开发后端程序,实现几乎其他后端语言实现的所有功能,可以与PHP、Java、Python、.NET、Ruby等后端语言平起平坐。 Node.js是基于V8引擎,V8是Google发布的开源JavaScript引擎,本身就是用于Chrome浏览器的js解释部分,但是Node.js 之父 Rya

    2024年02月07日
    浏览(42)
  • Node.js基础知识点(三)

    一、fs 浏览器中的Javascript是没有文件操作的能力的,但是Node中的Javascript具有文件操作的能力 fs是 file-system的简写,就是文件系统的意思,在Node中如果想要进行文件操作,就必须引入 fs 这个核心模块,在 fs 中就提供了所有的文件操作相关的 API 例如: fs.readFile 就是用来读取

    2024年01月25日
    浏览(39)
  • Node.js基础知识点(四)

    本节介绍一下最简单的http服务 一.http 可以使用Node 非常轻松的构建一个web服务器,在 Node 中专门提供了一个核心模块:http http 这个模块的就可以帮你创建编写服务器。 1. 加载 http 核心模块 2. 使用 http.createServer() 方法创建一个Web 服务器 返回的是一个 Server 实例: 3.服务器要干

    2024年01月17日
    浏览(48)
  • node.js知识系列(2)-每天了解一点

    👍 点赞,你的认可是我创作的动力! ⭐️ 收藏,你的青睐是我努力的方向! ✏️ 评论,你的意见是我进步的财富! 在 Node.js 中,您可以使用 child_process 模块来执行子进程。这允许您在 Node.js 应用程序中启动外部命令或脚本,与它们进行交互并获取输出。 以下是一个简单

    2024年02月07日
    浏览(41)
  • node.js知识系列(1)-每天了解一点

    👍 点赞,你的认可是我创作的动力! ⭐️ 收藏,你的青睐是我努力的方向! ✏️ 评论,你的意见是我进步的财富! Node.js 是一个基于 Chrome V8 JavaScript 引擎的服务器端运行环境,它允许您使用 JavaScript 编写服务器端应用程序。Node.js 的主要特点包括: 非阻塞、事件驱动 :

    2024年02月07日
    浏览(44)
  • 【Node.JS】初入前端,学习node.js基本操作

    NPM是随同NodeJS一起安装的包管理工具,能解决NodeJS代码部署上的很多问题,常见的使用场景有以下几种: npm可以分为全局安装和本地安装 Node所有API都支持回调函数,回调函数一般作为API的最后一个参数出现 阻塞代码实例 非阻塞代码示例 语法分析 具体示例 事件监听器就是

    2023年04月25日
    浏览(42)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包