用Node.JS+MongoDB搭建個人部落格(萬眾期待的router.js)(四)

來源:互聯網
上載者:User

標籤:mongo   crypto   伺服器   end   分類   out   get   部分   執行個體化   

萬眾期待的router.js,是我現在最想寫的一個部落格。因為他包含了整個個人部落格的精髓。在這裡,所有的請求配置,返回的參數等等所做的商務邏輯都在這個檔案裡實現。

我會詳細說明這些代碼的作用,所以這篇部落格會有點長,但看完之後受益肯定也不少!

第一部分:引用檔案

formidable是一個很出名的NPM包。它在node裡作為表單內容接收做處理的一個中介軟體,功能很強大。

db.js是我在網上仿寫的一個對資料庫的統一操作的函數庫。

md5是用於資料加密的檔案(現在反對用md5加密,因為可以被破解)推薦用雜湊演算法加密的中介軟體Crypto

fs是nodejs內建的一個檔案管理,全名叫 fileSystem

moment是一個時間格式化的中介軟體

第二部分:註冊組件

app是引用Express 然後引用Express裡的get和post方法,由代碼可以看出:第一個參數是路由設定 第二個參數就是請求處理函數。而下面代碼就是引用router檔案下的showRegister函數

exprots是ES6的新寫法,可以在外面暴露這個函數,要引用這個函數前提是要引用這個檔案

也就是下面這段代碼引用

 

NodeJS都是回調!NodeJS都是回調!NodeJS都是回調!(重要事情說三遍)

所有請求處理函數 都會接收三個參數:request(請求),response(回應),result(結果)

nodejs裡有內建的render函數,可指定模板檔案。而檔案格式只能是ejs。

doRegister函數

首先執行個體化formidable的IncomingForm,執行個體化物件變數名為form

引用執行個體化對象下的parse方法(接收兩個參數:第一個,req,第二個,函數【我們要做的事情】)

所得到的表單資訊都在fields裡面,err參數就是錯誤資訊,files就是檔案資訊

取到值之後就定義一個變數儲存。密碼加上雙重MD5加密(然而並沒有用,還是會被人破解。MD5不再安全)

然後用db外置函數insertOne來向資料庫新增一條資料,參數:(表名字,要儲存的JSON,回呼函數)

而回呼函數裡又接收兩個參數(是不是崩潰了?是就對了,因為我當初也崩潰了。)參數:(錯誤資訊,結果)

 如果錯誤則返回錯誤資訊,成功就執行session設定並返回註冊成功資訊

第三部分:登入組件

操作與doRegister函數差不多,不一樣的就是查詢資料的時候,需要匹配帳號和密碼是否正確,登入成功之後都要寫上session。

 第四部分:編寫文章組件

首先訪問該URL要判斷是否有session,沒有session就是代表沒有登入,需要登入。

伺服器有session了,就渲染這個模板。

編寫文章:有人可能疑問,為什麼將文章添加到資料庫需要查詢所有的文章呢?

主要我還是想寫個自增ID,想要文章的ID號。NodeJS裡沒有自增ID。只有隨機的ID編號。

然後儲存的資料都是以JSON的格式,我都以語義化來命名,大家也看得清楚明白。

第五部分:擷取使用者地理位置群組件

在這裡我用了查詢網的API通過IP地址來判斷訪問者當前地理位置和用戶端的資訊。

因查詢網的定位不準確,我又找了個高德的遊覽器定位來做了這個功能。

這裡是在首頁使用Ajax把資料發送到NodeJS介面來儲存訪問者的當前地理位置

第六部分:分類組件

在這個分類組件裡,其餘的都是一樣,只是查詢的時候多出了個條件。classify為JavaScript,就實現了文章分類的效果。

 

以上。

用Node.JS+MongoDB搭建個人部落格(萬眾期待的router.js)(四)

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.