了不起的node.js讀書筆記之例程分析
這周的nodejs學(xué)習(xí)內(nèi)容為幾個(gè)依賴包的使用,把書上的例子都敲了一遍。這篇就以例程為線索,復(fù)習(xí)一下一周的工作。
1.connect
這個(gè)例程主要是使用connect依賴包,connect提供一個(gè)中間件(由函數(shù)組成,與請求、響應(yīng)對象交互)的功能。書中也介紹了connect內(nèi)置其他的中間件,這些中間件起到組織代碼完成web功能的作用。
2.session
使用connect進(jìn)行用戶會(huì)話,進(jìn)行基本的登錄系統(tǒng)。通過中間件實(shí)現(xiàn)了檢查登錄、展示表單、用戶匹配、處理登出的功能。展示了中間件的強(qiáng)大和組織方式。
3.express-tweet
這章學(xué)習(xí)了用express包,express基于connect。程序設(shè)計(jì)依舊簡單,不過版本不同的np中,函數(shù)名會(huì)產(chǎn)生一些變化,比如express.createServer()在3.0后就變成了express()。使用express最大的益處就是它簡潔又不失靈活。不過tweet訪問不到,而改寫成微博時(shí),weibo的API訪問又過于復(fù)雜,這個(gè)程序其實(shí)是沒有成功跑起來的。
4.echo
這兩個(gè)例程使用的是WebSocket包,echo的功能主要就是記錄消息傳輸?shù)臅r(shí)間。Websocket的調(diào)戲方式就ws來監(jiān)聽(on)一個(gè)事件,在回調(diào)函數(shù)中進(jìn)行處理,在html文件中也要使用js進(jìn)行消息的交互。
5.cursors
本例學(xué)習(xí)到了廣播,這個(gè)功能通過自己寫的一個(gè)broadcast函數(shù)來進(jìn)行處理。在確保光標(biāo)元素是否存在時(shí),是通過DOM的ID查找來完成的。
6.chat
這一章可以說是這本書的重頭戲,因?yàn)镾ocket.IO包就是作者開發(fā)的。它與WS的不同在與它的消息傳遞是基于傳輸而不全是WS。這個(gè)例程時(shí)先實(shí)現(xiàn)聊天功能,再實(shí)現(xiàn)廣播歌曲(DJ)功能。過程中也沒有遇到什么大問題。一個(gè)流程就是socket.emit一個(gè)事件,另一端socket就監(jiān)聽到這個(gè)事件,并對其進(jìn)行處理。
7.總結(jié)
這周效率還是蠻不錯(cuò)的,遇到的問題依然放在了evernote上。問題以前也出現(xiàn)過就是localhost與127.0.0.1的區(qū)別。這周在調(diào)試js過程中習(xí)得了一個(gè)函數(shù),可以讓js想php一樣dump一個(gè)對象來。現(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í)主要還是通過學(xué)習(xí)例程、閱讀源碼API來提高。畢竟node的優(yōu)點(diǎn)就是網(wǎng)絡(luò)上大片的np。
相關(guān)文章
Nuxt配合Node在實(shí)際生產(chǎn)中的應(yīng)用詳解
這篇文章主要介紹了Nuxt配合Node在實(shí)際生產(chǎn)中的應(yīng)用詳解,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧2018-08-08
使用node.js半年來總結(jié)的 10 條經(jīng)驗(yàn)
從3月初來到帝都某創(chuàng)業(yè)公司的服務(wù)器團(tuán)隊(duì)實(shí)習(xí),到現(xiàn)在已接近半年的時(shí)間。PS: 已轉(zhuǎn)正,服務(wù)器端用的 Node。2014-08-08
nodejs與瀏覽器中全局對象區(qū)別點(diǎn)總結(jié)
在本篇文章里小編給大家整理的是一篇關(guān)于nodejs與瀏覽器中全局對象區(qū)別點(diǎn)總結(jié)內(nèi)容,對此有需要的朋友們可以學(xué)習(xí)下。2021-12-12
Node.js報(bào)錯(cuò)信息Error:?Cannot?find?module?'XXX'問題及解
這篇文章主要介紹了Node.js報(bào)錯(cuò)信息Error:?Cannot?find?module?'XXX'問題及解決方案,具有很好的參考價(jià)值,希望對大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2023-10-10
Node中文件斷點(diǎn)續(xù)傳原理和方法總結(jié)
在之前做過一個(gè)小項(xiàng)目,涉及到了文件上傳,在大文件上面使用了斷點(diǎn)續(xù)傳,降低了服務(wù)器方面的壓力,現(xiàn)在小編把Node中文件斷點(diǎn)續(xù)傳原理和方法總結(jié)分享給大家,感興趣的朋友一起看看吧2022-01-01
10個(gè)Node.js庫幫助你優(yōu)化代碼和簡化開發(fā)
這篇文章主要介紹了10個(gè)Node.js庫幫助你優(yōu)化代碼和簡化開發(fā),其中包括處理數(shù)組、對象、字符串庫Lodash,緩存數(shù)據(jù)處理庫Node-cache,解析、操作和格式化日期和時(shí)間庫Moment.js,Redis操作庫,發(fā)送電子郵件庫Nodemailer2023-05-05

