Hexo博客寫作與圖片處理的經驗

2021-03-02 大江小浪

本文使用的Typora版本為0.9.9.32.1(4191),Hexo版本為4.2.0。

Hexo是一款非常優秀的開源博客管理工具,所有的博客文檔都通過Markdown格式編寫,Markdown編輯器有很多,原來的時候我經常用Evernote編寫,但是Evernote寫Markdown經常會出現輸入法響應緩慢的情況。最近我從Evernote轉到了Typora,想到哪裡就能夠敲字寫到哪裡,而且輸入後馬上就能夠轉換為友好的顯示樣式,體驗非常好。

本文介紹了如何處理博客博客編寫過程中插入圖片,上傳圖片等一些問題,希望我的經驗能夠對大家有幫助。

目標

我的目標是使用Typora編寫博客,編寫過程中可能通過拷貝、粘貼插入圖片,也可能從網絡上下載圖片。希望能夠達到以下效果:

•使用Typora編寫的時候能夠實時看到圖片•本地使用hexo server瀏覽效果時,也能夠看到圖片•圖片和Markdown文件放一起都上傳到GitHub pages。

我沒有選擇圖床作為圖片的保存方式,一方面免費的圖床很不穩定,另一方面使用圖床在沒有網絡的情況下可能瀏覽器來還是不太方便。我還是習慣將所有筆記最終都歸檔保存在Evernote中。

Typora 編寫博客

Typora支持將插入的圖片文件拷貝到指定路徑,通過Typora->偏好設置->圖像,然後參照下圖選擇複製到指定路徑將圖片拷貝到與Markdown文件同名目錄下。

這樣我們在編輯博客的時候,就可以實時看到插入的圖片。可以截圖插入,也可以從網頁上直接拖拽插入,非常方便。

查看Markdown原始碼,看到圖片是以Markdown的圖片格式插入的。

![image-20200314195122981](20200314-write-hexo-with-typora/image-20200314195122981.png)

Hexo配置

首先修改 hexo 全局配置文件 _config.yml 中的配置:

這樣在我們每次新建Markdown文件的時候,都會創建一個與文件同名的文件夾用於存放圖片。

$ hexo new 20200314-es-monitoring-metric$ ls source/_posts/total 8drwxr-xr-x   4 shiqiang  staff   128B  3 14 07:58 ./drwx-+ 32 shiqiang  staff   1.0K  3 14 07:52 ../drwxr-xr-x   2 shiqiang  staff    64B  3 14 07:58 20200314-es-monitoring-metric/-rw-r--r--   1 shiqiang  staff    77B  3 14 07:58 20200314-es-monitoring-metric.md

使用hexo generate生成靜態文件後,可以觀察到圖片已經拷貝到了對應的目錄下。

$ ls public/2020/03/14/20200314-write-hexo-with-typora/total 424drwxr-xr-x  6 shiqiang  staff   192B  3 14 10:26 ./drwxr-xr-x  4 shiqiang  staff   128B  3 14 10:26 ../-rw-r--r--  1 shiqiang  staff    14K  3 14 10:26 Screenshot-150-1-20200314081849804.png-rw-r--r--  1 shiqiang  staff    79K  3 14 10:26 image-20200314080935503.png-rw-r--r--  1 shiqiang  staff   106K  3 14 10:26 image-20200314083152512.png-rw-r--r--  1 shiqiang  staff   5.3K  3 14 10:26 index.html

但是現在瀏覽的時候還不能夠看到圖片,可以看到是因為我們插入的時候用的是包含了一個與Markdown文件同名文件夾的相對路徑,而生成的靜態文件夾下沒有那個同名文件夾所以造成了訪問404。

這時首先通過搜尋引擎查到了有兩個解決方案:hexo-asset-image 和 hexo-simple-image。

hexo-asset-image 的問題

這個插件在處理圖片路徑時,看到更新的路徑有問題,導致通過hexo server 還是不能夠正確顯示圖片。

hexo-simple-image 的問題

在 Hexo 官網上看到這個插件的描述也是解決圖片路徑問題的,但是安裝嘗試之後遇到如下報錯。

07:19:06.993 FATAL Something's wrong. Maybe you can find the solution here: https://hexo.io/docs/troubleshooting.htmlTypeError: Cannot read property '1' of null    at /Users/shiqiang/Projects/hexo-blog/blog/node_modules/hexo-simple-image/lib/index.js:9:20    at String.replace (<anonymous>)    at Hexo.module.exports (/Users/shiqiang/Projects/hexo-blog/blog/node_modules/hexo-simple-image/lib/index.js:2:31)

解決方案

參考hexo-asset-image和hexo-simple-image的源碼,發現一個思路是在after_post_render之後將html中圖片連結替換為絕對路徑,一個是在before_post_render階段將markdown文件中圖片的路徑轉換為asset_img函數。

經過分析,覺得還是 hex-simple-image 的處理方式比較簡單,因此對插件內容做了修改,現在可以用我這個新的插件來解決圖片顯示的問題。

