Node学习一:Node介绍及核心模块

NodeJs 介绍

Node.js 不是一门新的编程语言,也不是一个 JavaScript 框架,它是一套 基于V8引擎JavaScript运行环境,用来支持 JavaScript 代码的执行。

Node.js 之前,JavaScript 只能运行在浏览器中,有了 Node.js 以后,JavaScript 脱离了浏览器,像其它编程语言一样直接在计算机上使用,不受浏览器的限制。

关于V8引擎

V8引擎是Google发布的开源JavaScript引擎,是 Google Chrome 的核心。

为什么需要JavaScript引擎?

我们写的 JavaScript 代码直接交给浏览器或者 Node 执行时,底层的 CPU 是不认识的,也没法执行。CPU 只认识自己的指令集,指令集对应的是汇编代码。写汇编代码是一件很痛苦的事情。并且不同类型的 CPU 的指令集是不一样的,那就意味着需要给每一种 CPU 重写汇编代码。

JavaScript引擎 可以将 JS 代码编译为不同 CPU(Intel, ARM 以及 MIPS 等)对应的汇编代码,这样我们就不需要去翻阅每个 CPU 的指令集手册来编写汇编代码了。当然,JavaScript引擎的工作也不只是编译代码,它还要负责执行代码、分配内存以及垃圾回收。

参考文档:详解 Chrome V8 引擎

NodeJs 核心模块

assert 断言

如果表达式不符合预期,就抛出一个错误, 用来做一些异常捕捉。

Buffer 缓冲器

专门存放二进制数据的缓存区,用来做二进制数据流相关处理,主要应用在网络协议、操作数据库、处理图片、接收上传文件等。

Buffer 在全局范围内可用,但仍建议通过 importrequire 语句显式引用它。

events 事件触发器

它提供了一个属性 EventEmitter,EventEmitter 的核心是事件发射与事件监听器。

cluster 集群

node是单进程运行,对于32位系统最高可以使用512MB内存,对于64位最高可以使用1GB内存。对于多核 CPU 的计算机来说,这样的利用率很低。cluster 模块就是可以创建多个node进程集群,并且实现了进程之间的通信合作。

fs 文件系统

该模块提供了许多非常丰富并且实用的函数来访问文件系统,并与文件系统进行交互。

os 操作系统

该模块提供与操作系统相关的实用方法和属性

path

该模块提供用于处理文件和目录路径的实用程序

console, error

调试控制台和异常处理。

throw error, console.log, console.error。各种debug,调试时用到。

process 当前进程

获取当前node进程的相关信息。是一个global变量。有部分属性等价于os的属性。

child_process 子进程

注意跟process的区别。child_process 是node执行一条系统命令打开的子进程。相当于其他语言的 system, popen, exec等。直接执行一些shell脚本之类

stream 流

是node中处理流数据的一个抽象接口,主要用在传输大文件、视频、音频;通常是分段传输的。

比如在线看视频时,通过HTTP请求返回给用户视频内容。这里就会有两个比较明显的问题

1、视频文件需要全部读取完,才能返回给用户,这样等待时间会很长
2、视频文件一次全放入内存中,内存吃不消。

使用stream的方式就可以将视频文件一点一点读到内存中,再一点一点返回给用户

在node中许多模块都是 stream 的实现,比如 child_process 执行的返回结果,打开文件读取的字节流等等。

猜你喜欢

转载自blog.csdn.net/Kevin_xq/article/details/129271261
今日推荐