使用 node+backbone搭建我的博客系統

myblog

博客站點地址:http://www.snayan.com。項目地址:https://github.com/snayan/myblogcss

本項目用到的主要技術棧:backbone+sassnode+mocha+chai+grunthtml

coding

  • backbone前端

系統前端交互邏輯與視圖渲染,運用collection,model,view,router,等backbone的特性,快速開發SPA應用。視圖主要是用ejs模版引擎加上json數據進行渲染。js文件加載採用AMD模式異步加載,包依賴管理使用bower工具。node

backbone.png

  • sassnginx

系統樣式渲染用sass編寫scss,以後用grunt構件工具將scss編譯成css文件git

sass.png

  • nodegithub

系統運用RESTFUL API架構風格。服務端用express框架提供數據接口,配合backbone中model和collection的交互操做,主要是獲取,更新,保存,刪除等。拋開了mogodb存儲,結合node的file模塊使用文本文件存儲,本身須要實現與backbone對應的一些model,例如,blog對象,以及blogSchema對象等,blogSchema是操做blog的封裝對象,主要封裝了CURD操做,每一類操做都有對應的asynchronous和synchronous函數。原本是剛開始都用monogodb和mongoose作好了,後來想着本身試着實現一個ORM對象,能夠多學習一點,多折騰一點。express

blog.png

文章發表是我只須要寫markdown文件,上傳便可。採用github上的marked將markdown文件轉成html,用hignlight.js着色。json

markdown.png

管理員認證過程沒有使用現有的passport模塊,而是本身用node的crypto模塊,用aes-128-cbc進行加密和解密。將用戶名和密碼以及有效時間用空格加在一塊兒加密,設置到cookie中。後續須要認證的操做都在router中加上認證校驗便可。centos

auth.png

因爲管理員認證是經過cookie和crypto實現的,那麼就很容易被CRSF攻擊。這方面,在管理員頁面中動態生成一個token,傳遞到前端,後續前端的每次有權限校驗的操做都須要把這個token放在header中傳遞,服務端獲取這個token,加以驗證。

crsf.png

  • mocha+chai

測試框架使用mocha,斷言庫使用chai。

test.png

  • grunt

最後就是項目構建工具了。grunt構建工具負責項目的ejs預編譯,sass的編譯,靜態資源的concat,min,uglify,copy,rev等,以及express的啓動和熱加載,以及項目的打包和發佈。grunt官網中都提供了很是豐富的插件,以及詳細介紹說明,詳見官網查看吧。本次項目用的grunt文件,略圖以下,

grunt.png

publish

好了,經過前面的編碼,系統已經初步完成了。如今須要部署發佈到線上了。原本不多的工資,害的忍心到阿里雲購買了最低配置的服務器,1G單核的,寬帶1mbps,也不須要什麼多核去作負載均衡了,也沒有買CDN加速緩存了。本身的站點,本身都不多去逛,估計別人也不會逗留多長時間?。據說,如今的對碼農的要求都是熟悉Linux環境,因爲之前是作.net的,玩的都是window系統,因此,此次,買的服務器是centos最新版的7.2 64位。首先安裝了nginx,用做反向代理,配置以下圖,接着安裝了node,又安裝了pm2,又安裝了unzip。最後終於搞完了。什麼都本身動手作一下,收穫仍是不少的。

nginx.png

相關文章
相關標籤/搜索