1. 程式人生 > >我的開源主頁Blog Lite配置指南

我的開源主頁Blog Lite配置指南

JinHengyu.github.io --- Blog Lite 0.1.1

好看的東西看多了就會不好看, 簡單的東西永遠不會難看

GitHub Pages

提供靜態網站託管服務的廠商還是很多的, 上次這個部落格還是在阿里雲的OSS上面, 雖然oss很便宜但還是沒有一種"永久使用權"的歸屬感, 於是我遇到了Github Pages:

https://pages.github.com/

相比其他的blog平臺, GitHub Pages有以下的優點:

  • HTTPS: 不用購買證書啦
  • 完全免費, repository上線1G
  • 支援git動態更新後臺, 本地同步備份
  • GitHub域名服務支援CDN
  • 豐富的教程和擴充套件工具

這麼看來GitHub Pages有3大免費: 免費倉庫, 免費域名, 免費https, 再加上各種優化和保障, 同時還能給你github賬號加分, 何樂而不為呢? 當然了, github pages並沒有提供後臺的計算服務, 所以我們只能免費搭靜態部落格.

Material Design Lite

Material Design Lite (MDL)是谷歌根據自己的Material Design設計風格開發的精簡版Web UI框架, 雖然市面上有很多基於material的優秀的前端框架, 但是最好還是使用Google自己推出的, 一來有官方保障, 而來MDL本身很輕量, 正好符合了我們靜態網站的宗旨. MDL的官網和git倉庫, 以及material的官方字型圖示:

https://getmdl.io/

https://github.com/google/material-design-lite

https://material.io/tools/icons/

所以我的部落格也叫Blog Lite, 意指完全遵循material的精簡部落格

Blog Lite

當前版本0.1.1 首先宣告, 這個blog適用的人群有限, 因為這部落格太輕量了, 以至於除了MDL框架, 程式碼部分構建之後只有10+k, 因為Blog Lite有一個重要的特點是"一切都是連結", 這意味著部落格中展現的一切都是分類之後第三方的地址, 不存放最終的內容. 我當初寫Blog Lite的初衷是做一個"目錄"來把我的許多第三方部落格平臺和個人網站統一起來, 一目瞭然, demo也可以在我的page上看到:

https://jinhengyu.github.io/

看完之後如果不夠舒適...其實也可以在此之上二次開發, 不用標記版權, 因本身就是我一時興起的作品哈哈, 更多截圖請看進入demo目錄

卡片佈局

卡片佈局(Card Layout)是經典的UI元件, material中的核心部件, card給人一種簡約大方的感覺, 同時暗示了可互動性, 和有一種面向物件的feel, 所以我大膽的在新版本中給每個外鏈加上了卡片, 如圖 

可以看出其結構, 首先這個矩形是一個黃金矩形, 即寬高比例是1:0.618, /* gold = (5**0.5-1)/2 */, 標題在左下角, logo在右側, 為了美觀, 你之後在填寫data.json的時候有幾點需要注意:

  • 標題不能太長, 控制在2~20個字元之間
  • 背景圖可壓縮, 但最好以淡色為主(為了突出logo)
  • logo請裁剪成透明png, 同時寬高比儘可能接近1:1(不夠的可拿透明色填充)

目錄結構

  • icon/: 存放著material design的官方字型
  • mdl/: MDL框架的所有相關檔案
  • img/: 存放著所有圖片, 包括logo, 卡片背景和網站素材圖片
  • showdown/: 一個markdown2html的外掛(http://showdownjs.com/)
  • demo/: 存放了成品的截圖檔案
  • data.json: 核心資料檔案
  • index.html: github pages倉庫的預設入口
  • js.js: 主要的js檔案
  • css.css: 主要的css檔案
  • server.js: 測試使用的, 用於開啟localhost
  • LICENSE: Apache通行證
  • README.md: 這個檔案
  • README.html: README.md的HTML版本

data.json

data.json中存放著所有的資料, 也就是所有的url, 原始碼拿到手之後修改下這個檔案之後就能上手用了, 為了方便我使用js的形式描述data.json:

// data.json是一個列表物件, 其中每一個元素是一個album, 代表一個大類包含許多的子連結
[{
    // album的優先順序, Number型別, 較大的排在選單側邊欄的上面 
    priority: Number,
    // album的圖示 
    icon: String
    // album的名字(短文字)
    name: String,
    // album的描述(長文字)
    about: String,
    // album中每一個卡片(外鏈)的背景圖片url, 建議存放在/img/back/目錄中
    img: String,
    // 存放該類別中所有的連結資訊(卡片)
    list:[
        // link的名字(短文字)
        name: String,
        // link的描述(長文字)
        about: String,
        // link的地址
        url: String,
        // link的圖示圖片url, 建議存放在/img/logo/目錄中, 最好做成裁剪後的透明png, 因為要覆蓋在背景圖片之上
        logo: String
    ]
    // other album...
},{},{}]

支援