吃透前端工程化,大厂级实战项目以战带练

#1

download:【体系课】吃透前端工程化,大厂级实战项目以战带练

复制下崽ZY:http://www.51xuebc.com/thread-423-1-1.html

大家好呀,我是L同学。前面的一系列文章中,我介绍了很多关于js的知识。在接下来的几篇文章中,我将对node进行总结。

在本篇文章,我主要介绍如何给node程序传递参数以及node中常用的全局对象。

给node程序传递参数

正常情况下我们通过node xxx.js就可以执行我们执行我们的文件。在某些情况下我们希望给node传递一些参数。我们可以在文件名后面加上需要传递的参数。

node xxx.js age=18 haha
复制代码

image.png 我们可以在程序中通过 process 这个 内置对象 获取到传递的参数。

console.log(process);
复制代码

通过打印process这个内置对象,我们发现它里面包含了很多信息。

其中argv(argument vector)属性是一个 数组 ,包含了我们传递过来的参数。第一个元素是node的安装路径,第二个参数是我们所在文件的路径,第三和第四个参数正是我们传递的参数。

我们通过argv数组下标来获取传递的参数,还可以遍历这个数组的参数信息。

console.log(process.argv[2]);
console.log(process.argv[3]);

process.argv.forEach(item => {
  console.log(item);
})
复制代码

node的输出

console对象是一个 全局对象

  • console.log: 最常用的输出内容方式
  • console.clear: 清空控制台
  • console.trace: 打印函数的 调用栈 。可以知道某个函数被哪些调用。
console.log(process.argv[2]);
console.log(process.argv[3]);
console.clear()

process.argv.forEach(item => {
  console.log(item);
})
复制代码

我们可以看到当前控制台打印的是argv数组遍历的结果,前面process.argv[2]和process.argv[3]打印的结果已经被清空了。

image.png 通过console.trace()我们可以打印出函数的 调用栈

function foo() {
  bar()
}

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

foo()
复制代码

image.png

全局对象

特殊的全局对象

特殊的全局对象可以在模块中任意使用,但是不能在命令行交互中使用,包括__dirname、__filename、exports、module、require()。

  • __dirname:获取当前文件 所在的路径 ,是绝对路径, 不包括文件名
  • __filename:获取当前文件 所在路径和文件名
console.log(__dirname);
console.log(__filename);
复制代码

image.png

常用的全局对象

process对象

process对象提供了node 进程 中相关的信息,例如node的运行环境、参数信息等。当我们用node运行程序的时候,它会在操作系统里开启一个进程。

console对象

console对象上述已经介绍过。

定时器函数

  • setTimeout(callback, delay[, …args]):callback在delay毫秒后执行一次;
  • setInterval(callback, delay[, …args]):callback每delay毫秒重复执行一次;
  • setImmediate(callback[, …args]):callbackI / O事件后的回调的“立即”执行;
  • process.nextTick(callback[, …args]):添加到下一次tick队列中。
setTimeout(() => {
  console.log('setTimeout');
}, 0)

setInterval(() => {
console.log('setInterval');
}, 1000)

setImmediate(() => {
  console.log('setImmediate');
})

process.nextTick(() => {
  console.log('process.nextTick');
})