Node.js实战项目学习系列(4) node 对象(global、process进程、debug调试)
前言
在之前的课程我们学习了Node的模块化规则,接下来我们将学习下 Node的几个新特性:global ,process进程,debug调试
global
跟在浏览器中的window一样都是全局变量,我们先来熟悉些常用的全局变量
- Buffer(二进制数据处理)、process、console
- timer(setImmediate)
看一段简单的代码:
>>> 07_global.js
const NUM = 1000;
global.NUM = 2000; // 这里输出到全局
module.exports.num = NUM;
>>> 07_global_01.js
const mod = require('./07_global');
console.log(NUM); // 这里可以打印处全局的常量NUM
【setImmediate】
callback <Function> 在当前回合的 Node.js 事件循环结束时调用的函数。
09_setImmediate.js
setImmediate(()=>{
console.log('setImmediate');
});
console.log('之后输出');
结果:

我们可以看到,输入setImmediate写在了前面,但是还是先执行了后面的输出。具体牵涉到了Node的event Loop,会在后面进行详细讲解
process 进程
process 对象是一个全局变量,它提供有关当前 Node.js 进程的信息并对其进行控制。 作为一个全局变量,它始终可供 Node.js 应用程序使用,无需使用 require()。
【argv】
process.argv 属性返回一个数组,其中包含当启动 Node.js 进程时传入的命令行参数。
第二个元素将是正在执行的 JavaScript 文件的路径。
其余元素将是任何其他命令行参数。
const {argv} = process;
argv.forEach(item => {
console.log(item);
});
我们启动node打印出输出内容:

第一行输出的是启动的命令
第二行输出的是启动的文件路径
【添加参数】
执行命令:node 08_process_argv.js --test a=1 b=2
输出:

可以看到,我们可以看到,命令中的参数全部都打印出来了。
【env】
属性返回包含用户环境的对象
08_process_env.js
const { env } = process;
console.log(env);

【cwd】
process.cwd() 方法返回 Node.js 进程的当前工作目录。
08_process_cwd.js
console.log(`当前工作目录是: ${process.cwd()}`);

【nextTick】
process.nextTick() 方法将 callback 添加到下一个时间点的队列。 一旦当轮的事件循环全部完成,则调用下一个时间点的队列中的所有回调。
这个方法同setImmdiate相似。
08_process_nextTick.js
setImmediate(()=>{
console.log('setImmediate');
});
console.log('之后输出');
process.nextTick(()=>{
console.log('nextTick');
});
看下打印结果:

同步的先执行,其次是nextTick,然后是setImmediate
[注意]关于nextTick 与 setImmediate 之间的关系,会在之后进行详细讲解的,目前只需要简单的了解下即可
debug 调试
【inspector】
其实前面已经稍微提到了如何使用,这里再重复一遍
0、创建文件:10_debug.js
function t1(){
const a = parseInt( Math.random() * 10 );
const b = parseInt( Math.random() * 10 );
const c = t2(a,b);
}
function t2(a,b){
if(a>b){
a += a * 2;
}else{
b -= a;
}
return a + b;
}
t1();
1、命令行工具执行
node --inspect-brk 10_debug.js
2、使用chrome浏览器,地址栏输入
chrome://inspect

3、点击上面的红框处的inpect的进入调试界面

