zoukankan      html  css  js  c++  java
  • 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

  • 相关阅读:
    exports 和 module.exports 的区别
    (转) 前端模块化:CommonJS,AMD,CMD,ES6
    使用原生的javascript来实现轮播图
    使用C3的一些新属性绘制谷歌浏览器的图标
    仿照jQuery进行一些简单的框架封装(欢迎指教~)
    canvas中的非零环绕原则
    利用canvas进行一个饼形图的绘制
    利用构造函数对canvas里面矩形与扇形的绘制进行一个封装
    利用canvas来绘制一个会动的图画,欢迎指教
    自己整理出来的一些用到的方法的封装,欢迎指教
  • 原文地址:https://www.cnblogs.com/slightFly/p/13832827.html
Copyright © 2011-2022 走看看