將節點JavaScript與瀏覽器中的JavaScript進行比較
對於前端開發人員,掌握Node.js仍然是一項寶貴技能。儘管Deno為服務器端JavaScript提供了替代方案,但Node.js的廣泛生態系統確保其持續相關性。本文假設您熟悉基於瀏覽器的JavaScript,並希望使用node.js探索服務器端的開發。對於Node.js和NPM初學者,Jamie Corkhill在Smashing Magazine上的“入門”是一個很好的資源。
異步JavaScript:關鍵區別
瀏覽器JavaScript通常最少使用異步代碼(例如, fetch
API調用)。但是,Node.js幾乎總是需要異步編程。它的單線讀取事件循環依賴於異步回調,是其設計的基礎。這種異步至上的方法對Node.js的成功至關重要,但它為那些習慣於同步編碼的人提供了學習曲線。
構建測驗應用程序示例
讓我們構建一個簡單的測驗應用程序來說明node.js概念。 GitHub上提供了更完整的版本。該應用程序使用帶有表格,問題和答案表的SQLite數據庫。每個問題都有多個答案,其中只有一個是正確的。 Sqlite缺乏布爾類型;我們將0用於false,而為true 1。
首先,初始化NPM並安裝sqlite3
軟件包:
npm init -y NPM安裝sqlite3
將"type":"module"
添加到您的package.json
以啟用ES6模塊。創建migrate.js
來設置數據庫表:
// migrate.js 從“ sqlite3”導入sqlite3; 令db = new sqlite3.database(“ quiz.db”); db.serialize(function(){ // ...(數據庫架構創建和初始數據插入)... }); db.close();
該腳本可以創建表並使用示例數據填充它們。使用node migrate.js
運行它。
導航異步挑戰
讓我們查詢數據庫。在index.js
中,我們導入sqlite3
,創建一個數據庫對象,然後使用get
函數:
// index.js 從“ sqlite3”導入sqlite3; 令db = new sqlite3.database(“ quiz.db”); db.get(``select * seal * where quizid = 0`,(err,row)=> { 如果(err){ Console.Error(err.message); } console.log(row); db.close(); });
這將測驗數據打印到控制台。
避免回調陷阱
讓我們創建一個函數getQuiz(id)
以通過ID檢索測驗。僅由於異步執行而從回調中返回結果是不正確的:
//不正確 - 避免這種情況! 功能getquiz(id){ // ...(帶回調的數據庫查詢)... 返回結果; //結果將不確定! }
正確的方法使用回調來處理異步結果:
函數getquiz(id,回調){ // ...(數據庫查詢,用結果調用回調)... } getquiz(0,(quiz)=> { console.log(quiz); });
超越簡單回調:承諾和異步/等待
連鎖多個異步電話會導致“回調地獄”。承諾提供更清潔的解決方案:
函數獲取(params){ // ...(數據庫查詢包裹在承諾中)... } 獲取({表:“答案”,列:“ andersId”,value:2}) 。然後(...) 。然後(...) 。然後(...) 。抓住(...);
異步/等待進一步簡化異步代碼,使其類似於同步代碼:
異步函數printquizfromanswer(){ const答案=等待get({表:“答案”,列:“答案”,value:2}); // ...(類似地等待隨後的通話)... } printquizfromanswer();
頂級等待(最近的Node.js版本中可用)允許更簡潔的代碼。
通過SQL連接優化
為了提高效率,請使用SQL連接在單個查詢中檢索相關數據:
函數quizfromanswer(andersID,呼叫){ // ...(SQL加入查詢以獲取答案,問題和測驗數據)... }
這減少了數據庫調用的數量。
node.js apis和約定
Node.js引入了用於數據庫交互,文件系統訪問,HTTP服務器等的新API。了解Node.js約定,包括package.json
文件和錯誤優先回調,至關重要。 COMPORJS模塊和ES模塊之間的差異也需要注意。
服務器端的注意事項
Node.js服務器端開發需要仔細處理異常和安全漏洞,與客戶端JavaScript不同,錯誤通常會影響單個用戶。
結論
Node.js使前端開發人員充分利用其JavaScript技能進行服務器端開發。儘管異步性質呈現出學習曲線,但並發和龐大的生態系統的好處使其成為強大的工具。請記住要熟悉異步JavaScript概念,Node.js API和安全性最佳實踐。
以上是將節點JavaScript與瀏覽器中的JavaScript進行比較的詳細內容。更多資訊請關注PHP中文網其他相關文章!

熱AI工具

Undresser.AI Undress
人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover
用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

Video Face Swap
使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱門文章

熱工具

記事本++7.3.1
好用且免費的程式碼編輯器

SublimeText3漢化版
中文版,非常好用

禪工作室 13.0.1
強大的PHP整合開發環境

Dreamweaver CS6
視覺化網頁開發工具

SublimeText3 Mac版
神級程式碼編輯軟體(SublimeText3)

在本週的平台新聞綜述中,Chrome引入了一個用於加載的新屬性,Web開發人員的可訪問性規範以及BBC Move

有很多分析平台可幫助您跟踪網站上的訪問者和使用數據。也許最著名的是Google Analytics(廣泛使用)