该调试界面跟我们平时调试浏览器上的代码一模一样,非常方便,功能也是非常强大,这里就不展开讲解了。
Node.js实战项目学习系列(4) node 对象(global、process进程、debug调试)的更多相关文章
- Node.js实战项目学习系列(5) node基础模块 path
前言 前面已经学习了很多跟Node相关的知识,譬如开发环境.CommonJs,那么从现在开始要正式学习node的基本模块了,开始node编程之旅了. path path 模块提供用于处理文件路径和目录 ...
- Node.js实战项目学习系列(1) 初识Node.js
前言 一直想好好学习node.js都是半途而废的状态,这次沉下心来,想好好的学习下node.js.打算写一个系列的文章大概10几篇文章,会一直以实际案例作为贯穿的学习. 什么是node Node.js ...
- Node.js实战项目学习系列(2) 开发环境和调试工具
前言 上一节让我们对Node.js有一个初步的了解,那么现在可以开始正式学习下Node.js的开发了,但是任何一门语言要设计到开发,就必须先学习开发环境以及调试.本文将主要讲解这些内容. 本文涉及到的 ...
- Node.js实战项目学习系列(3) CommonJS 模块化规范
前言 想开始编写Node.js代码,那么我们就必须先熟悉它的模块化规范CommonJS,本文将详细讲解CommonJS规范 本文代码 >>> github 地址 CommonJS N ...
- iKcamp团队制作|基于Koa2搭建Node.js实战项目教学(含视频)☞ 环境准备
安装搭建项目的开发环境 视频地址:https://www.cctalk.com/v/15114357764004 文章 Koa 起手 - 环境准备 由于 koa2 已经开始使用 async/await ...
- 前端(Node.js)(3)-- Node.js实战项目开发:“技术问答”
1.Web 与 Node.js 相关技术介绍 1.1.Web应用的基本组件 web应用的三大部分 brower(GUI)<==>webserver(business logic.data ...
- 开始连载啦~每周2更共11堂iKcamp课|基于Koa2搭建Node.js实战项目教学(含视频)| 课程大纲介绍
- Node.js实战10:“流”是Node.js最强大的功能之一。
流是Nodejs的高级应用,掌握流的使用,才能真正胜任NodeJS开发. Nodejs中,流是基于事件的API,用于管理和处理数据,而且效率很好! 什么是流? 流是一个抽象接口,Node 中有很多对象 ...
- Node.js 实战 & 最佳 Express 项目架构
Node.js 实战 & 最佳 Express 项目架构 Express Koa refs https://github.com/xgqfrms/learn-node.js-by-practi ...
随机推荐
- LeetCode算法题-Reverse Words in a String III(Java实现)
这是悦乐书的第259次更新,第272篇原创 01 看题和准备 今天介绍的是LeetCode算法题中Easy级别的第126题(顺位题号是557).给定一个字符串,您需要反转句子中每个单词中的字符顺序,同 ...
- Angular安装及创建第一个项目
Angular简介 AngularJS 诞生于2009年,由Misko Hevery 等人创建,后为Google所收购.是一款优秀的前端JS框架,已经被用于Google的多款产品当中.AngularJ ...
- Java开发学习心得(一):SSM环境搭建
目录 Java开发学习心得(一):SSM环境搭建 1 SSM框架 1.1 Spring Framework 1.2 Spring MVC Java开发学习心得(一):SSM环境搭建 有一点.NET的开 ...
- Windows Service 学习系列(二):C# windows服务:安装、卸载、启动和停止Windows Service几种方式
一.通过InstallUtil.exe安装.卸载.启动.停止Windows Service 方法一 1.以管理员身份运行cmd 2.安装windows服务 切换cd C:\Windows\Micros ...
- Idea+Maven创建scala项目
1.选择Create New Project 2.如下图选择,然后下一步 3.一直Next,填写groupID,artifactid,projectName之后等待IDEA初始化. 4.IDEA完成初 ...
- SkylineGlobe 7.0.1 & 7.0.2版本Web开发 如何实现对三维模型和地形的剖切展示
现在很多三维项目中,不仅仅要用到三维地形,正射影像和矢量数据,还会融合到各种三维模型,包括传统的3DMax手工建模,BIM,倾斜摄影自动建模,激光点云模型,三维地质体模型等等. 三维平台首先要做的是把 ...
- 错误:set Assigning an instance of 'esri.***' which is not a subclass of 'esri.***‘
1. 出现 set Assigning an instance of 'esri.***' which is not a subclass of 'esri.***‘的错误原因 是 因为没有找见 ...
- Day5 Numerical simulation of optical wave propagation之通过随机介质(如大气湍流)的传播(一)
一 分步光束传播方法 到目前为止,人们已经设计出传播算法,用于模拟通过真空和通过可用光线矩阵描述的简单光学系统的传播. 其中分步光束传播方法除了描述上述传播过程,还有更复杂的应用,包括:部分时间和空间 ...
- VUE实例方法添加、COOKIE、Token
创建COOKIE const COOKIE = { KEY_TOKEN: 'access_token', KEY_USER: 'nbuser', KEY_PERMISSION: 'nb-permiss ...
- 上海上传数据重复-sftp端口关闭
关键: (1) sftp的测试指令:sftp -oPort=2125 meituan@220.248.104.170 (2)让上海那边自己试了一下,也不行,他们自己重置了一下sftp的密码,我们可以登 ...