區別:1、nodejs是一種JS運行環境,而WebSocket是一種通訊協定;2、nodejs用於方便地建立響應速度快、易於擴展的網路應用,而WebSocket可使得客戶端和伺服器之間的資料交換變得更加簡單,允許服務端主動向客戶端推送資料。
本教學操作環境:windows7系統、nodejs 12.19.0版,DELL G3電腦。
nodejs是什麼
Node是一個基於Chrome V8引擎的JavaScript運行環境,一個讓JavaScript運行在服務端的開發平台,用於方便地建置響應速度快、易於擴展的網路應用。 Node 使用事件驅動, 非阻塞I/O 模型而得以輕量且高效,非常適合在分散式裝置上運行資料密集的即時應用。
Node採用了一個稱為「事件循環(event loop)」的架構,使得編寫可擴展性高的伺服器變得既容易又安全。提高伺服器效能的技巧有多種多樣。 Node選擇了一個既能提高效能,又能降低開發複雜度的架構。這是一個非常重要的特性。並發編程通常很複雜且佈滿地雷。 Node繞過了這些,但仍提供很好的效能。
Node採用一系列「非阻塞」函式庫來支援事件循環的方式。本質上就是為檔案系統、資料庫之類的資源提供介面。向檔案系統發送請求時,無需等待硬碟(尋址並檢索檔案),硬碟準備好的時候非阻塞介面會通知Node。該模型以可擴展的方式簡化了對慢資源的訪問, 直觀,易懂。尤其是對於熟悉onmouseover、onclick等DOM事件的用戶,更有一種似曾相識的感覺。
雖然讓Javascript運行於伺服器端不是Node的獨特之處,但卻是其一強大功能。不得不承認,瀏覽器環境限制了我們選擇程式語言的自由。任何伺服器與日益複雜的瀏覽器客戶端應用程式間共享程式碼的願望只能透過Javascript來實現。雖然還有其他一些支援Javascript在伺服器端 運作的平台,但因為上述特性,Node發展迅猛,成為事實上的平台。
15個Nodejs應用程式場景
我們已經對Nodejs有了初步的了解,接下來看看Nodejs的應用程式場景。
1 Web開發:Express EJS Mongoose/MySQL
express 是一個輕量且靈活的Nodejs Web應用程式框架,它可以快速地建立網站。 Express框架建立在Nodejs內建的Http模組上,並對Http模組再包裝,從而實際Web請求處理的功能。
ejs是一個嵌入的Javascript模板引擎,透過編譯產生HTML的程式碼。
mongoose 是MongoDB的物件模型工具,透過Mongoose框架,可以進行存取MongoDB的操作。
mysql 是連接MySQL資料庫的通訊API,可以進行存取MySQL的操作。
通常用Nodejs做Web開發,需要3個框架配合使用,就像Java中的SSH。
2 REST開發:Restify
restify 是一個基於Nodejs的REST應用程式框架,支援伺服器端和客戶端。 restify比起express更專注於REST服務,去掉了express中的template, render等功能,同時強化了REST協議使用,版本化支持,HTTP的異常處理。
3 Web聊天室(IM):Express http://Socket.io
socket.io一個是基於Nodejs架構體系的,支援websocket的協定用於時時通訊的一個軟體包。 socket.io 為跨瀏覽器建置即時應用提供了完整的封裝,socket.io完全由javascript實作。
4 Web爬蟲:Cheerio/Request
cheerio 是為伺服器特別客製化的,快速、靈活、封裝jQuery核心功能工具包。 Cheerio包括了 jQuery核心的子集,從jQuery庫中去除了所有DOM不一致性和瀏覽器不相容的部分,揭示了它真正優雅的API。 Cheerio工作在一個非常簡 單,一致的DOM模型之上,解析、操作、渲染都變得難以置信的高效。基礎的端對端的基準測試顯示Cheerio大約比JSDOM快八倍(8x)。 Cheerio封裝了@FB55相容的htmlparser,幾乎能夠解析任何的 HTML 和 XML document。
5 Web部落格:Hexo
Hexo 是一個簡單地、輕量地、基於Node的一個靜態部落格框架。透過Hexo我們可以快速創建自己的博客,只需要幾個命令就可以完成。
發佈時,Hexo可以部署在自己的Node伺服器上面,也可以部署github上面。對於個人用戶來說,部署在github上好處頗多,不僅可以省 去伺服器的成本,還可以減少各種系統運維的麻煩事(系統管理、備份、網路)。所以,基於github的個人站點,正在開始流行起來….
6 Web論壇: nodeclub
Node Club 是用Node.js 和MongoDB 開發的新型社區軟體,介面優雅,功能豐富,小巧迅速, 已在Node.js 中文技術社群CNode 得到應用,但你完全可以用它搭建自己的社群。
7 Web幻燈片:Cleaver
Cleaver 可以產生基於Markdown的簡報。如果你已經有了一個Markdown的文檔,30秒就可以製作成投影片。 Cleaver是為Hacker準備的工具。
8 前端套件管理平台: bower.js
Bower 是twitter 推出的一款套件管理工具,基於nodejs的模組化思想,把功能分散到各個模組中,讓模組和模組之間存在聯繫,透過Bower 來管理模組間的這種聯繫。
9 OAuth認證:Passport
Passport項目 目是基於Nodejs的認證中間件。 Passport目的只是為了“登陸認證”,因此,程式碼乾淨,易於維護,可以輕鬆整合到其他的應用中。 Web應用 一般有2種登陸認證的形式:使用者名稱和密碼認證登陸,OAuth認證登陸。 Passport可以根據應用程式的特點,配置不同的認證機制。本文將介紹,使用者 名和密碼的認證登陸。
10 定時任務工具: later
Later 是一個基於Nodejs的工具庫,用最簡單的方式執行定時任務。 Later可以運行在Node和瀏覽器中。
11 瀏覽器環境工具: browserify
Browserify 的出現可以讓Nodejs模組跑在瀏覽器中,用require()的語法格式來組織前端的程式碼,載入npm的模組。在瀏覽器中,呼叫browserify編譯後的程式碼,同樣寫在