hexo-abbrlink介紹

需求

自從使用了hexo,就一直在折騰。沒辦法,強迫症做怪。
其實一直以來我都有個問題,即究竟用什麼來做爲permalink?這是一個糾結狂的我糾結了很久的問題。
hexo默認提供的方案是使用年/月/日/標題,這簡直反人類啊,由於有的時候我天天可能發表好幾篇博文,因此後面的標題不能去掉。
那就把前面去掉吧。
因此這就是我一直以來使用的方式。
還有一個是使用id,但此id非彼id,每次從新生成都會變化,及其不利於seo,還有多說的thread-key也不行。
但我是一箇中國人,寫博客的標題也是中文,中文的網址給我帶來了許多麻煩,可是沒辦法,實在是忙,就等着看看別人作好的插件拿來用用。
然而一直沒有等到滿意的。
昨天上谷歌和百度看了下,中文的連接權重特別低。
看來不能再等了,咬牙本身寫個吧!node

啓發

其實在hexo的插件庫裏面仍是有一個和個人需求比較搭邊的,那就是hexo-uuid,可和個人需求仍是有必定的差距。
首先他hook的地方是new這個事件,也就意味着我必須在命令行中執行git

hexo new title

才能得到這個uuid,而對我來講,我歷來都不是在這裏建立文章的,我通常都是本身建個md文件,而後直接開寫了。
因此這個東西我也是用不了啊。
並且看他寫代碼的水平不差,可是對hexo的瞭解太少,真是惋惜。不然我就不用本身動手了。github

方案

既然得本身開發了,天然得打造一個完美符合我需求的。npm

  1. 全自動生成惟一鏈接api

  2. 重複生成不會覆蓋bash

  3. 儘可能短小精悍hexo

  4. 持久保存可供修改post

  5. 不引用外部模塊ui

第一套方案

自動翻譯標題爲英文,而後做爲連接。
使用googleapi,而後獲取對應的英文,做爲文章的一個屬性保存在front-matter中。
可是因爲gfw,我這無法訪問google,因此很蛋疼。google

第二套方案

轉化所有漢字爲拼音,而後用-鏈接起來。
這個問題就在於轉換過以後實在太長了,難以讓我忍受。
因此也是果斷放棄了。

最終方案

標題+時間進行md5而後再轉base64,保存在front-matter中。

實現

通過了數次重構,終於把代碼寫的比較簡潔了。
首先是註冊before_post_render鉤子,而後取出來abbrlink這個屬性看是否存在,存在的就無論了,不然就生成鏈接。
其中使用了nodejs自帶的crypto模塊來獲取md5校驗值,用hexo-front-matter來轉換front-matter,而後用hexo-fs來保存文件。

安裝

npm install hexo-abbrlink --save

使用

打開config.yml,修改permalink中相似這樣

permalink: posts/:abbrlink/

其中:abbrlink表明鏈接地址。

源碼

github

反饋

請在本文下留言或者github。

相關文章
相關標籤/搜索