這篇文章將為大家詳細講解有關(guān)Node.js有什么作用,小編覺得挺實用的,因此分享給大家做個參考,希望大家閱讀完這篇文章后可以有所收獲。
津南ssl適用于網(wǎng)站、小程序/APP、API接口等需要進行數(shù)據(jù)傳輸應(yīng)用場景,ssl證書未來市場廣闊!成為創(chuàng)新互聯(lián)建站的ssl證書銷售渠道,可以享受市場價格4-6折優(yōu)惠!如果有意向歡迎電話聯(lián)系或者加微信:13518219792(備注:SSL證書合作)期待與您的合作!
一、歡迎進入Node.js世界
1.DIRT(data-intensive real-time)表示數(shù)據(jù)密集型實時程序。因為Node自身在I/O上非常輕量,它善于將數(shù)據(jù)從一個管道混排或代理到另一個管道上,這能在處理大量請求時持有很多開放的鏈接,并且只占用一小部分內(nèi)存。它的設(shè)計目標(biāo)是保證響應(yīng)能力。
二、構(gòu)建有多個房間的聊天室程序
1.事件發(fā)射器:是跟某種資源相關(guān)聯(lián)的,它能向這個資源發(fā)送消息,也能從這個資源接收消息。資源可以連接遠程服務(wù)器,或者更抽象的東西,比如游戲中的角色
三、Node編程基礎(chǔ)
A.Node功能的組織及重用
1.Node模塊允許你從被引入文件中選擇要暴露給程序的函數(shù)和變量。如果模塊返回的函數(shù)或變量不止一個,那它可以通過設(shè)定exports對象的屬性來指明它們。但如果模塊只返回一個函數(shù)或變量,則可以設(shè)定module.exports屬性
2.require以你要用的模塊路徑為參數(shù),以同步的方式尋找它,定位到這個模塊并加載文件中的內(nèi)容,是Node中少數(shù)幾個同步I/O操作之一,不要在I/O密集的地方使用
3.module.exports可以對外提供單個變量、函數(shù)或者對象,如果創(chuàng)建了一個既有exports又有module.exports的模塊,那它會返回module.exports,而exports會被忽略
B.異步編程技術(shù)
1.兩種響應(yīng)編輯管理方式:回調(diào)和事件監(jiān)聽
回調(diào)通常用來定義一次性響應(yīng)的邏輯,它被當(dāng)做參數(shù)傳給異步函數(shù),描述了異步操作完成之后要做什么
事件監(jiān)聽器,本質(zhì)上也是一個回調(diào),不同的是,它跟一個概念實體(事件)相關(guān)聯(lián)。
2.一個Node HTTP服務(wù)器實例就是一個事件發(fā)射器,一個可以繼承、能夠添加事件發(fā)射及處理能力的類(EventEmitter)
3.回調(diào)時盡早從函數(shù)中返回。Node中大多數(shù)內(nèi)置模塊在使用回調(diào)時都會帶有兩個參數(shù):一個是用來放可能會發(fā)生的錯誤,另一個是放結(jié)果的
4.事件發(fā)射器會觸發(fā)事件,并且在那些事件被觸發(fā)時能處理它們。
5.在創(chuàng)建異步程序時,你必須密切關(guān)注程序的執(zhí)行流程:事件輪詢的條件、程序變量,以及其他隨著程序邏輯執(zhí)行而發(fā)生變化的資源
C.異步邏輯的順序化
1.讓一組異步任務(wù)順序執(zhí)行的概念被稱為流程控制。分為:
串行:需要一個接著一個做的任務(wù)
并行:不需要一個接著一個做的任務(wù)
四、構(gòu)建Node Web程序
A.HTTP服務(wù)器的基礎(chǔ)知識
1.在結(jié)束響應(yīng)之前 ,你可以在請求的生命期內(nèi)運行任何你想運行的異步邏輯。如果你沒能結(jié)束響應(yīng),請求會掛起,直到客戶端超時或一直處于打開狀態(tài)
B.構(gòu)建RESTful Web服務(wù)
1.Buffer.byteLength(),字節(jié)長度,Content-Length應(yīng)該是字節(jié)長度
C.提供靜態(tài)文件服務(wù)
1.*.pipe()管道
五、存儲Node程序中的數(shù)據(jù)
A.無服務(wù)器的數(shù)據(jù)存儲
1.內(nèi)存存儲:存放少量經(jīng)常使用的數(shù)據(jù)
2.基于文件的存儲:用文件系統(tǒng)存放數(shù)據(jù),有并發(fā)問題
六、Connect
1.Connect中有一個掛載的概念,可以給中間件或整個程序定義一個路徑前綴
2.構(gòu)建中間件時,你應(yīng)該關(guān)注那些小型的、可配置的部分。構(gòu)建大量微小的、模塊化的、可重用的中間件組件來搭成你的程序。保持中間件的小型化和專注性有助于將復(fù)雜的程序邏輯分解 成更小的組成部分
七、Connect自帶的中間件
1.解析cookie、請求主體和查詢字符串的中間件:cookieParser()bodyParser()、limit()、query()
2.實現(xiàn)Web程序核心功能的中間件:logger()、favicon()、methodOverride()、host()、session()
3.會話對象在各個請求間會被串行化為JSON對象:不允許循環(huán)屬性,不能用函數(shù)對象,Date對象無法正確串行化等
4.處理Web程序安全的中間件:basicAuth()、csrf()、errorHandler()
5.提供靜態(tài)文件服務(wù)的中間件:static()、compress()、directory()
*大部分已經(jīng)不是自帶的了,參考:
https://github.com/senchalabs/connect
https://github.com/expressjs/basic-auth-connect
八、Express
1.Node中的__dirname用來確定當(dāng)前運行的文件所在的目錄
2.*express全局命令安裝:sudo npm install -g express-generator(4.x以后)
九、Express進階
1.Node是單線程的,沒有線程本地存儲。對于HTTP服務(wù)器而言,請求和響應(yīng)變量是唯一的上下文對象
十、測試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保持運行,F(xiàn)orever工具:
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程序可以在不同的同價格上同時運行多個“工人”,讓單個程序使用多核實現(xiàn)起來更容易
十三、超越Web服務(wù)器
1.由于Node的異步天性,它很適合用來執(zhí)行那些在同步環(huán)境中比較困難或效率低下的I/O密集型任務(wù)
2.Socket.IO允許你用服務(wù)器和客戶端之間的雙向通訊通道編寫實時的Web程序。在基于瀏覽器的游戲、聊天程序和流媒體應(yīng)用中非常流行
3.Buffer是Node給開發(fā)者準備的特殊數(shù)據(jù)類型,它像是一塊長度固定的原始二進制數(shù)據(jù)板坯,可以把緩沖區(qū)看做數(shù)組,只是它們的大小是固定的,并且只能存放數(shù)字0到255,能處理原始字節(jié),所以可以用它們實現(xiàn)任何底層的協(xié)議
4.全局的process對象,包含當(dāng)前進程的相關(guān)信息,比如傳給它的參數(shù)和當(dāng)前設(shè)定的環(huán)境變量,每個Node進程都有一個單例的全局process對象,由所有模塊共享訪問
5.fs模塊,包含高層的ReadStream和WriteStream等,大部分Node文檔都指向了對應(yīng)man頁面中的C函數(shù)解釋上(擴展模塊:fstream模塊,filed模塊)
6.繁衍外部進程:
cp.exec(),在回調(diào)中繁衍命令并緩沖結(jié)果的高層API
cp.spawn(),將單例命令繁衍進Child-Process對象中的底層API
cp.fork(),用內(nèi)置的IPC通道繁衍額外Node進程的特殊方法
7.解析命令行參數(shù):process.argv
關(guān)于“Node.js有什么作用”這篇文章就分享到這里了,希望以上內(nèi)容可以對大家有一定的幫助,使各位可以學(xué)到更多知識,如果覺得文章不錯,請把它分享出去讓更多的人看到。
當(dāng)前文章:Node.js有什么作用
路徑分享:http://aaarwkj.com/article10/ipdpgo.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供App開發(fā)、面包屑導(dǎo)航、外貿(mào)建站、自適應(yīng)網(wǎng)站、云服務(wù)器、商城網(wǎng)站
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)