nodejs和前端js有什么區別?
本人是前端開發工程師,偶爾也做后端(Node.js),來回答一下這個問題。
關于Node.jsNode.js是一個開源、跨平臺的JavaScript運行環境,用于在服務器端執行JavaScript代碼。
一直以來,JavaScript主要用于客戶端web頁面的腳本編程,由用戶瀏覽器的JavaScript引擎來執行。而Node.js則使得JavaScript可以被用于服務器端腳本編程,用于在服務器端生成動態的web內容。
Node.js的主要特征是使用事件驅動的非阻塞IO模型,輕量而高效。
借助Node.js,前端開發人員可以使用自己熟悉的編程語言(JavaScript)來完成后端開發,走向全棧開發(fullstack)。
關于Chrome V8V8是由谷歌(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等等)才是需要花費更多時間和精力去學習的東西。