本人是前端開發工程師,偶爾也做後端(Node.js),來回答一下這個問題。


關於Node.js

Node.js是一個開源、跨平臺的JavaScript運行環境,用於在伺服器端執行JavaScript代碼。

一直以來,JavaScript主要用於客戶端web頁面的腳本編程,由用戶瀏覽器的JavaScript引擎來執行。而Node.js則使得JavaScript可以被用於伺服器端腳本編程,用於在伺服器端生成動態的web內容。

Node.js的主要特徵是使用事件驅動的非阻塞IO模型,輕量而高效。

藉助Node.js,前端開發人員可以使用自己熟悉的編程語言(JavaScript)來完成後端開發,走向全棧開發(fullstack)。

關於Chrome V8

V8是由谷歌(Google)於2008年為其Chrome瀏覽器打造的開源JavaScript執行引擎。Node.js正是基於V8來構建的,性能卓越,且對最新的ES6語法提供非常完善的支持。因為使用與前端瀏覽器相同的JavaScript執行引擎,使得JavaScript前後端語法幾乎完全一致(雖然因為兼容性問題,前端的ES6代碼往往會經由Babel編譯為ES5再發送到前端執行)。

後端開發與前端開發的差異

可以肯定的是,Node.js使得前端工程師轉向後端的門檻大大降低,反正亦然,從而造就全棧開發的潮流,但是後端開發所使用的技術,以及面臨的主要挑戰是有很大不同的。

  • 前端JavaScript主要任務是從伺服器端獲取數據,並綜合使用HTML、CSS將數據以可視化的方式呈現給用戶,並處理用戶交互。前端高度依賴於DOM API (直接或間接地),所面臨的挑戰往往是複雜的UI交互、瀏覽器兼容性問題等等。

  • 後端JavaScript主要是處理來自前端的HTTP請求,從資料庫獲取相應的數據,執行增刪改查,或者調用其它的相關服務(網路、操作系統等等),所面臨的挑戰往往是安全性、性能、高並發、高可用性、橫向擴展等等。

結論

綜上所述,掌握了前端JS語法只是使用Node.js的前提條件。Node.js提供的框架(網路、系統調用、文件系統、進程、加密、HTTP/2等等)以及其生態系統(Express、KOA、Sequelize等等)纔是需要花費更多時間和精力去學習的東西。


推薦閱讀:
相關文章