萬衆期待的router.js,是我如今最想寫的一個博客。由於他包含了整個我的博客的精髓。在這裏,全部的請求配置,返回的參數等等所作的業務邏輯都在這個文件裏實現。node
我會詳細說明這些代碼的做用,因此這篇博客會有點長,但看完以後受益確定也很多!算法
formidable是一個很出名的NPM包。它在node裏做爲表單內容接收作處理的一箇中間件,功能很強大。數據庫
db.js是我在網上仿寫的一個對數據庫的統一操做的函數庫。安全
md5是用於數據加密的文件(如今反對用md5加密,由於能夠被破解)推薦用哈希算法加密的中間件Crypto服務器
fs是nodejs自帶的一個文件管理,全名叫 fileSystemsession
moment是一個時間格式化的中間件app
app是引用Express 而後引用Express裏的get和post方法,由代碼能夠看出:第一個參數是路由設置 第二個參數就是請求處理函數。而下面代碼就是引用router文件下的showRegister函數函數
exprots是ES6的新寫法,能夠在外面暴露這個函數,要引用這個函數前提是要引用這個文件post
也就是下面這段代碼引用加密
NodeJS都是回調!NodeJS都是回調!NodeJS都是回調!(重要事情說三遍)
全部請求處理函數 都會接收三個參數:request(請求),response(迴應),result(結果)
nodejs裏有內置的render函數,可指定模板文件。而文件格式只能是ejs。
首先實例化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,就實現了文章分類的效果。
以上。