了不起的node.js讀書筆記之例程分析
這周的nodejs學(xué)習(xí)內(nèi)容為幾個(gè)依賴包的使用,把書上的例子都敲了一遍。這篇就以例程為線索,復(fù)習(xí)一下一周的工作。
1.connect
這個(gè)例程主要是使用connect依賴包,connect提供一個(gè)中間件(由函數(shù)組成,與請(qǐng)求、響應(yīng)對(duì)象交互)的功能。書中也介紹了connect內(nèi)置其他的中間件,這些中間件起到組織代碼完成web功能的作用。
2.session
使用connect進(jìn)行用戶會(huì)話,進(jìn)行基本的登錄系統(tǒng)。通過(guò)中間件實(shí)現(xiàn)了檢查登錄、展示表單、用戶匹配、處理登出的功能。展示了中間件的強(qiáng)大和組織方式。
3.express-tweet
這章學(xué)習(xí)了用express包,express基于connect。程序設(shè)計(jì)依舊簡(jiǎn)單,不過(guò)版本不同的np中,函數(shù)名會(huì)產(chǎn)生一些變化,比如express.createServer()在3.0后就變成了express()。使用express最大的益處就是它簡(jiǎn)潔又不失靈活。不過(guò)tweet訪問(wèn)不到,而改寫成微博時(shí),weibo的API訪問(wèn)又過(guò)于復(fù)雜,這個(gè)程序其實(shí)是沒有成功跑起來(lái)的。
4.echo
這兩個(gè)例程使用的是WebSocket包,echo的功能主要就是記錄消息傳輸?shù)臅r(shí)間。Websocket的調(diào)戲方式就ws來(lái)監(jiān)聽(on)一個(gè)事件,在回調(diào)函數(shù)中進(jìn)行處理,在html文件中也要使用js進(jìn)行消息的交互。
5.cursors
本例學(xué)習(xí)到了廣播,這個(gè)功能通過(guò)自己寫的一個(gè)broadcast函數(shù)來(lái)進(jìn)行處理。在確保光標(biāo)元素是否存在時(shí),是通過(guò)DOM的ID查找來(lái)完成的。
6.chat
這一章可以說(shuō)是這本書的重頭戲,因?yàn)镾ocket.IO包就是作者開發(fā)的。它與WS的不同在與它的消息傳遞是基于傳輸而不全是WS。這個(gè)例程時(shí)先實(shí)現(xiàn)聊天功能,再實(shí)現(xiàn)廣播歌曲(DJ)功能。過(guò)程中也沒有遇到什么大問(wèn)題。一個(gè)流程就是socket.emit一個(gè)事件,另一端socket就監(jiān)聽到這個(gè)事件,并對(duì)其進(jìn)行處理。
7.總結(jié)
這周效率還是蠻不錯(cuò)的,遇到的問(wèn)題依然放在了evernote上。問(wèn)題以前也出現(xiàn)過(guò)就是localhost與127.0.0.1的區(qū)別。這周在調(diào)試js過(guò)程中習(xí)得了一個(gè)函數(shù),可以讓js想php一樣dump一個(gè)對(duì)象來(lái)?,F(xiàn)在貼在下面分享。
function dump(arr,level) {
var dumped_text = "";
if(!level) level = 0;
//The padding given at the beginning of the line.
var level_padding = "";
for(var j=0;j<level+1;j++) level_padding += " ";
if(typeof(arr) == 'object') { //Array/Hashes/Objects
for(var item in arr) {
var value = arr[item];
if(typeof(value) == 'object') { //If it is an array,
dumped_text += level_padding + "'" + item + "' ...\n";
dumped_text += dump(value,level+1);
} else {
dumped_text += level_padding + "'" + item + "' => \"" + value + "\"\n";
}
}
} else { //Stings/Chars/Numbers etc.
dumped_text = "===>"+arr+"<===("+typeof(arr)+")";
}
return dumped_text;
}
下一周開始學(xué)mongoDB,node的學(xué)習(xí)主要還是通過(guò)學(xué)習(xí)例程、閱讀源碼API來(lái)提高。畢竟node的優(yōu)點(diǎn)就是網(wǎng)絡(luò)上大片的np。
相關(guān)文章
nodejs使用PassThrough流進(jìn)行數(shù)據(jù)傳遞合并示例詳解
這篇文章主要為大家介紹了nodejs使用PassThrough流進(jìn)行數(shù)據(jù)傳遞合并示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2023-09-09
輕松創(chuàng)建nodejs服務(wù)器(7):阻塞操作的實(shí)現(xiàn)
這篇文章主要介紹了輕松創(chuàng)建nodejs服務(wù)器(7):阻塞操作的實(shí)現(xiàn),本文先是組出了代碼,然后對(duì)代碼一一分析,需要的朋友可以參考下2014-12-12
Node.js如何自動(dòng)審核團(tuán)隊(duì)的代碼
在項(xiàng)目開發(fā)中,統(tǒng)一團(tuán)隊(duì)的代碼風(fēng)格很重要,本文介紹如何用Node.js來(lái)自動(dòng)審核,來(lái)提高您的開發(fā)速度。2016-07-07
npm install常見錯(cuò)誤類型及對(duì)應(yīng)的解決方案
在前端開發(fā)中,npm是最常用的包管理工具,通過(guò) npm install 命令,開發(fā)者可以輕松地安裝項(xiàng)目所需的依賴包,然而,在實(shí)際使用過(guò)程中,npm install 可能會(huì)因?yàn)楦鞣N原因而報(bào)錯(cuò),本文將詳細(xì)介紹一些常見的 npm install 錯(cuò)誤類型、發(fā)生原因及其對(duì)應(yīng)的解決方案,需要的朋友可以參考下2025-03-03
使用Nodejs連接mongodb數(shù)據(jù)庫(kù)的實(shí)現(xiàn)代碼
這篇文章主要介紹了使用Nodejs連接mongodb數(shù)據(jù)庫(kù)的實(shí)現(xiàn)代碼,需要的朋友可以參考下2017-08-08
nodejs基于mssql模塊連接sqlserver數(shù)據(jù)庫(kù)的簡(jiǎn)單封裝操作示例
這篇文章主要介紹了nodejs基于mssql模塊連接sqlserver數(shù)據(jù)庫(kù)的簡(jiǎn)單封裝操作,結(jié)合實(shí)例形式分析了nodejs中mssql模塊的安裝與操作sqlserver數(shù)據(jù)庫(kù)相關(guān)使用技巧,需要的朋友可以參考下2018-01-01

