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 对象最常见的就是 log、dir、info 这些打印输出内容到控制台中,下面再补充两个方法:

  • 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​

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