Omi應用md2site-0.5.0發佈-支持動態markdown拉取解析

来源:http://www.cnblogs.com/iamzhanglei/archive/2017/03/15/6553062.html
-Advertisement-
Play Games

寫在前面 Md2site是基於 "Omi" 的一款Markdown轉網站工具,使用簡單,生成的文件輕巧,功能強大。 官網: "http://alloyteam.github.io/omi/md2site/" Github: "https://github.com/AlloyTeam/omi/tree ...


寫在前面

Md2site是基於Omi的一款Markdown轉網站工具,使用簡單,生成的文件輕巧,功能強大。

在使用之前的版本的時候,你會發現體驗非常好?為什麼非常好?因為頁面間的切換是無刷新!
無刷新的原理就是,所有的markdown都會被webpack打包到js里,只要在js動態require就行。

這樣帶來的一個問題便是:如果有海量的markdown的時候,首次載入的時間非常長。

怎麼解決?支持動態拉取和解析markdown~~

使用姿勢

$ npm install md2site -g
$ md2site init your_project_name
$ cd your_project_name
$ npm run dev
$ npm run dist

所有命令都是和以前一樣的。接下來,打開project.js:

module.exports = {
    cdn : '',
    async: true
}
  • 你把async改成true就代表會生成一個非同步拉取和解析markdown的網站
  • 你把async改成false就代表會生成一個完全無刷新的網站

夠方便吧!!一鍵配置!!

原理解析

防止webpack打包markdown

當我們設置async為true的時候,不是希望webpack把markdown打包入js里的,所以在webpack config做瞭如下操作:

var proj_config = require('./project.js');
if(proj_config.async) {
    config.module.loaders[3].exclude =  /\.md$/;
}

其中config.module.loaders[3]就是配置的markdown loader。exclude就代表把相關的正則匹配到的文件直接給無視掉。

動態載入markdown

 loadMarkdown(url,callback) {
     var xobj = new XMLHttpRequest();
     xobj.open('GET', url, true); 
     xobj.onreadystatechange = function () {
         if (xobj.readyState == 4 && xobj.status == "200") {
             callback(xobj.responseText);
         }
     };
     xobj.send(null);
 }

載入完後直接交給remarkable解析成HTML,remarkable解析成HTML的速度超快到你無法感知,所以提前生成好HTML不是非常必要。

Async Update

asyncUpdate() {
    this.loadMarkdown("../../docs/" + this.data.lan + "/" + this.data.name + ".md",(md)=>{
        this.data.html = this.md.render(md);
        this.update();
    })
}

非同步的刷新組件。

詳細的代碼可以看這裡

Github

歡迎使用~~


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 當我們在系統範圍內部署大量的微服務時,一個新的挑戰產生了,單體應用部署時不會發生。這篇文章將針對這些新的挑戰,在系統範圍內部署大量微服務時定義一套操作模型(operations model)。這篇文章分為如下幾個部分: 前提條件;擴展;問題;需要的組件;參考模型;下一步; ...
  • 什麼是白話? 今天我不陳述白話的又由來,也不陳述白話的概念,我們主要說白話到底是一個什麼東西,我認為的白話的呢,通俗的講就是大家都能聽的懂得,不會產生歧義的。此話怎麼講呢?比如“你吃了麽?”你絕對不會回答"我從北京來"。這是明顯的所問非所答。我所謂的白話,淺顯通俗,在語言上,生動、潑辣、粗獷、生活氣 ...
  • 序言 清風萬里的季節,周末本該和親人朋友一起消遣這爛漫的花花草草,或是懶洋洋的曬個太陽聽聽風聲鳥鳴。無奈工作使然,理想使然,我回到啦公司,敲起啦鍵盤,擼起啦代碼,程式狗的世界一片黯然,一片黯然,願天下所有努力的程式狗都夢想成真吧!! 回到正題,為什麼搭建rabbitmq集群?rabbitmq集群有那 ...
  • 一、為什麼需要線程模型? 記得幾年前,自己寫高精度演算法時,因為需要一個線程安全的後臺(用來保存一些信息),便手動寫了一個線程本地存儲(TLS)(雖然,後來因為改了計算模型,棄用了);再後來,因為記憶體池的需要,亦手動再寫了一個線程本地存儲(TLS);很好,這樣一來同一個庫里,竟然有兩套相同的TLS;於 ...
  • 微服務要求 服務協作 服務治理 服務治理 1 懷疑第三方 堅持一條信念:“所有第三方服務都不可靠”,不管第三方什麼天花亂墜的承諾。基於這樣的信念,我們需要有以下行動。 1.1 有兜底,制定好業務降級方案 如果第三方服務掛掉怎麼辦?我們業務也跟著掛掉?顯然這不是我們希望看到的結果,如... ...
  • 本文地址 點擊關註微信公眾號 wenyuqinghuai 分享提綱: 1. 概述 2. UML類圖 3. UML時序圖 4. 參考資料 分享提綱: 1. 概述 2. UML類圖 3. UML時序圖 4. 參考資料 1.概述 1.1)百度百科: 又稱統一建模語言或標準建模語言,是始於1997年一個OM ...
  • 隨筆記錄,以供以後參考 1.生成CSR和Key。IIS里也可以生成。生成網址:http://tools.globalsign.cn/#/generator-csr CSR就是Certificate Secure Request證書請求文件。要證明網站是可信的,數據傳輸是加密的,就需要由CA機構頒發證 ...
  • 我們經常利用按鈕進行一些頁面值的處理工作,但是預設的邏輯造成,每次新填報的值,需要點擊下空白區域或是執行某個其他操作才可以被正確讀取,那麼我們如何處理呢? ...
