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本身存在很多依賴回撥函式的非同步程式設計,這就是典型的事件驅動
非阻塞式 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
與君共勉:再牛逼的夢想,也抵不住傻逼般的堅持!