具體可以按照下面的步驟操作。

•修改post_asset_folder: true•生成一篇新的博客 hexo new blog-name•通過typora向博客中插入一張圖片,此時可以到source/_posts目錄下看圖片是否拷貝到了對應的目錄•nom install hexo-image-link --save安裝插件•hexo server -debug 預覽圖片是否能正常顯示

References

[1] Hexo與typora結合: https://www.jianshu.com/p/81a40a2c6514
[2] Front-matter 說明: https://hexo.io/zh-cn/docs/front-matter.html
[3] 用 Typora 寫 Hexo 博客: https://zhangnew.com/Typora-Hexo.html
[4] Hexo 插件: https://hexo.io/zh-cn/docs/plugins.html
[5] hexo-simple-image: https://github.com/Aragakiiii/hexo-simple-image
[6] hexo-asset-image: https://github.com/xcodebuild/hexo-asset-image
[7] Node.js: https://nodejs.org/en/
[8] JavaScript 1.3 Overview, Part II: Replace Method's Lambda Expression - Doc JavaScript: http://webreference.com/js/column26/lambda.html

相關焦點

  • Hexo+Github/Gitee 搭建個人博客
    搭建個人博客的框架有很多,比如wordpress、Hexo、Vuepress、Jekyll、Django等,Hexo博客簡潔高效,配置簡單,文章可以使用markdown語法編寫,下面介紹 hexo博客搭建步驟。
  • Github + Hexo 搭建博客
    一轉眼已經過去了四年,最近恰好有想要做的,也有想要分享的,那就重拾一下這個博客,趁著國慶放假,收拾收拾。背起行囊,繼續出發。種一棵樹最好的時間是十年前,其次是現在。那就先簡單記錄一下自己 Github + Hexo 搭建屬於自己的博客的過程吧!
  • Hexo免費搭建一個屬於自己的博客
    GitHub來寫文章,不過那些都是第三方平臺,不是自己的,只有屬於自己的一個博客才會顯得很酷很裝逼有沒有??接下來就是對該主題的一些設置,詳細可參考NexT主題設定四、寫作以上所有的工作都完成了,並設置了一套你自己喜歡的主題樣式,接下來就可以寫博客了。
  • 用 GitHub + Hexo 建立你的第一個博客
    建立博客的通常渠道包括:在博客平臺上註冊,比如 博客園、CSDN、新浪博客 等。利用博客框架搭建,如 WordPress、Jekyll、hexo 等。自己用代碼寫一個。其中,第一種最簡單,也最受限,說不定還會被刪帖刪號。第二種稍複雜,另外需要自己找部署的伺服器,但可定製化較高,是很多程式設計師的選擇。
  • 使用Hexo+Github搭建個人博客網站
    但是,寫程序以及維護的成本,不禁讓我猶豫再三,最後還是選擇了CSDN等博客網站。將近三年的博客生涯,我嘗試了不同的博客網站,各有各的利和弊,不變的是廣告,這讓人很不爽。直到今天,我看到了別人寫的利用Hexo+Github來搭建個人博客網站,如獲至寶。折騰了一陣以後,輕鬆完成了個人博客的搭建,這種清爽的界面風格,讓人耳目一新,同時它又是免費的,功能繁多的,便於維護的。
  • 途牛原創 如何使用 hexo+github 搭建個人博客
    如果你不想要像新浪、csdn 這類樣式醜、頁面內容雜的博客網站,或者不想在移植、遷移上浪費精力,又或者不想付出多餘的銀子買VPS,那麼 GitHub Pages 是不錯的選擇。GitHub Pages 有以下幾個優點:輕量級的博客系統,沒有麻煩的配置免費空間,享受 Git 版本管理功能使用標記語言,比如 Markdown無需自己搭建伺服器可以綁定自己的域名當然他也有缺點:搭配模板系統,相當於靜態頁發布,每運行生成一次都必須遍歷全部的文本文件,網站越大,生成時間越長
  • iOS14搭配快捷指令在手機上寫hexo博客
    突然想起博客年久失修,生活博客半年沒更,技術博客半年內倒是更了兩個,但都是寫了標題沒寫多少內容。不玩lol了之後是越來越懶得動電腦,家裡的臺式機也就是在吃飯的時候才打開20分鐘用B站下飯。由於博客使用hexo搭建,不開電腦的話更新的機率就很小。所以我就想,我能不能在手機上寫博客,再用一種快捷的方式推送到伺服器上?
  • 絲滑的博客:基於COS/CDN/CI/Hexo/DNS
    目前搭建博客有哪些選擇呢?動態博客:WordPress...靜態博客:Hexo、Jekyll、Hugo...對於一般的內容而言,使用動態博客較為複雜,需要資料庫、運行環境的配合。動態博客的代碼也較為複雜,修改代碼進行個性化難度較高。靜態博客就方便多了,如 github 原生支持的 Jekyll 博客。
  • 為什麼我建議你去寫博客?
    維基百科對於博客的解釋是:博客(英語:Blog)是一種在線日記型式的個人網站,藉由張帖子章、圖片或影片來記錄生活、抒發情感或分享信息。博客上的文章通常根據張貼時間,以倒序方式由新到舊排列。說白了就是記錄自己的一些想法、學習心得、總結之類的,主要還是看自己想寫什麼。
  • 「教程篇」Hexo+ NexT 博客美化配置教程|第七篇
    命令:hexo new page categories修改.md文件,主要title和type,type為categories。相對應。12.個性化回到頂部自己找一張圖片,或者直接用我這張。在最後粘貼以下代碼://自定義回到頂部樣式.back-to-top {right: 60px; width: 70px; //圖片素材寬度 height: 900px; //圖片素材高度
  • 個人博客|第一章|手把手教你搭建、上線個人博客
    」前言Hello,我是淡漠,今天帶大家一起搭建個人博客。個人博客一直都是非常受歡迎的個人項目,個人博客分靜態和動態兩種,淡漠個人比較青睞靜態博客,靜態不需要管理後端,相比動態博客,靜態博客可以不需要花一分錢,開發成本要低一些,畢竟作為學生黨,買伺服器放一個博客網站有點浪費,也可以把精力集中於寫博客,而不是開發博客。
  • 使用GitHub和阿里雲效自動發布博客
    前言我接觸過很多博客平臺:WordPress、Jekyll、Hexo、Typecho和Vuepress,有的是靜態博客有的需要伺服器運維,玩過花裡胡哨後私以為博客最重要的是思考和記錄,而不是不停地裝飾。所以總結一些經驗可以讓大家快速把博客搭建起來,並且不會憂愁後續的維護。
  • 手把手搭建個人博客(圖文教程)
    可見搭建個人博客是非常有必要的,很多讀者很早就要求我發一篇搭建個人博客的文章,由於個人時間願意本來想直接轉載,但是在自己實際操作中遇到很多坑,浪費不少時間,都是把主要步驟給出且時間久遠,沒有詳細的圖文配合。
  • 5分鐘 搭建免費個人博客
    有簡書了為什麼還需要個人博客呢,除了裝逼,當然還有個人博客更加自由,不受任何第三方管理,並且還能夠自定義成自己喜歡的樣子。還有,如果你是個程序猿,那就更沒有理由不自己搭建一個獨立博客了。好了,不BB了。抓緊時間開始。
  • 零成本搭建現代博客之SEO優化篇
    很多獨立博客的站長,寫作完全看個人心情,雖然文章質量也許很高,但是文章內容並沒有潛在的搜索潛力,那這種內容的流量肯定很難爆發,而面向SEO而寫的博客如ahrefs、backlinko的SEO流量都很高。如何進行面向SEO的內容寫作?這個問題留待以後分享。關鍵詞研究SEO流量是由很多關鍵詞帶來的流量匯聚而成。
  • 如何用 GitHub 從零開始搭建一個博客?
    安裝 Hexo接下來就需要安裝 Hexo 了,這是一個博客框架,Hexo 官方還提供了一個命令行工具,用於快速創建項目、頁面、編譯、部署 Hexo 博客,所以在這之前我們需要先安裝 Hexo 的命令行工具。命令如下:安裝完畢之後,確保環境變量配置好,能正常使用 hexo 命令。
  • 如何搭建一個比簡書更精美的個人博客
    想必大家都有過在一些大平臺上發布博客的經歷。無奈,不是排版太醜,就是不適合發布代碼,有的甚至是充斥著各種心煩的廣告,像牛皮癬一樣,極大地降低了技術人員在分享過程中獲得的成就感,唉,人在屋簷下不得不低頭。
  • Kirito 的博客崩了,這次是因為...
    ,給禁止訪問了,折騰了一天才恢復,借著這個機會跟大家閒聊一下個人博客、域名那點事。從 CSDN 到個人博客很多人有寫作的習慣,只不過有人喜歡寫在 QQ 空間,有人喜歡寫在專門的博客論壇,也有人喜歡寫在個人博客。最開始,我也是在 CSDN 上進行寫作的CSDN舊址在 2017 年的時候,喜歡折騰的我,開始在個人博客 www.cnkirito.moe 上更新文章。沒有什麼特別的原因,只是覺得,這很酷。
  • 如何用 GitHub 從零開始搭建一個博客 ?
    安裝 Hexo接下來就需要安裝 Hexo 了,這是一個博客框架,Hexo 官方還提供了一個命令行工具,用於快速創建項目、頁面、編譯、部署 Hexo 博客,所以在這之前我們需要先安裝 Hexo 的命令行工具。命令如下:安裝完畢之後,確保環境變量配置好,能正常使用 hexo 命令。
  • 現在還有1%的程式設計師不會搭建博客,是你嗎?
    在 2020 年如果還沒有自己的技術博客確實有點落伍了,但是搭建自己的技術博客有很多種技術方案,我知道的有  Hexo, jeklly, vuepress  等。寵粉無邊,所以儘量所有的技術方案都手把手教大家一輪,讓大家都有自己的個人博客。