前两天看了Node的一些基本的东西,最后仍是落到实处,看点实质性的东西。咱们来看一看Node中的全局对象。node
就如同浏览器中的window同样,在Node中把一些全局都可以访问的变量方法都放到了global中。咱们能够在node的REPL中输入global来看一看里面到底有些什么东西。linux
多的就不贴了,在global中咱们能够发现几个全局对象: console 、 process 、 global 等等。固然了在global中还有几个全局的函数: timer相关 、 Buffer 、 require。还有就是全局变量:__filename 、 __dirname。以及咱们能够看做是伪全局变量的module 、 exports 等等。面试
在浏览器中,咱们直接定义变量是挂在到window上的,可是在node中咱们直接定义的变量是在模块中定义的,是在global中拿不到的,若是你想试一试去拿那就直接global.a = 1;这样就能够从全局变量中拿到定义的变量了。算法
这个你们应该用的不少了,毕竟调试什么的console仍是很靠谱的东西。console.log()以及console.info()这两个应该是使用频率是最高的。还有两个是我在作算法测试的时候常常会用到的两个console,一个是console.time(label),一个是console.timeEnd(label),标签里是一对的,相同的label就会启动一个定时器与中止一个定时器并计时,这也是感受比较实用的一个console。数组
The process object is a global that provides information about, and control over, the current Node.js process. As a global, it is always available to Node.js applications without using require().浏览器
看一下文档里对process的描述,这是一个global对象,提供了一些当前进程的信息以及控制方法。并且这是一个global对象,在使用的时候不须要require。那么咱们能够看出来这个对象是用来看当前进程的信息和控制的做用的,知道是干吗的了,一切就很明了了。下面就来看看他有哪些变量和方法是经常使用的,至于process的事件就先不去看了。架构
首先,咱们来看第一个process.arch,从字面意思上就能够看出来这是描述处理器架构的,咱们能够在REPL里面试一试就知道了。app
第二个,process.argv,这是一个数组,里面包含了启动Node.js进程的命令行参数。咱们来本身写代码看一看:ide
因而乎咱们看到了这样的输出,咱们看看每一行输出的是什么,第一行是启动这个文件的命令,也就是node所在的地方,第二个就是当前执行的这个文件的路径,而后后面就是咱们跟上的参数。因此咱们也就知道了process.argv里面存的是什么了,数组前两项存的就是node的地址和执行文件的地址,在后面就是各类参数了。而process.argv0是存的Node.js启动时传入的argv[0]参数值的一份只读副本。
process.argv文档中也说了第一个参数就是process.execPath,因此咱们也可以很清晰的知道,这个参数表明着什么意思了。很少说,下面一个要看的是process.execArgv,这个属性返回的是在node命令后的特定命令行选项。函数
能够看到这个变量里存的就是node命令以后的一些特定命令行选项。
第三点,process.env,这里面保存了咱们用户环境信息,一些比较常见的好比说PATH、HOME等等,都是在这里面。
第四点,process.cwd(),返回 Node.js 进程当前工做的目录,是否是感受和__dirname有点像,实际上是有区别的,咱们来执行一条命令。
第五个,process.nextTick,这个打算和timer里的setImmediate一块儿看一看,作个比较,由于感受很像,这里就不细谈了。
今天大概总结了这么多,仍是要好好的消化一下,有不对之处,望提出,共勉进步,谢谢。
PS: 不行我以为我还要安利一波tmux,linux上用起来贼爽.....