Skip to main content

基础概念

使用 n 来进行 node 版本管理

$ npm i n -g # 安装
$ n lts # 安装最新版本 node
$ n # 切换 node 版本

在命令行输入 n 然后有可视化界面。

使用 Node 执行 JS 脚本

当我们想要使用 Node 执行 JavaScirpt 脚本时,只需要:

$ node [脚本路径]

比如:

$ node ./index.js

携带参数

如果想在执行上面的命令行时,顺带传入一些参数:

$ node [脚本路径] [参数]

比如:

$ node ./index.js yukee798 env=123

在脚本中获取参数

当我们在脚本中打印如下内容:

console.log(process.argv)

输出:

[
'/Users/yukee-798/.nvm/versions/node/v15.11.0/bin/node',
'/Users/yukee-798/Downloads/daily/amain/Yukee-798.github.io/node.js',
'yukee798',
'env=123'
]

可以发现 process.argv 是一个数组,第一个元素默认是 node 命令行的绝对路径,第二个元素默认为执行脚本的绝对路径。

从第三个元素开始,就是我们执行 node 命令时,后面传递的参数,都是字符串类型。

常见的全局对象

global

该对象上挂载了大量的其他全局对象,基本上所有的全局对象都能通过 global 访问。

pic

process

该对象提供了 node 进程中的一些信息,当我们通过 node 命令行执行一段 JS 代码时就会开启一个 node 进程,我们就可以使用该对象来获取比如 node 环境、参数信息、CPU ... 等。

console

console 对象最常见的就是 logdirinfo 这些打印输出内容到控制台中,下面再补充两个方法:

  • console.clear()
  • console.trace()

console.clear()

作用就是清除执行该方法之前控制台中输出的内容。

console.trace()

作用是打印执行该方法时的调用栈。

function foo() {
console.trace();
}

function bar() {
foo();
}
bar();

image-20211224190620578

setTimeout 与 setInterval

用法和 JS 中的一致。

setImmediate 与 process.nextTick

涉及到事件循环,放到后面讲。

特殊的全局对象

这里之所以说它们是特殊的全局对象,因为它们其实算不上是全局对象,只是在所有模块中都存在这样的对象,但是对象的内容并不一致,并且它们在 node 命令行交互中是不可以被直接被访问到的。

比如,你在终端输入 node,然后访问 __dirname,是没法找到这个对象的。

__dirname

表示当前模块所在的文件夹的绝对路径。

__filename

比起 __dirname 路径后面多了当前模块的名称。

exports、module、require

用于模块化,之后会讲到。