nodejs第三天(全局對象)

前兩天看了Node的一些基本的東西,最後仍是落到實處,看點實質性的東西。咱們來看一看Node中的全局對象。node

1、 global全局對象

  就如同瀏覽器中的window同樣,在Node中把一些全局都可以訪問的變量方法都放到了global中。咱們能夠在node的REPL中輸入global來看一看裏面到底有些什麼東西。linux

  多的就不貼了,在global中咱們能夠發現幾個全局對象: consoleprocessglobal 等等。固然了在global中還有幾個全局的函數: timer相關Bufferrequire。還有就是全局變量:__filename__dirname。以及咱們能夠看做是僞全局變量的moduleexports 等等。面試

  在瀏覽器中,咱們直接定義變量是掛在到window上的,可是在node中咱們直接定義的變量是在模塊中定義的,是在global中拿不到的,若是你想試一試去拿那就直接global.a = 1;這樣就能夠從全局變量中拿到定義的變量了。算法

2、 console

  這個你們應該用的不少了,畢竟調試什麼的console仍是很靠譜的東西。console.log()以及console.info()這兩個應該是使用頻率是最高的。還有兩個是我在作算法測試的時候常常會用到的兩個console,一個是console.time(label),一個是console.timeEnd(label),標籤裏是一對的,相同的label就會啓動一個定時器與中止一個定時器並計時,這也是感受比較實用的一個console。數組

3、 process

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

個人是X64的處理器架構
個人是X64的處理器架構

第二個,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有點像,實際上是有區別的,咱們來執行一條命令。


  __dirname返回的就是當前被執行模塊的文件夾路徑,而process.cwd()是node進程的工做目錄,你在不一樣的目錄執行就會獲得不一樣的結果,這其實也表現出了process的特色,和當前進程有關。

第五個,process.nextTick,這個打算和timer裏的setImmediate一塊兒看一看,作個比較,由於感受很像,這裏就不細談了。


  今天大概總結了這麼多,仍是要好好的消化一下,有不對之處,望提出,共勉進步,謝謝。

PS: 不行我以爲我還要安利一波tmux,linux上用起來賊爽.....

相關文章
相關標籤/搜索