前兩天看了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上用起來賊爽.....