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