我本是一名文科專業半路出家的前端開發人員,從最初只會切圖和寫CSS、Html到如今會寫點JS,一路坑坑窪窪,也是經歷了不少,從2010年開始就用WordPress開設了本身的博客,雖然內容零零散散的並很少,可是多多少少也留下了時光的縮影,一直但願本身有一個自留地。用Node.js作服務端替換WordPress是去年的一個想法,因爲一直騰不出時間,因此拖到了如今。固然了WordPress做爲全球用戶量最廣的開源博客程序,易用性等諸多好處無可厚非,光本身的博客在過去幾年就用了不少套模板,也用它作過不少不一樣風格不一樣功能的網站, 也許Node.js不是我的博客的最好的開發語言選擇,不論是情懷仍是其餘,我相信必定有前端開發人員跟我同樣有想過這樣的嘗試。市面上開源的博客程序不少,UI模板也至關漂亮,可是本身開發一個屬於本身的博客程序,沒事的時候折騰折騰,可能會是一件比較美好的事情,最主要的目的是在其折騰的過程當中,能夠多嘗試服務端的功能開發,這對從一個純前端轉向全棧開發工程師是很是好的實踐。 git上面有不少開源的Node.js源碼,教程也比較詳細,有的功能全面,有的相對簡約,固然每一個人只要選擇適合本身的就好,下面簡單介紹下個人項目,從技術角度而言,深度有限,大神多提意見。前端
項目沿用傳統的MVC,比較古老的架構,model(對象模型),view(視圖),controller(控制器),model通俗的說就是數據庫表字段的映射,view就是界面,UI,controller就是操做數據庫,通常是接收到路由信息,而後對數據庫進行操做,再把數據返回給view層。若是是熟悉後端的開發人員可能一眼就看的懂,不過對於沒有作事後端開發的純前端人員來講,可能須要一些時間去消化。想起我第一次作全棧開發,一個存儲CCTV配置數據的項目,基於c#和sqlserver,也是標準的MVC架構,很簡單的增刪改查,是廢了很多功夫。node
數據庫這塊用的MongoDB,爲何用它,由於簡單好用,再就是它是在非關係數據中功能最豐富,最像關係數據庫的。操做數據庫的工具用了mongoose,api易讀,很容易上手。以前是wordpress用的mysql,導出數據到MongdoDB確實沒什麼特別的好的方法和工具,嘗試用了一些工具和腳本,效率不高,最後仍是手工完成的,好在本人比較懶,那麼多年沒幾篇內容。mysql
後端用了Express的web框架,頁面渲染部分是handlebars模板,我的感受{{}}大括號的寫法比較適合前端開發人員,可是handlebars模板是個弱邏輯語言,有一些不方便,須要helper,特別是分頁和評論,邏輯特別複雜,不過若是你喜歡hb模板,能夠去git上下helper的庫。jade模板(如今改爲pug了)會比較方便一些,對一些複雜邏輯的處理比較高效,主要是能夠直接在模板中寫js語法,可是縮進的寫法不是每一個前端開發都能習慣的。git
現在的先後端分離,MV*框架,工程化,模塊化,這些概念大行其道,若是一個作前端的不知道這幾個概念,恐怕工做都難找到。可是這個項目沒有先後端分離,直接在後端渲染頁面,也沒有用MVVM框架,工程化和模塊化就更不用說了,後臺頁面用了一個jQuery和BootStrap和一些插件,前臺頁面好像就一個jQuery,CSS基本手寫,我相信前端開發人員看到會比較親切。個人初衷是但願經過這個項目瞭解更多後端開發思路和模式,其次我的博客是個傳播源,在後端渲染也是爲了利於SEO。github
我這裏簡單從一個頁面打開到徹底加載,程序作了哪些事去論述一下整個項目工做原理,當你打開博客的一個頁面,node.js在後端經過路由機制(express提供的路由模塊)去匹配到這個頁面的url,而後查找對應的controller(就是處理這個URL的函數),在這個controller函數中,對數據庫進行一些過濾篩選(用mongoose對數據庫進行操做)最終拿到頁面須要的數據,而後再把數據傳遞給對應的模板(handlebars),最終渲染成HTML。web
因爲時間倉促,博客的功能可能比較簡陋,可是基本的功能已經知足了,另外項目也有不少沒用到的函數和接口,來不及整理,留待之後擴展吧。博客demo 這是個人博客git地址github.com/frogo/blog,歡迎你們star和fork,sql