前端学习回顾-3/Node.js入门

程序员要快速学新知识就得按照CRM /抄/运行/修改/

  • node.js用的是commonjs模块

  • assert 模块提供了断言测试的函数,用于测试不变式。

  • (ES6) 引入 TypedArray 之前,JavaScript 语言没有读取或操作二进制数据流的机制。 Buffer 类被引入作为 Node.js API 的一部分,使其可以在 TCP 流或文件系统操作等场景中处理二进制数据流。

  • child_process 模块提供了衍生子进程的功能,它与 popen(3) 类似,但不完全相同。 这个功能主要由 child_process.spawn() 函数提供

  • Node.js在单个线程中运行单个实例。 用户(开发者)为了使用现在的多核系统,有时候,用户(开发者)会用一串Node.js进程去处理负载任务。

cluster 模块允许简单容易的创建共享服务器端口的子进程。

  • console 模块提供了一个简单的调试控制台,类似于 Web 浏览器提供的 JavaScript 控制台。
  • crypto 模块提供了加密功能,包含对 OpenSSL 的哈希、HMAC、加密、解密、签名、以及验证功能的一整套封装。使用 require('crypto') 来访问该模块。
  • dgram模块提供了 UDP 数据包 socket 的实现。
  • dns 模块包含两类函数:
    //第一类函数,使用底层操作系统工具进行域名解析,且无需进行网络通信。 这类函数只有一个:dns.lookup()
    // 第二类函数,连接到一个真实的 DNS 服务器进行域名解析,且始终使用网络进行 DNS 查询。 这类函数包含了 dns 模块中除 dns.lookup() 以外的所有函数。 这些函数使用与 dns.lookup() 不同的配置文件(例如 /etc/hosts)。 这类函数适合于那些不想使用底层操作系统工具进行域名解析、而是想使用网络进行 DNS 查询的开发者。
  • Node.js 中运行的应用程序一般会遇到以下四类错误:
  • 标准的 JavaScript 错误:
    • : 当调用 eval() 失败时抛出。
    • : 当 JavaScript 语法错误时抛出。
    • : 当值不在预期范围内时抛出。
    • : 当使用未定义的变量时抛出。
    • : 当传入错误类型的参数时抛出。
    • : 当全局的 URI 处理函数被误用时抛出。
  • 由底层操作系触发的系统错误,例如试图打开一个不存在的文件、试图通过一个已关闭的 socket 发送数据等。
  • 由应用程序代码触发的用户自定义的错误。
  • 断言错误是错误的一个特殊类别,每当 Node.js 检测到一个不应该发生的异常逻辑时触发。 这类错误通常由 assert 模块引起。所有由 Node.js 引起的 JavaScript 错误与系统错误都继承自或实例化自标准的 JavaScript 类,且保证至少提供类中的属性。

  • 大多数 Node.js 核心 API 都采用惯用的异步事件驱动架构,其中某些类型的对象(触发器)会周期性地触发命名事件来调用函数对象(监听器)。

文件系统

  • 文件 I/O 是对标准 POSIX 函数的简单封装。 通过 require('fs') 使用该模块。 所有的方法都有异步和同步的形式。
    //异步方法的最后一个参数都是一个回调函数。 传给回调函数的参数取决于具体方法,但回调函数的第一个参数都会保留给异常。 如果操作成功完成,则第一个参数会是 null 或 undefined。
    //当使用同步方法时,任何异常都会被立即抛出。 可以使用 try/catch 来处理异常,或让异常向上冒泡。
  • 要使用 HTTP 服务器与客户端,需要 require('http')。
  • HTTPS 是 HTTP 基于 TLS/SSL 的版本。在 Node.js 中,它被实现为一个独立的模块。
  • Node.js 有一个简单的模块加载系统。 在 Node.js 中,文件和模块是一一对应的(每个文件被视为一个独立的模块)。
  • net 模块提供了创建基于流的 TCP 或 IPC 服务器(net.createServer())和客户端(net.createConnection()) 的异步网络 API。
  • os 模块提供了一些操作系统相关的实用方法。
  • path 模块提供了一些工具函数,用于处理文件与目录的路径。
  • process 对象是一个全局变量,它提供当前 Node.js 进程的有关信息,以及控制当前 Node.js 进程。 因为是全局变量,所以无需使用 require()。
  • querystring 模块提供了一些实用函数,用于解析与格式化 URL 查询字符串。
  • repl 模块提供了一种“读取-求值-输出”循环(REPL)的实现,它可作为一个独立的程序或嵌入到其他应用中。
  • require('readline') 模块提供了一个接口,用于从可读流(如 process.stdin)读取数据,每次读取一行。
  • 流(stream)在 Node.js 中是处理流数据的抽象接口(abstract interface)。 stream 模块提供了基础的 API 。使用这些 API 可以很容易地来构建实现流接口的对象。
    Node.js 提供了多种流对象。 例如, HTTP 请求 和 process.stdout 就都是流的实例。
    流可以是可读的、可写的,或是可读写的。所有的流都是 EventEmitter 的实例。
  • string_decoder 模块提供了一个 API,用于把 Buffer 对象解码成字符串,但会保留编码过的多字节 UTF-8 与 UTF-16 字符。
  • timer 模块暴露了一个全局的 API,用于在某个未来时间段调用调度函数。 因为定时器函数是全局的,所以使用该 API 无需调用 require('timers')

Node.js 中的计时器函数实现了与 Web 浏览器提供的定时器类似的 API,除了它使用了一个不同的内部实现,它是基于 Node.js 事件循环构建的。

  • tls 模块是对安全传输层(TLS)及安全套接层(SSL)协议的实现,建立在OpenSSL的基础上。
  • 终端
    //tty 模块提供了 tty.ReadStream 类和 tty.WriteStream 类。
  • url 模块提供了一些实用函数,用于 URL 处理与解析。
  • util 模块主要用于支持 Node.js 内部 API 的需求。 大部分实用工具也可用于应用程序与模块开发者。
  • v8 模块暴露了特定于V8版本内置到 Node.js 二进制文件中的API.
  • vm 模块提供了一系列 API 用于在 V8 虚拟机环境中编译和运行代码。
  • zlib模块提供通过 Gzip 和 Deflate/Inflate 实现的压缩功能

你可能感兴趣的:(前端学习回顾-3/Node.js入门)