node.js初探
node.js是一个JS的服务端运行环境,简单的来说,他是在JS语言规范的基础上,封装了一些服务端的运行时对象,让我们能够简单实现非常多的业务功能。
如果我们只使用JS的话,实际上只是能进行一些简单的逻辑运算。node.js就是基于JS语法增加与操作系统之间的交互。
举例来说,JS因为可以在浏览器环境运行,所以包含了Dom,Bom对象,以方便对浏览器进行操作。同样的,node.js是JS的服务端运行环境,因此内置了一些fs(文件系统)、path(路径系统)、http(http服务器)等常用模块,以方便与操作系统之间进行交互。
1、node.js的安装
我们可以使用多种方式来安装node.js,node.js本质上是一种软件,我们可以使用直接下载二进制安装文件安装,通过系统包管理进行安装或者通过源码自行编译均可。
一般来讲,对于个人开发的电脑,我们推荐直接通过node.js官网(http://nodejs.cn/download/)的二进制安装文件来安装。对于打包上线的一些node.js环境,也可以通过二进制编译的形式来安装。
安装成功之后,我们的node命令就会自动加入我们的系统环境变量path中,我们能直接在全局任意位置,使用node命令访问到我们刚才安装的node可执行命令行工具。
2、node.js版本切换
在个人电脑上,我们可以安装一些工具,对node.js版本进行切换,例如nvm和n。
nvm的全程就是node version manager,意思就是能够管理node版本的一个工具,它提供了一种直接通过shell执行的方式来进行安装。简单来说,就是通过将对各node版本安装在指定路径,然后通过nvm命令切换时,就会切换我们环境变量中node命令指定的实际执行的软件路径。
安装成功之后,我们就能在当前的操作系统中使用多个node.js版本。
3、node.js的包管理工具npm
我们对npm应该都比较熟悉了,它是node.js内置的一款工具,目的在于安装和发布符合node.js标准的模块,从而实现社区共建的目的繁荣整个社区。
npx是npm@5之后新增的一个命令,它使得我们可以在不安装模块到当前环境的前提下,使用一些cli功能。
4、node.js的底层依赖
node.js的主要依赖子模块有以下内容:
- V8引擎:主要是Js语法的解析,有了它才能识别JS语法。
- libuv:C语言实现的一个高性能异步非阻塞IO库,用来实现node.js的事件循环。
- http-parser/llhttp:底层处理HTTP请求,处理报文、解析请求包等内容。
- openssl:处理加密算法,各种框架运用广泛。
- zlib:处理压缩等内容。
5、node.js常见内置模块
node.js中最主要的内容,就是实现了一套CommonJs的模块化规范,以及内置了一些常见的模块。
- path:路径系统,能够处理路径之间的问题。
const path = require('path');
- fs:文件系统,能够读取写入当前安装系统环境中硬盘的数据。
- crypto:加密相关模块,能够以标准的加密方式对我们的内容进行加解密。
- dns:处理dns相关内容,例如我们可以设置dns服务器等等。
- readline:读入stdin的一行内容,可以读取、增加、删除我们命令行中的内容。
- os:操作系统层面的一些api,例如告诉你当前系统类型及一些参数
- vm:一个专门处理沙箱的虚拟机模块,底层主要来调用V8相关api进行的代码解析。