一周排行
    -Advertisement-
    Play Games
  • 示例項目結構 在 Visual Studio 中創建一個 WinForms 應用程式後,項目結構如下所示: MyWinFormsApp/ │ ├───Properties/ │ └───Settings.settings │ ├───bin/ │ ├───Debug/ │ └───Release/ ...
  • [STAThread] 特性用於需要與 COM 組件交互的應用程式,尤其是依賴單線程模型(如 Windows Forms 應用程式)的組件。在 STA 模式下,線程擁有自己的消息迴圈,這對於處理用戶界面和某些 COM 組件是必要的。 [STAThread] static void Main(stri ...
  • 在WinForm中使用全局異常捕獲處理 在WinForm應用程式中,全局異常捕獲是確保程式穩定性的關鍵。通過在Program類的Main方法中設置全局異常處理,可以有效地捕獲並處理未預見的異常,從而避免程式崩潰。 註冊全局異常事件 [STAThread] static void Main() { / ...
  • 前言 給大家推薦一款開源的 Winform 控制項庫,可以幫助我們開發更加美觀、漂亮的 WinForm 界面。 項目介紹 SunnyUI.NET 是一個基於 .NET Framework 4.0+、.NET 6、.NET 7 和 .NET 8 的 WinForm 開源控制項庫,同時也提供了工具類庫、擴展 ...
  • 說明 該文章是屬於OverallAuth2.0系列文章,每周更新一篇該系列文章(從0到1完成系統開發)。 該系統文章,我會儘量說的非常詳細,做到不管新手、老手都能看懂。 說明:OverallAuth2.0 是一個簡單、易懂、功能強大的許可權+可視化流程管理系統。 有興趣的朋友,請關註我吧(*^▽^*) ...
  • 一、下載安裝 1.下載git 必須先下載並安裝git,再TortoiseGit下載安裝 git安裝參考教程:https://blog.csdn.net/mukes/article/details/115693833 2.TortoiseGit下載與安裝 TortoiseGit,Git客戶端,32/6 ...
  • 前言 在項目開發過程中,理解數據結構和演算法如同掌握蓋房子的秘訣。演算法不僅能幫助我們編寫高效、優質的代碼,還能解決項目中遇到的各種難題。 給大家推薦一個支持C#的開源免費、新手友好的數據結構與演算法入門教程:Hello演算法。 項目介紹 《Hello Algo》是一本開源免費、新手友好的數據結構與演算法入門 ...
  • 1.生成單個Proto.bat內容 @rem Copyright 2016, Google Inc. @rem All rights reserved. @rem @rem Redistribution and use in source and binary forms, with or with ...
  • 一:背景 1. 講故事 前段時間有位朋友找到我,說他的窗體程式在客戶這邊出現了卡死,讓我幫忙看下怎麼回事?dump也生成了,既然有dump了那就上 windbg 分析吧。 二:WinDbg 分析 1. 為什麼會卡死 窗體程式的卡死,入口門檻很低,後續往下分析就不一定了,不管怎麼說先用 !clrsta ...
  • 前言 人工智慧時代,人臉識別技術已成為安全驗證、身份識別和用戶交互的關鍵工具。 給大家推薦一款.NET 開源提供了強大的人臉識別 API,工具不僅易於集成,還具備高效處理能力。 本文將介紹一款如何利用這些API,為我們的項目添加智能識別的亮點。 項目介紹 GitHub 上擁有 1.2k 星標的 C# ...