Github Pages(三):使用Hexo博客生成工具

最近用 Hexo 重新搭建了個人博客,雖然我以前用網頁拼湊我的老網站花了很多時間,但寫作和發布體驗的巨大差別讓我還是進入Hexo陣營了。

我的理解是,這是一個自動生成靜態(html+css+js)網站的工具,主題里是很多模塊化的網頁,可以通過.yml配置文件運用這些模塊,把MarkDown(.md)博客批量轉化為網頁并且跟主頁形成總分結構。
下面是我用Hexo搭建個人網站的過程和網站配置:

首先,一切以Hexo官網為準。

Hexo官網

準備工作

配置Hexo文件夾

在Mac上安裝 Node/Npm

brew update
brew install node

(windows/linux用戶參見此官方教程

安裝 Hexo

npm install hexo -g
hexo init blog
cd blog
npm install
hexo s

這時博客就在本地生成了。訪問http://localhost:4000 可以看效果。
可以說Hexo是很強大的,默認主題網站結構合理,適配手機,搜索欄(google)也有了。只需要優化(改一下失效的鏈接,添加評論,RSS等模塊)就行了。

基本操作

  • hexo g 生成/public 文件夾,里面是網站
  • hexo d 把這個網站文件夾推送到服務器
  • hexo clean 刪除網站文件夾
  • hexo s 本地查看效果

配置文件

配置文件是兩個,第一個是根目錄的 _config.yml。重要配置有

  • language: zh-CN 是中文,不寫是英文
  • url: https://hans2936.github.io (網站地址)
  • root: / (根目錄在哪里,github就寫斜杠,有些服務器會多一層路徑)
  • skip_render: README.md 這樣可以在 /source 里面放一個 README.md,推送的時候自動傳到 Github 上面
  • theme: landscape 這里可以換主題

推送設置 (GitHub)

deploy:
  type: git
  repository: https://github.com/hans2936/hans2936.github.io.git
  branch: master

如果網站在服務器上,則可以用 rsync

deploy:
  type: rsync
  host: 服務器名
  user: 用戶名
  root: 放網站的文件夾
  port: 22

第二個配置文件,是主題的配置文件 themes/landscape/_config.yml,主要有導航欄(menu),側邊欄(widgets),網站圖標(favicon)等。

寫新文章

hexo new "article name"

這條命令會在source/_posts產生新文件,然后改改文件名,在進入編輯MarkDown就行了。

每篇文章最上面是配置區,能用到的主要是

  • title: 題目
  • date: 日期 (會影響在主頁的順序)
  • tags: 標簽
  • categories: 分類
  • updated: 修改日期

配置區下面就隨便寫了。值得一提的是,文章正文是支持html語言的,這樣特殊字體和元素就可以直接加進去。

創建頁面

hexo new page about

會在 source/about 里面產生新文件,跟文章是一樣編輯的。
然后再從主題配置的導航欄里面加上這一頁。

menu:
  ...
  關于: /about

引用圖片

執行 npm install hexo-asset-image --save
然后,主配置文件 _config.yml 設置為

post_asset_folder: true

這個時候創建新文章就會產生一個同名文件夾,把圖片放入即可。
然后在文章正文這樣引用放進去的圖片。

![圖片描述](文章名/圖片名)

引用視頻文件

對某個鏈接中的視頻文件,可以執行 npm install hexo-tag-dplayer
這是一個播放器插件,使用時在文章中加入:

{% dplayer "url="  "pic=" "loop=yes" "theme=#FADFA3" "autoplay=false" "token=tokendemo" %}

其中 url 是視頻地址,pic 是縮略圖地址。

這個方法是引入視頻的最佳方法,但是需要一個地方來存放這些文件(url)。
Github只有1G太少了,可以考慮使用阿里云oss存儲,淘寶賬戶就能開,還很便宜。

引入第三方視頻

對視頻網站上的視頻,可在Markdown文件中明碼使用html語言 iframe,比如

<div class="selfadapting-video">
<iframe src="" scrolling="no" border="0" frameborder="no" framespacing="0" allowfullscreen="true"> </iframe>
</div>

其中class="selfadapting-video" 是一個自適應長寬比例的容器,具體看這篇博客

創建側邊欄

比如在 themes/landscape/layout/_widget/ 創建一個 about.ejs

<% if (site.tags.length){ %>
  <div class="widget-wrap">
    <h3 class="widget-title">About</h3>
    <div class="widget">
      E-mail: xyz@123.com
    </div>
  </div>
<% } %>

然后在主題配置的側邊欄中加上:

widgets:
- ...
- about

RSS 訂閱

執行 npm install hexo-generator-feed
然后在主配置文件 _config.yml 里面加上

plugin:
- hexo-generator-feed
feed:
type: atom
path: atom.xml
limit: 20

然后在主題配置文件里加上 rss: /atom.xml

站點地圖

類似上一條,執行 npm install hexo-generator-sitemap --save
主配置文件添加:

# Sitemap
sitemap:
    path: sitemap.xml

然后提交給 Google Search Console 就行了。

高級修改 (評論,分享)

Hexo的網頁其實是被拆開成很多零件的,主要在themes/landscape/layout/_partial/
當在網頁中加入一個新的模塊時,比如對評論系統Gitment來說(關于Gitment見此教程),首先要打開 head.ejs 引用js, css文件(需放入themes/landscape/source

<link rel="stylesheet" href="/css/gitment.css">
<script src="/js/gitment.browser.js"></script>

然后在 article.ejs 里面加上 Gitment 的code

<% if (!index && post.comments){ %>
  <section id="comments">
  <div id="gitment"></div>
      <script>
      const gitment = new Gitment({
        id: '<%= post.date %>',
        owner: 'username',
        repo: 'username.github.io',
        oauth: {
        client_id: '---yourID---',
        client_secret: '---yourKey---',
        },
      })
      gitment.render('gitment')
      </script>
  </section>
<% } %>

就實現這個第三方功能了。注意 id: '<%= post.date %>' 這句話是為了修復網頁路徑過長不能顯示評論的bug (在手機app內分享網頁很容易出現長后綴)。

主題自帶的功能也可以改,比如說分享功能可以在themes/landscape/source/js/script.js加一句,

'<a  + encodedUrl + '" class="article-share-sina" target="_blank" title="微博"></a>'

然后找到themes/landscape/source/css/_partial/article.styl 比照著定義一個 .article-share-sina 就可以了。

像這種高級修改,對有一定網頁知識的人來說有無限可能,自己做一個主題都是可以的。
盡管有了Hexo,對html/css/JavaScript的基本了解還是有必要的。

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市,隨后出現的幾起案子,更是在濱河造成了極大的恐慌,老刑警劉巖,帶你破解...
    沈念sama閱讀 228,345評論 6 531
  • 序言:濱河連續發生了三起死亡事件,死亡現場離奇詭異,居然都是意外死亡,警方通過查閱死者的電腦和手機,發現死者居然都...
    沈念sama閱讀 98,494評論 3 416
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人,你說我怎么就攤上這事。” “怎么了?”我有些...
    開封第一講書人閱讀 176,283評論 0 374
  • 文/不壞的土叔 我叫張陵,是天一觀的道長。 經常有香客問我,道長,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 62,953評論 1 309
  • 正文 為了忘掉前任,我火速辦了婚禮,結果婚禮上,老公的妹妹穿的比我還像新娘。我一直安慰自己,他們只是感情好,可當我...
    茶點故事閱讀 71,714評論 6 410
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著,像睡著了一般。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發上,一...
    開封第一講書人閱讀 55,186評論 1 324
  • 那天,我揣著相機與錄音,去河邊找鬼。 笑死,一個胖子當著我的面吹牛,可吹牛的內容都是我干的。 我是一名探鬼主播,決...
    沈念sama閱讀 43,255評論 3 441
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了?” 一聲冷哼從身側響起,我...
    開封第一講書人閱讀 42,410評論 0 288
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后,有當地人在樹林里發現了一具尸體,經...
    沈念sama閱讀 48,940評論 1 335
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 40,776評論 3 354
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發現自己被綠了。 大學時的朋友給我發了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 42,976評論 1 369
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖,靈堂內的尸體忽然破棺而出,到底是詐尸還是另有隱情,我是刑警寧澤,帶...
    沈念sama閱讀 38,518評論 5 359
  • 正文 年R本政府宣布,位于F島的核電站,受9級特大地震影響,放射性物質發生泄漏。R本人自食惡果不足惜,卻給世界環境...
    茶點故事閱讀 44,210評論 3 347
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧,春花似錦、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 34,642評論 0 26
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至,卻和暖如春,著一層夾襖步出監牢的瞬間,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 35,878評論 1 286
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人。 一個月前我還...
    沈念sama閱讀 51,654評論 3 391
  • 正文 我出身青樓,卻偏偏與公主長得像,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 47,958評論 2 373

推薦閱讀更多精彩內容