您好,登錄后才能下訂單哦!
這篇文章將為大家詳細講解有關Node.js有什么作用,小編覺得挺實用的,因此分享給大家做個參考,希望大家閱讀完這篇文章后可以有所收獲。
一、歡迎進入Node.js世界
1.DIRT(data-intensive real-time)表示數據密集型實時程序。因為Node自身在I/O上非常輕量,它善于將數據從一個管道混排或代理到另一個管道上,這能在處理大量請求時持有很多開放的鏈接,并且只占用一小部分內存。它的設計目標是保證響應能力。
二、構建有多個房間的聊天室程序
1.事件發射器:是跟某種資源相關聯的,它能向這個資源發送消息,也能從這個資源接收消息。資源可以連接遠程服務器,或者更抽象的東西,比如游戲中的角色
三、Node編程基礎
A.Node功能的組織及重用
1.Node模塊允許你從被引入文件中選擇要暴露給程序的函數和變量。如果模塊返回的函數或變量不止一個,那它可以通過設定exports對象的屬性來指明它們。但如果模塊只返回一個函數或變量,則可以設定module.exports屬性
2.require以你要用的模塊路徑為參數,以同步的方式尋找它,定位到這個模塊并加載文件中的內容,是Node中少數幾個同步I/O操作之一,不要在I/O密集的地方使用
3.module.exports可以對外提供單個變量、函數或者對象,如果創建了一個既有exports又有module.exports的模塊,那它會返回module.exports,而exports會被忽略
B.異步編程技術
1.兩種響應編輯管理方式:回調和事件監聽
回調通常用來定義一次性響應的邏輯,它被當做參數傳給異步函數,描述了異步操作完成之后要做什么
事件監聽器,本質上也是一個回調,不同的是,它跟一個概念實體(事件)相關聯。
2.一個Node HTTP服務器實例就是一個事件發射器,一個可以繼承、能夠添加事件發射及處理能力的類(EventEmitter)
3.回調時盡早從函數中返回。Node中大多數內置模塊在使用回調時都會帶有兩個參數:一個是用來放可能會發生的錯誤,另一個是放結果的
4.事件發射器會觸發事件,并且在那些事件被觸發時能處理它們。
5.在創建異步程序時,你必須密切關注程序的執行流程:事件輪詢的條件、程序變量,以及其他隨著程序邏輯執行而發生變化的資源
C.異步邏輯的順序化
1.讓一組異步任務順序執行的概念被稱為流程控制。分為:
串行:需要一個接著一個做的任務
并行:不需要一個接著一個做的任務
四、構建Node Web程序
A.HTTP服務器的基礎知識
1.在結束響應之前 ,你可以在請求的生命期內運行任何你想運行的異步邏輯。如果你沒能結束響應,請求會掛起,直到客戶端超時或一直處于打開狀態
B.構建RESTful Web服務
1.Buffer.byteLength(),字節長度,Content-Length應該是字節長度
C.提供靜態文件服務
1.*.pipe()管道
五、存儲Node程序中的數據
A.無服務器的數據存儲
1.內存存儲:存放少量經常使用的數據
2.基于文件的存儲:用文件系統存放數據,有并發問題
六、Connect
1.Connect中有一個掛載的概念,可以給中間件或整個程序定義一個路徑前綴
2.構建中間件時,你應該關注那些小型的、可配置的部分。構建大量微小的、模塊化的、可重用的中間件組件來搭成你的程序。保持中間件的小型化和專注性有助于將復雜的程序邏輯分解 成更小的組成部分
七、Connect自帶的中間件
1.解析cookie、請求主體和查詢字符串的中間件:cookieParser()bodyParser()、limit()、query()
2.實現Web程序核心功能的中間件:logger()、favicon()、methodOverride()、host()、session()
3.會話對象在各個請求間會被串行化為JSON對象:不允許循環屬性,不能用函數對象,Date對象無法正確串行化等
4.處理Web程序安全的中間件:basicAuth()、csrf()、errorHandler()
5.提供靜態文件服務的中間件:static()、compress()、directory()
*大部分已經不是自帶的了,參考:
https://github.com/senchalabs/connect
https://github.com/expressjs/basic-auth-connect
八、Express
1.Node中的__dirname用來確定當前運行的文件所在的目錄
2.*express全局命令安裝:sudo npm install -g express-generator(4.x以后)
九、Express進階
1.Node是單線程的,沒有線程本地存儲。對于HTTP服務器而言,請求和響應變量是唯一的上下文對象
十、測試Node程序
1.單元測試:
TDD:Mocha、nodeunit、assert模塊
BDD:Mocha、Vows、should.js
2.驗收測試也被稱為功能測試,它測試程序的輸出而不是邏輯,可以再提供一層防護,找出可能被單元測試漏掉的bug,包括Tobi、Soda
十一、Web程序模板
1.ejs:https://github.com/tj/ejs,nom install ejs
2.Hogan
3.jade
十二、部署Node程序并維持正常運行時間
1.讓Node保持運行,Forever工具:
sudo node install -g forever
forever start/stop server.js
2.Upstart工具,重啟崩潰程序,記錄日志等
sudo apt-get install upstart
sudo yum install upstart
sudo service xxxxx.conf (upstart配置文件)
3.Node增加了集群API,借助這個API程序可以在不同的同價格上同時運行多個“工人”,讓單個程序使用多核實現起來更容易
十三、超越Web服務器
1.由于Node的異步天性,它很適合用來執行那些在同步環境中比較困難或效率低下的I/O密集型任務
2.Socket.IO允許你用服務器和客戶端之間的雙向通訊通道編寫實時的Web程序。在基于瀏覽器的游戲、聊天程序和流媒體應用中非常流行
3.Buffer是Node給開發者準備的特殊數據類型,它像是一塊長度固定的原始二進制數據板坯,可以把緩沖區看做數組,只是它們的大小是固定的,并且只能存放數字0到255,能處理原始字節,所以可以用它們實現任何底層的協議
4.全局的process對象,包含當前進程的相關信息,比如傳給它的參數和當前設定的環境變量,每個Node進程都有一個單例的全局process對象,由所有模塊共享訪問
5.fs模塊,包含高層的ReadStream和WriteStream等,大部分Node文檔都指向了對應man頁面中的C函數解釋上(擴展模塊:fstream模塊,filed模塊)
6.繁衍外部進程:
cp.exec(),在回調中繁衍命令并緩沖結果的高層API
cp.spawn(),將單例命令繁衍進Child-Process對象中的底層API
cp.fork(),用內置的IPC通道繁衍額外Node進程的特殊方法
7.解析命令行參數:process.argv
關于“Node.js有什么作用”這篇文章就分享到這里了,希望以上內容可以對大家有一定的幫助,使各位可以學到更多知識,如果覺得文章不錯,請把它分享出去讓更多的人看到。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。