Node.js笔记--01

版权声明:这是博主的原创文章,喜欢请支持一下。 https://blog.csdn.net/qq_39925376/article/details/88586756

Node.js下载:https://nodejs.org/en/download/
Node 是一个让 JavaScript 运行在服务端的开发平台,它让 JavaScript 成为与PHP、Python、Perl、Ruby 等服务端语言平起平坐的脚本语言。
如果我们使用PHP来编写后端的代码时,需要Apache 或者 Nginx 的HTTP 服务器,并配上 mod_php5 模块和php-cgi。使用 Node.js 时,我们不仅仅 在实现一个应用,同时还实现了整个 HTTP 服务器。

Node.js 组成:
引入 required 模块: 可以使用 require 指令来载入 Node.js 模块。
创建服务器: 服务器可以监听客户端的请求,类似于 Apache 、Nginx 等 HTTP 服务器。
接收请求与响应请求: 服务器很容易创建,客户端可以使用浏览器或终端发送 HTTP 请求,服务器接收请求后返回响应数据。

NPM: 是随同NodeJS一起安装的包管理工具,能解决NodeJS代码部署上的很多问题。
npm 的包安装:

	npm install express         //本地安装
	npm install express -g      //全局安装

package.json 位于模块的目录下,用于定义包的属性。
Package.json 属性说明:
name - 包名。 version - 包的版本号。
description - 包的描述。
homepage - 包的官网 url 。
contributors - 包的其他贡献者姓名。
dependencies - 依赖包列表。如果依赖包没有安装,npm 会自动将依赖包安装在 node_module 目录下。 keywords - 关键字
repository - 包代码存放的地方的类型,可以是 git 或 svn,git 可在 Github 上。
main - main 字段指定了程序的主入口文件,require(‘moduleName’) 就会加载这个文件。这个字段的默认值是模块根目录下面的 index.js。

Node.js REPL(交互式解释器) 表示一个电脑的环境,类似 Window 系统的终端或 Unix/Linux shell。
Node可以执行以下任务:
读取 - 读取用户输入,解析输入了Javascript 数据结构并存储在内存中。
执行 - 执行输入的数据结构
打印 - 输出结果
循环 - 循环操作以上步骤直到用户两次按下 ctrl-c 按钮退出

REPL 命令:
ctrl + c ----退出当前终端。
ctrl + c ----按下两次 - 退出 Node REPL。
ctrl + d ----退出 Node REPL.
向上/向下键 ----查看输入的历史命令
tab 键 ----列出当前命令
.help ----列出使用命令
.break ----退出多行表达式
.clear ----退出多行表达式
.save filename ----保存当前的 Node REPL 会话到指定文件
.load filename ----载入当前 Node REPL 会话的文件内容。

Node.js 异步编程的直接体现就是回调,所有 API 都支持回调函数。
Node.js 是单进程单线程应用程序,但是因为 V8 引擎提供的异步执行回调接口,通过这些接口可以处理大量的并发,所以性能非常高,基本上所有的事件机制都是用设计模式中观察者模式实现。
Node.js 单线程类似进入一个while(true)的事件循环,直到没有事件观察者退出,每个异步事件都生成一个事件观察者,如果有事件发生就调用该回调函数。
Node.js 使用事件驱动模型,当web server接收到请求,就把它关闭然后进行处理,然后去服务下一个web请求,多个内置的事件,可以通过引入 events 模块,并通过实例化 EventEmitter 类来绑定和监听事件。
Node.js 所有的异步 I/O 操作在完成时都会发送一个事件到事件队列,EventEmitter 的核心就是事件触发与事件监听器功能的封装。

addListener(event, listener) ----为指定事件添加一个监听器到监听器数组的尾部。
on(event, listener) ----为指定事件注册一个监听器,接受一个字符串 event 和一个回调函数
once(event, listener) ----为指定事件注册一个单次监听器,即 监听器最多只会触发一次,触发后立刻解除该监听器。
removeListener(event, listener) ----移除指定事件的某个监听器,监听器必须是该事件已经注册过的监听器。
emoveAllListeners([event]) ----移除所有事件的所有监听器, 如果指定事件,则移除指定事件的所有监听器。
setMaxListeners(n) ----默认情况下, EventEmitters 如果你添加的监听器超过 10 个就会输出警告信息。
setMaxListeners ----用于提高监听器的默认限制的数量。
listeners(event) ----返回指定事件的监听器数组。
emit(event, [arg1], [arg2], […]) ----按参数的顺序执行每个监听器,如果事件有注册监听返回 true,否则返回 false。
listenerCount(emitter, event) ----返回指定事件的监听器数量。

在 Node.js中,定义了一个 Buffer 类,该类用来创建一个专门存放二进制数据的缓存区。
Buffer 实例一般用于表示编码字符的序列,比如 UTF-8 、 UCS2 、 Base64 、或十六进制编码的数据。 通过使用显式的字符编码,就可以在 Buffer 实例与普通的 JavaScript 字符串之间进行相互转换。

Buffer 提供了以下 API 来创建 Buffer 类:
Buffer.alloc(size[, fill[, encoding]]): 返回一个指定大小的 Buffer 实例,如果没有设置 fill,则默认填满 0
Buffer.allocUnsafe(size): 返回一个指定大小的 Buffer 实例,但是它不会被初始化,所以它可能包含敏感的数据
Buffer.from(array): 返回一个被 array 的值初始化的新的 Buffer 实例(传入的 array 的元素只能是数字,不然就会自动被 0 覆盖)
Buffer.from(arrayBuffer[, byteOffset[, length]]): 返回一个新建的与给定的 ArrayBuffer 共享同一内存的 Buffer。
Buffer.from(buffer): 复制传入的 Buffer 实例的数据,并返回一个新的 Buffer 实例
Buffer.from(string[, encoding]): 返回一个被 string 的值初始化的新的 Buffer 实例

写入 Node 缓冲区的语法如下所示:

	buf.write(string[, offset[, length]][, encoding])

string - 写入缓冲区的字符串。
offset - 缓冲区开始写入的索引值,默认为 0 。
length - 写入的字节数,默认为 buffer.length
encoding - 使用的编码。默认为 ‘utf8’ 。

读取 Node 缓冲区数据的语法如下所示:

	buf.toString([encoding[, start[, end]]])

encoding - 使用的编码。默认为 ‘utf8’ 。
start - 指定开始读取的索引位置,默认为 0。
end - 结束位置,默认为缓冲区的末尾。

Node 缓冲区合并的语法如下所示:

	Buffer.concat(list[, totalLength])

list - 用于合并的 Buffer 对象数组列表。
totalLength - 指定合并后Buffer对象的总长度。

Node 缓冲区拷贝语法如下所示:

	buf.copy(targetBuffer[, targetStart[, sourceStart[, sourceEnd]]])

targetBuffer - 要拷贝的 Buffer 对象。
targetStart - 数字, 可选, 默认: 0
sourceStart - 数字, 可选, 默认: 0
sourceEnd - 数字, 可选, 默认: buffer.length

猜你喜欢

转载自blog.csdn.net/qq_39925376/article/details/88586756