學習mongo+express搭建博客和原生nodejs

express+mongo搭建博客完成用戶注冊、登錄、登出,發(fā)表文章,上傳圖片等功能
保存登錄狀態(tài):使用express-session中間件來保存user,req.session.user = user,登出之后直接對req.session.user設(shè)為null

校驗登錄:某些操作比如發(fā)表文章需要在用戶登錄之后才能進行,為了避免用戶沒有登錄直接進入相應地址進行操作,所以在進入相應地址之前進行登錄判斷,通過對req.session.user的判斷然后進行跳轉(zhuǎn)到login頁面或者移交控制權(quán)next()

上傳圖片:引入multer模塊,然后設(shè)置destination輸出路徑和filename 輸出文件名,之后我們使用form表單來提交inputfile文件,form屬性中需要加入enctype="multipart/form-data",表單中enctype="multipart/form-data"的意思,是設(shè)置表單的MIME編碼。默認情況,這個編碼格式是application/x-www-form-urlencoded,不能用于文件上傳;只有使用了multipart/form-data,才能完整的傳遞文件數(shù)據(jù),進行下面的操作. enctype="multipart/form-data"是上傳二進制數(shù)據(jù); form里面的input的值以2進制的方式傳過去

文章模塊:Post構(gòu)造函數(shù)屬性為:title,name(用戶名),head(頭像),post(內(nèi)容),存入數(shù)據(jù)庫的object額外添加time,comments,pv,reprint_info,pv通過查詢時對pv數(shù)值+1來實現(xiàn),reprint_info轉(zhuǎn)載時通過設(shè)置reprint_to,reprint_from來保存文章來源以及被別人使用情況,當用戶轉(zhuǎn)載文章時通過查詢相應文章然后以新文章錄入到數(shù)據(jù)庫中,并根據(jù)使用者信息和作者信息對轉(zhuǎn)載文章以及原文的數(shù)據(jù)進行更新

https知識:
之前在別人郵箱中看到全站https升級,了解下為什么要升級到https,什么是https
http的不足之處:通信使用明文,內(nèi)容可能會被竊聽;不驗證通信方的身份,因此有可能遭遇偽裝;無法證明報文的完整性所以有可能已遭篡改
http+加密+認證+完整性保護=https,https并非是應用層的一種新協(xié)議,只是http通信接口部分用ssl和tls協(xié)議代替而已,通常http直接和tcp通信,當使用ssl時,則演變成先和ssl通信,再由ssl和tcp通信了,簡言之,所謂的https其實就是身披ssl協(xié)議這層外殼的http

學習nodejs:
assert模塊:使用該模塊來為應用編寫單元測試,對預期值與實際值進行比較,可以使用equal和notEqual分別做相等性和不等性,相當于==和!==,會進行類型轉(zhuǎn)換再比較,如果使用strictEqual就相當于===不會進行類型轉(zhuǎn)換,當比較object對象的時候可以用deepEqual,

buffer模塊:js中string對象存儲的是字符串unicode編碼,而我們在利用nodejs做服務器開發(fā)的時候,http、tcp、文件io都是傳輸?shù)淖止?jié)流,所以這里就需要用到buffer,他代表一個緩沖區(qū),存儲二進制數(shù)據(jù)。我們可以對緩沖區(qū)進行讀寫buf.write(),buf.toString(),緩沖區(qū)是有長度的,在創(chuàng)建時就固定了下來,創(chuàng)建之后不能改變。當我們要確定字符串在緩沖區(qū)中占的長度是不能使用string.length,這是utf8的編碼,一個字符可能在buffer中占用多個字節(jié)。

fs模塊:我們可以通過fs模塊對文件進行各種操作,所有的操作都有異步和同步,而同步可能會造成io阻塞。我們可以通過fs.readFile()按照我們需要的編碼格式進行讀取文件內(nèi)容,可以使用fs.writeFile將數(shù)據(jù)寫入文件,如果文件原先存在,則會將文件替換掉;如果想在文件尾部添加內(nèi)容可以使用fs.appendFile,同時我們可以使用fs模塊創(chuàng)建目錄刪除目錄創(chuàng)建文件監(jiān)聽文件等

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關(guān)閱讀更多精彩內(nèi)容

  • https://nodejs.org/api/documentation.html 工具模塊 Assert 測試 ...
    KeKeMars閱讀 6,598評論 0 6
  • Spring Cloud為開發(fā)人員提供了快速構(gòu)建分布式系統(tǒng)中一些常見模式的工具(例如配置管理,服務發(fā)現(xiàn),斷路器,智...
    卡卡羅2017閱讀 136,533評論 19 139
  • Node基本 node的最大特性莫過于基于事件驅(qū)動的非阻塞I/O模型。 node通過事件驅(qū)動的方式處理請求,無須為...
    AkaTBS閱讀 2,305評論 0 11
  • Android 自定義View的各種姿勢1 Activity的顯示之ViewRootImpl詳解 Activity...
    passiontim閱讀 178,872評論 25 709
  • linux資料總章2.1 1.0寫的不好抱歉 但是2.0已經(jīng)改了很多 但是錯誤還是無法避免 以后資料會慢慢更新 大...
    數(shù)據(jù)革命閱讀 13,199評論 2 33

友情鏈接更多精彩內(nèi)容