1. 程式人生 > >Node.js簡介——基於Node.js搭建自動化測試環境

Node.js簡介——基於Node.js搭建自動化測試環境

有必要整理一下Node.js基礎知識啦!

                                                       哈哈哈

Node.js是什麼 

Node.js 是一個基於 Chrome V8 引擎的 JavaScript 執行環境。 
Node.js 使用了一個事件驅動、非阻塞式 I/O 的模型,使其輕量又高效。 

 Node.js不是JavaScript應用,也不是JavaScript庫或框架,而是一個執行環境。所謂執行環境,就是能解釋和執行JavaScript程式碼,之前我們JavaScript都是執行在瀏覽器中,瀏覽器負責解釋和執行JS程式碼,由於瀏覽器端的JS程式碼在執行時會受到各種各樣的安全性限制,它會放到一個安全沙箱裡,有很多功能不能用。對客戶系統的操作是有限的,JS的能力也隨之受到限制。

Node.js可以安裝在很多作業系統中,作為一個後端的JS執行環境,這意味著我們可以編寫系統級或者伺服器端的JS程式碼交給Node.js去解釋執行。這樣,我們能夠使用很多系統級的API(如檔案操作、網路程式設計),不受瀏覽器限制

Node.js基於Chrome V8引擎,有很好的效能V8引擎是使用C++開發的一個解釋引擎,是獨立於瀏覽器環境,可以獨立執行,也可以嵌入到C++應用程式中。為什麼我們總是說Chrome V8引擎呢,因為V8引擎一出生就被Chrome瀏覽器拿來使用。相對於其他的JS引擎(轉換成位元組碼來解釋執行)效能非常好。V8引擎會將JS程式碼編譯成原生的機器碼並且進行了一系列優化,使得JS執行速度要快很多,這個執行速度幾乎能媲美二進位制的程式

事件驅動:簡單理解就是點選按鈕就會觸發事件,觸發事件就會呼叫函式/方法。用事件的觸發來呼叫相關的函式/方法。JS本身存在很多依賴回撥函式的非同步程式設計,這就是典型的事件驅動

。比如Ajax請求中的成功或失敗需要執行的方法,並不依賴於在程式碼中出現的順序,而是需要等待相應的(成功或失敗)事件觸發了才會執行,我們並不知道這些事件何時觸發,我們也不需要知道,我們只需要知道在事件觸發之後需要執行哪個函式/方法就行。事件驅動的方式,充分利用了系統資源,不需要阻塞等待

非阻塞式 I/O :配合事件驅動,提高資源利用率和效能。Node.js提供的支援模組中,包括檔案操作在內的很多函式都是非同步執行。

舉例檔案讀取:若使用同步方式,找檔案、讀檔案的過程會一直掛起等待,資源會被一直佔有。而非阻塞式I/O的方式會告訴系統去讀取檔案,程式繼續執行其他事件,只需要讀完檔案時告訴程式(即觸發讀完事件),程式再接管呼叫讀完事件的回撥函式。

Node.js安裝

官網選擇對應安裝包下載,下一步下一步傻瓜式安裝。

 命令列工具,輸入node -v,判斷Node.js是否安裝成功,出現版本號就說明安裝成功啦。

 Node.js基礎使用

新建test.js檔案,同級目錄下新建readme.txt檔案(讀取檔案示例)

test.js檔案:

console.log('Node.js基本使用')
var fs = require('fs')
// 非同步
fs.readFile('readme.txt', 'utf-8', function (err, data) {
  if (err) {
    console.log('非同步', err)
  } else {
    console.log('非同步', data)
  }
})
// 同步
var data = fs.readFileSync('readme.txt', 'utf-8')
console.log('同步', data)

readme.txt檔案:

hello world!

命令列執行Node.js命令,輸出結果:

一般來說,不推薦使用同步的方法,非同步非阻塞的I/O才是Node.js的精髓

基於Node.js輕量級HTTP伺服器

基於Node.js輕量級HTTP伺服器有很多種,我們將以http-server為例(https://github.com/indexzero/http-server),一般提供server服務的工具建議全域性安裝。

npm install http-server -g

工具安裝好之後,我們只要執行命令就能啟動一個http服務啦,具體啟動命令請參考官方文件。

http-server [path] [options]

 啟動日誌如下:(在瀏覽器中訪問以下三個地址中的任意一個,就能看到src目錄下的index.html咯,案例是在src目錄下啟動的服務)若命令列工具在“\響應式”檔案中開啟,要想達到上述效果,執行命令時需要帶上[path]引數 http-server src

[options]引數可以指定埠、地址等等,例如指定服務在8888埠啟動,http-server src -p 8888

與君共勉:再牛逼的夢想,也抵不住傻逼般的堅持!