iBlog 是徹底基於github API 並充分利用 gracejs 數據代理特性實現的全功能博客方案。javascript
github做爲全球最大同性交友網站,已經有人在其上面作了不少匪夷所思的事情,利用issues功能寫博客就是其中之一……java
如今已經有一些開源的基於github issues的博客系統了,例如: cms.js等。但這些在客戶端(瀏覽器)對github api調用的實現方案,有幾個問題:git
聯想到Gracejs強大的數據代理的特性,咱們能不能直接在服務端調用github api,實現一套博客系統呢? github
這樣的話,我就能夠把我github repo的issues做爲博客的管理後臺;甚至能夠利用github issues comments的api及 github oauth 2.0 的api來實現評論系統,就不再用擔憂相似多說中止服務的問題了!數據庫
固然了,你看到了這篇文章,說明這個方案實現了:iBlog:基於Gracejs及github issues的全功能博客方案 。其主要特性以下:npm
iBlog源碼獨立託管在 xiongwilee/iblog ,但爲了演示簡便,在Gracejs裏已經默認集成了iBlog的產出文件;因此,接下來直接利用Gracejs帶你快速啓動iBlog。gulp
環境依賴:請務必確保你環境裏的Nodejs版本是7.6.0+。api
# koa-grace即Gracejs
$ git clone git@github.com:xiongwilee/koa-grace.git
$ cd koa-grace
$ npm install複製代碼
FYI:小白同窗能夠注意幾點:瀏覽器
git clone
命令,你能夠直接點擊Gracejs主頁的Clone or download按鈕,而後點擊Download ZIP;cnpm
或者yarn
安裝,體驗會更佳;# 請保持在koa-grace目錄下執行
$ npm run dev複製代碼
而後,用瀏覽器打開 https://0.0.0.0:3000 ,這時候瀏覽器提示:Personal Access Token Undefined!
則表示服務正確啓動,但沒有配置github personal token。安全
一、生成Personal Access Token:
若是你已經有了可使用的token,則直接跳到「二、在Gracejs中配置token」。
token
,「scopes」選擇repo
、user
;FYI:請保存好這個token,之後不會再在這個頁面上看到了。
二、在Gracejs中配置token
將你獲取到的token複製下來以後,回到koa-grace
的目錄。粘貼到koa-grace/config/main.development.js
下的constant.token
裏:
// 通用參數,以模板參數的形式傳遞給模板引擎
constant: {
cdn: '',
domain: {
demo: 'https://127.0.0.1:3000'
},
// github personal token ,不知道這個配置,徹底能夠忽略它
token: "在這裏粘貼你剛剛獲取到的token"
},複製代碼
FYI:
保存以後能夠在剛剛npm run dev
的控制檯看到服務已經自動重啓。這時候再訪問:https://0.0.0.0:3000 , 就能夠看到默認頁面了!
BTW:若是這時候看不到這個頁面,那麼頗有多是你根本訪問不了github,R.I.P.
除了上述的token的配置以外,iBlog還支持其餘配置;其餘配置的文件在koa-grace/app/iblog/controller/base.js
中的config
變量。
FYI:如下配置請保持你的服務處於正常啓動的狀態。
owner及repo配置及配置文章來源的倉儲,在koa-grace/app/iblog/controller/base.js
中的默認配置是:
owner: 'xiongwilee', // github用戶名
repo: 'blog' // 做爲文章源的github倉儲複製代碼
也就是默認使用github.com/xiongwilee/… 下的issues做爲文章源。你須要配置爲你本身的github用戶名
及用以承載博客的github倉儲
。
配置完保存以後,服務自動重啓;這時候打開頁面,看到的就是本身repo的issues 裏的內容了(若是沒有repo issue則提示「沒有文章」)。
FYI:這裏獲取文章(即你配置的repo裏的issues)的規則是:1)該issue必須是你親自建立的;2)該issue必須是open狀態
右邊欄友情連接的配置很是簡單,在base.js
中的site.links
中,根據你的需求配置便可。
在右邊欄有一個labels,即文章分類。這裏的文章分類直接讀取你配置的github repo的labels配置。
以默認的配置xiongwilee/blog
爲例,你能夠在這裏管理Labels:github.com/xiongwilee/…。
而後,你能夠在github上的issues詳情頁配置文章的Labels(即文章分類) 參考:[github.com/xiongwilee/…
接下來,全部的文章就直接經過你配置的github repo的issues來管理了。這裏請再次注意:必須是你親自建立並且是open狀態的issue纔會在你的blog中展現 。
在首頁的文章列表的文章有兩種元素:1)文章簡介;2)文章主題圖片。這兩種元素分別在 issue的markdown內容的頂部聲明:
參考:
配置oauth的主要目的是爲了獲取登陸用戶的信息
及經過github api發表文章評論
。
其大體原理是:首先用戶經過github登陸,而後經過用戶登陸github時access_token保存到cookie,而後就能夠經過這個access_token獲取當前登陸用戶的信息及發表評論。
這裏大體介紹怎麼配置oauth。
登陸github以後訪問github.com/settings/de…,點擊Register a new application。
在「Register a new OAuth application」頁面中:
https://iblog.wilee.me/user/oauth?from=github
;你本地服務的配置則是:https://0.0.0.0:3000/user/oauth?from=github
。點擊「Register application」建立client_id和client_secret對。
配置client_id和client_secret很是簡單,在base.js
中配置便可:
// OAuth applications clientId & clientSecret
client_id: '你生成的client_id',
client_secret: '你生成的client_secret',複製代碼
保存以後,服務自動重啓;在本地服務的任意一個文章詳情的底部,則能夠經過「login with github」按鈕登陸,登陸以後會會跳到文章詳情頁,這時候看到的就是登陸狀態,就能夠評論了。
BTW:這裏的評論和這篇文章對應的repo 裏issues的評論是一一對應的。
上述是全部對iBlog配置的概述,若是你僅僅想簡單使用這個博客系統,看到這裏就好了。但若是你想進一步開發,作更加個性化的深度訂製的話,能夠繼續往下看。
FYI:如下操做請保持Gracejs服務啓動(即在koa-grace目錄下npm run dev
爲執行狀態),並從新開一個命令行窗口操做。
請再次注意,保持koa-grace爲啓動狀態,並在koa-grace
路徑下執行:
# 到koa-grace的同級路徑下
$ cd ../
# 下載iBlog真正的源碼
$ git clone git@github.com:xiongwilee/iblog.git
$ cd iblog
$ npm install複製代碼
iBlog業務實現基於 gulp
+require.js
+less
+Nunjucks
,在iblog路徑下執行npm run dev
啓動開發模式下文件監聽:
# 保持在iblog路徑下
$ npm run dev複製代碼
這時候你能夠根據本身的需求訂製iblog了。開發過程當中,產出的文件就會經過gulp自動編譯,產出到koa-grace/app/iblog
目錄中。
若是開發完成,在iblog路徑下執行npm run build
便可。有興趣的同窗能夠自行對比下npm run dev
和npm run build
產出文件的差別。
iBlog的實現很是倉促,從有了iBlog這個idea到詳細構思、到設計、到開發一共就三天時間,不免會有BUG;歡迎到 github.com/xiongwilee/… fork參與開發,或者賞個star。