我的這套VuePress主題你熟悉吧

_肥肥_發表於2019-02-20

最近熬了很多個夜晚, 踩坑無數, 終於寫出了用VuePress驅動的主題.

只需體驗三分鐘,你就會跟我一樣,愛上這款主題.

vuepress-theme-indigo-material, 已經發布到npm, 請客官享用~~

介紹

vuepress-theme-indigo-material 的原主題是hexo-theme-indigo, github 的 star 數高達2042, fork 的有451個, 它在靜態部落格網站中的應用處處可見.在這裡首先感謝原作者.

然而它的定位是僅支援 IE10+ 等現代瀏覽器。既然不需要支援老版本瀏覽器, 在前端發展迅猛的今天, 已經有許多技術能夠讓網址更快, 所以我用VuePress來重寫了它. 其實 indigo 的原作者已經在用 vuepress 重寫了, 但是專案一直沒有進展, 所以我接過了這個任務, 最後重寫的效果是挺滿意的.

可以看看下面,本主題在我的有 51 篇部落格筆記下, 部署在 github page, 在手機 4G 網路下的載入速度gif 圖,網頁載入速度非常快,更快的是,網頁載入完成後,此後每個頁面的開啟速度,都是彷彿在點選本地檔案.

具體感受可以點選我的部落格網站來親身感受, 部署在 github page 下, 國內請可以點選碼雲的 page 地址

demo.gif

正如VuePress文件所說:

每一個由 VuePress 生成的頁面都帶有預渲染好的 HTML,也因此具有非常好的載入效能和搜尋引擎優化(SEO)。

用 Lighthouse 來測試網站中, SEO 一直都是100 ,打包後的大小也比起原主題小了許多.

k29TJO.md.png

巧妙之處

載入快的原因還在於是先在本地編譯中把資料寫進相應的 js 檔案,

fs.writeFile(
  `${dataPath}/search.js`,
  `export default ${JSON.stringify(search, null, 2)};`,
  error => {
    if (error)
      return console.log('寫入搜尋search檔案失敗,原因是' + error.message);
    console.log('寫入搜尋search檔案成功');
  }
);
複製程式碼

然後在網頁被開啟時, 在 vue.js 的生命週期 created 中, 結合 webpack 的 import()語法匯入相應存放資料的 js 檔案.


  created() {
    import(/* webpackChunkName: "search" */ "Data/search.js").then(search => {
      this.search = search.default;
    });
  },
複製程式碼

webpack 會把程式碼分割,按需去利用 jsonp 去請求 js 檔案, 這樣我們就能在本地編譯時整理所需的資料, 然後模擬了 web APP 開發的流程, 頁面先到達呈現, 資料後請求.而不用怕我們所需要的資料和網頁一起一次發過來,讓網頁載入速度緩慢

最後利用 vue 強大的 MVVM, 因為資料都有了, 此後的頁面幾乎是立即渲染, 即點即開.

這是我探索出來對沒有後端的靜態網站的一種很好的效能優化.

您換主題的理由

  • 更快更小,
  • 改進我在一年的的使用中感受到的原主題一些互動和外觀, 例如刪除分享功能, 移除了打賞功能, 增加移動端文章目錄導航等等
  • 更加容易自定義, vuepress 的主題和外掛很靈活,只要您會 Vue, 就能利用相關知識修改原主題, 和平時工作中寫的頁面和 APP 差不多
  • 居於本地資料的全文搜尋
  • 擁抱 vue, 然後能享用它的生態, 例如元件庫, 本主題就利用了 element ui
  • 享用 vuepress 的 Markdown 擴充 , 例如在 Markdown 中 使用 Vue,自定義文章摘要
  • 理論上非常好的 SEO
  • 相容 hexo 原主題寫的 markdwon 檔案, 不用修改即可搬遷移到本主題, 前提是您原來檔案有遵守原主題的規則, 例如在檔案頂部有包含 YAML front matte
---
title: 【讀書筆記】《JavaScript權威指南》第7章陣列
date: 2018-11-08 04:10:03
tags: [讀書筆記, 《JavaScript權威指南》]
---
複製程式碼
  • 已經發布到 npm, 只需要下載即可, 還提供一套模板檔案結構, 下載依賴後立即可以使用, 還提供了相關操作的 shell 檔案,雙擊即可,幾分鐘就能有自己的部落格
  • 內建評論功能
  • ......

瀏覽器相容性

由於部落格面向的群體比較都是技術人員, 所以本主題只在最新版的谷歌瀏覽器和火狐瀏覽器測試無誤

vuepress 預設有編譯一些對老版本瀏覽器的相容, 具體控制請看它官網配置

我寫了很詳細的文件, 趕快去體驗一下vuepress-theme-indigo-material吧, 如果覺得不錯, 您能給我一個star嗎?

github地址:github.com/zhhlwd/vuep…

相關文章