系统模块
nodejs为了方便开发者的使用,已经封装好了很多供我们使用的模块,我们称之为系统模块;
重要的几个模块:
Crypto(加密) Events(事件) Net(网络操作)
OS(操作系统信息) Path(处理文件路径)
Timer(定时器) ZLIB(压缩)
此章节是对所有模块的粗略介绍:详细介绍在每个对应的链接中
1)Assertion Testing Stability:3 -Locked(代表该版本已经永远不会改变了,可以放心使用)
译为断言测试,可以辅助开发者进行测试。
我对断言的一个形象化理解:
我敢确定、一定以及肯定他是个好人。。。。。我用人头担保他是个坏蛋;就是说很确定,很确定某一件事情。
回归到程序上就是:
绝对不允许出现a情况,或必须应该出现b情况。只要出现了a情况,或者没有出现b情况,程序就挂了
2)Buffer Stability:2 -Stable(一般不会改了,也可以放心使用)
3)c/c++ Addons (c和c++的扩展)
首先nodejs使用JavaScript写的,v8 chorme引擎无论在怎么优化,JavaScript的性能也是不及编译性语言c/c++的;
该模块作用:可以把c引入nodejs中,这样开发者就可以把一些关键性模块和常用的函数用c写。这样就可以提高性能。
4)Child Process 子进程模块
5)Cluster 集群
前提:在一台机器上不是一个程序在跑二十十几个进程在跑。
该模块的作用:万一某个子进程死掉,不至于整个程序奔溃。
6)Crypto:加密
我们在将用户的密码存入数据库之前需要进行md5或sha等加密。
7)DNS 域名解析
作用:可以帮助我们直接解析一个域名。
dns.getServers()方法就可以帮助我们找到ip;
8)Errors 错误模块
nodejs可能抛出的各种错误RangeError,SyntaxError,System Error等。其中System Error是开发人员无法操作,无法处理的。
9)Events 事件,nodejs用来模拟事件的模块
10)FileSystem 可读,可写,可进行流式操作。
11)HTTP HTTPS 其中https是安全协议,需要申请证书。
12)Net 网络协议
例如:当你注册一个网址后,网址会自动给你发个邮件。如果让nodejs发送一封注册邮件,是无法用http协议的,因为邮件遵循的不是http协议,此时net模块就派上用场了。Net可以进行各种各样的网络操作。
13)OS 含有操作系统的相关信息
提供了各种跟操作系统相关的东西。你的操作系统是什么。
os.cpus():告诉你这台机器有几个cpu,分别是什么频率;
os.homedir():当前用户的home目录等;
14)Path 用来处理文件路径用的模块
可以返回目录部分;返回扩展名部分;返回文件名
15)Process 当前进程信息 可以和Cluster 和Child Process配合使用
16)QueryString
17)Readline 可以读取一行。(用户的输入或读取文件)
18)Stream 流操作
举例:当你想读取一个文件并返回给客户端时有两种方法:
方法一:全部读到内存里,全部读完,让再全部发出去;
方法二:读一点,发一点,读一点,发一点、、、
很显然第二种方法更好,可以使用Stream模块。
ReadFile模块就是第一种方法,该方法会占用大量服务器内存,很浪费。在磁盘工作时,网络空闲,网络工作时,磁盘空闲,利用率非常低。
19)Timers 定时器 和前端的定时器类似
后端也是经常用到定时器的。
如:服务器可能每隔5分钟清理一次垃圾文件。
每隔一分钟更换一次服务器相关的密钥,防止他人攻击。
20)TLS/SSL 加密传输
21)TTY 直接可以连接到linux上,可以连接到远端的命令行。
22)ZLIB 可以用来进行压缩的模块。
当我们访问网站时,不是把原样的东西给你,而是返回的是压缩过的。
ZLIB作用:
可以把老的文件,或用户上传的文件压缩后在存储,这样可以极大的节约服务器空间。
把内容发该客户端之前,先压缩一下在发送。
注意:在调试工具中,可以看到是用什么压缩的
Content-Encoding:gzip