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
复制代码
我们可以在程序中通过 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]打印的结果已经被清空了。
通过console.trace()我们可以打印出函数的 调用栈 。
function foo() {
bar()
}
function bar() {
console.trace();
}
foo()
复制代码
全局对象
特殊的全局对象
特殊的全局对象可以在模块中任意使用,但是不能在命令行交互中使用,包括__dirname、__filename、exports、module、require()。
- __dirname:获取当前文件 所在的路径 ,是绝对路径, 不包括文件名 。
- __filename:获取当前文件 所在路径和文件名 。
console.log(__dirname);
console.log(__filename);
复制代码
常用的全局对象
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');
})