Nodejs提供的原生API能力(上)

课程目标

1、了解Nodejs提供的数据类型 2、了解Nodejs提供的几个工具库  3、掌握Nodejs的文件系统能力

Nodejs架构 

  

libuv:node的灵魂所在,提供异步功能的C库,运行时负责一个事件循环,就是eventLoop,维护一个线程池,去处理文件的操作,去抹平系统之间的差异
 
Nodejs数据类型 
 
数据类型     api
Buffer

创建一个专门存放二

进制数据的缓存区

处理像TCP流或文件流等流式数据(非一次加载完成的数据)时,必须使用到二进制数据

需要在 Node.js 中处理I/O操作中移动的数据时,就有可能使用 Buffer 库

原始数据存储在 Buffer 类的实例中,一个 Buffer 类似于一个整数数组,

但它对应于 V8 堆内存之外的一块原始内存

存储需要临时占用大量内存数据,内存中开辟的一片区域(buffer),用于存放二进制数据

流的生产者与消费者之间的速度通常是不一致的,因此需要缓存区buffer来暂存一些数据

buffer大小通过highWaterMark参数指定,默认情况下是16kb

流式数据会自动创建Buffer,手动创建Buffer许谨慎,坑:待学

Buffer.form(buffer|array|string)使用对外内存新增Buffer

Buffer.from(arrayBuffer) 浅拷贝arrayBuffer,共享内存

Buffer.alloc(size) 分配制定大小的Buffer,默认填0,用UTF-8编码

Buffer.allocUnsafe(size) 分配一个未初始化的Buffer

Stream

抽象接口,有很多

对象实现了这个接口

解决生产者和消费者问题的一种方式,解决异步IO问题

Stream模块对于六的使用者而言无需关心 

readble.pipe(writebleDest)

类型:Readable、Writable、Duplex、Transform  

事件:data 、end、error 、finish 

event/EventEmitter

事件触发与事件监

听器功能的封装

所有的异步 I/O 操作在完成时都会发送一个事件到事件队列

事件:emit、on、

Error

错误类型

种类:

标准的js错误,比如:SyntaxError/ReferenceError

底层操作出发的系统错误,比如:文件读写

用户自定义错误

异常逻辑触发的AssertionError,通常来自Assert模块

 

错误冒泡和捕获:

 所以通过Node.js或者js运行时抛出的异常都是Error实力

大多数的异步方法都接受一个callback函数,

该函数会接受一个Error对象传入作为第一个参数

URL

请求

弃用urlObjects,改用WHATWG URL

使用URLSearchParams操作参数

url.parse(req.url).pathname

queryString.parse(url.parse(req.url).query)['param2']

Object.formEntries(new URLSearchParams('foo=bar&baz=que'))

global

全局变量

看上去像是全局变量的存在,实际上仅存在于模块的作用域中

从js继承而来的全局变量

Node特有的全局变量

__dirname、__filename、export、module、require()

console、timer全家桶、global(容器)

Buffer、process、URL、WebAssembly

   
    

 Nodejs工具库 

util  

风格转换

 

promisify <=> callbackify、  extEncoder<=> TextDecoder

调试工具

debugger、inspect、format、getSystemErrorName

类型判断

types.isDate(value)

assert

内置断言库、需要配合测试框架使用,主动抛出AssertionError错误  

assert(vale, msg)、match(string, reg)

querystring

官方提供的解析和格式化URL查询字符串的实用工具

 Nodejs的文件操作能力 

os模块

提供了与操作系统相关的实用方法和熟悉

通过兼容的方式调用不同平台的底层命令,形成系统快照

  - cpus、platform、type、uptime、userInfo

定义操作系统级别的枚举常量

  - 信号常量 SIG*、错误常量E*、windows特有WSA*、优先级PRIORITY_*

fs模拟Linux环境,提供了用于与文件系统进行交互的API

所有的文件系统操作都具有同步和异步的形式

URI作为特殊的文件也可以被fs模块使用

操作文件夹 mkdir/rmdir

操作文件 chmod/open/read/write

 

 

 

posted @ 2020-10-17 22:12  SlightFly  阅读(243)  评论(0)    收藏  举报