前端開發者如何跨入Node.js?
到iT邦幫忙

chetbaker(iT邦初學者8級):
雖然大家都說Node.js是用JavaScript在Server上開發,所以前端開發者也可以開發後端程式了。但是前、後端程式的開發知識差別很大,所以想知道前端如果要開發後端程式,需要強化的知識是哪些?

clonn(iT邦初學者10級):
首先,Node.js是以Google V8 engine為核心編譯引擎,所以開發人員所寫的程式都以JavaScript為主,JavaScript對於前端開發人員或者是Web developer,或多或少都有一定的熟悉度。

不過在Node.js的程式編寫當中,要有一個概念,就是所編寫的程式邏輯沒有包含DOM和Browser物件,因此會著墨於事件控制,這也是Node.js採取JavaScript的優勢,利用事件控制,讓每個執行流程免於阻塞,只有當事件觸發時才會被執行,在概念上與其他的線性執行會不大相同。

Node.js學習的開始,建議從基本環境建置,還有JavaScript程式邏輯方面著手,因為Node.js的架構是基於CommonJS標準,剛開始接觸的時候需要花些時間將概念釐清,將Web前端概念抽離,最簡單的方式,是可以從範例程式碼當中,了解不同模組(module)的引用(require),還有事件呼叫、觸發等。

fillano(iT邦大師4級):
對於JavaScript這個程式語言,你必須有一個認知:在最初的設計中,它就是一個依賴於Host環境的語言。JavaScript核心提供少數核心物件可以讓你使用(Object、Array、Math、Date ...etc.),至於Host提供的環境,會透過Global提供給使用者,所以在進入JavaScript的執行環境中時,已經有一些預先定義好的Global變數可以取用。

在網頁環境中,這個Global就是Window物件,在Node.js時他就叫,Global。在不同環境中使用JavaScript來開發,都需要知道Host環境提供什麼東西,這些會透過Global變數來取用等等。

對於撰寫Node.js來說,至少還需要知道的是:require()函數,Node.js有許多功能是需要用這個函數來加入到你的使用環境中,這樣Global中只要保留最少的物件,就可以使用了。

Node.js提供的功能,有許多都是非同步的,你必須提供一個callback函數給它,然後它會在執行完時呼叫並提供執行結果。這個使用方式應該不陌生,在瀏覽器環境中,各種事件都是用這個方式來執行。但是在Node.js中,有時候會有複雜而交錯的callback,所以你可能需要用一些方式來組織。

jacksctsai(iT邦初學者10級):
前端跟後端做的事情是互補的。前端的開發以使用者介面為主,後端做的事情大多與資料庫存取及訊息交換有關。同一件事情,兩者的處理邏輯不太相同。

例如使用者登入系統,對前端來說,需要提供表單讓使用者輸入資訊,進行必要的資料檢查後,把資料送到後端進行驗證。最後再把驗證結果及相關訊息呈現在畫面上。

對後端而言,要做的事則是會收到使用者的登入要求(Request),把帳號及密碼資訊與資料庫中的資料進行驗證,再把驗證結果及相關資訊(例如:帳戶被鎖定而無法登入)傳回瀏覽器。

所以從前端要切入後端開發,我覺得有幾個重點:

1. 了解HTTP基礎架構
HTTP的基礎架構上,主要是了解後端處理要求的基本邏輯。

包括像:Request Method、Response Code、Session、Cookie 等了解一下。

2. 資料庫
以往資料庫開發以MySQL或SQL Server關連式資料庫為主,技術門檻較高。NoSQL資料庫日益流行,也有許多大型網站採用,例如:MongoDB。由於是直接使用 JSON 格式存取資料,對於 JavaScript 開發者而言非常容易上手。

3. Web Framework
後端的處理可以直接套用現有的架構,會加速開發的速度。建議可以從 Express.js開始接觸,網路上相關的資訊比較多。這部分另外還包含Template技術,比較流行的像是EJS或Jade,主要用來產生動態網頁,算是基本功能。

最後補充一點,由於後端的環境不像前端是以瀏覽器為主,環境相對單純,但其功能也受到一些限制。後端的環境,基本上是可以讓你完全自由發揮的,網路上有數千個套件可以運用。初學者可以先選一些基本的來熟悉,等到比較熟之後,再去試試不同的套件。

熱門新聞

Advertisement