據(jù)機制)
移動開發(fā)【免費下載鏈接】markorText editor - Notes ToDo (for Android) - Markdown, todo.txt, plaintext, math, ..項目地址https://gitcode.com/gh_mirrors/ma/markor點擊查看免費下載output_article基于 Markor 的 Jekyll 博客寫作指南從模板文件到 Front Matter 渲染機制導讀本文以 Markor 內(nèi)置模板 app/src/main/assets/templates/jekyll-post.md 為切入點系統(tǒng)講解在 Android 設備上使用 Markor 編寫 Jekyll 博客文章的完整工作流從模板中的 YAML Front Matter前置元數(shù)據(jù)字段含義、Markor 內(nèi)置的 Jekyll 語法擴展到新建文件時的模板加載與占位符替換機制。讀完本文你將掌握如何在 Markor 中直接產(chǎn)出符合 Jekyll 規(guī)范、可直接推送至 GitHub Pages 等靜態(tài)站點的 Markdown 博文并能理解預覽模式下 Front Matter 被解析和渲染的底層原理。一、模板全貌一份為 Jekyll 預置的 Markdown 博文骨架Markor 在應用內(nèi)置資產(chǎn)目錄assets/templates下隨包分發(fā)了一批文檔模板AppSettings.java 中的getBuiltinTemplates()通過AssetManager.list(templates)枚舉并讀取該目錄下的全部文件其中 jekyll-post.md 專為 Jekyll 靜態(tài)博客定制。模板完整內(nèi)容如下--- layout: post tags: [] categories: [] #date: 2019-06-25 13:14:15 #excerpt: #image: BASEURL/assets/blog/img/.png #description: #permalink: title: title ---可以看到這是一份形簡意豐的骨架正文區(qū)為空真正有價值的是文件頂部的 YAML Front Matter 塊。它與 Jekyll 官方對博文文件的要求完全對齊——Jekyll 要求每篇文章在文件開頭用---包裹的 YAML 塊聲明元數(shù)據(jù)Markor 恰好把這一步做成了開箱即用的模板。值得注意的是倉庫中還存在同主題的 AsciiDoc 版本 app/src/main/assets/templates/jekyll-post.adoc以及用于演示的實際示例文件 samples/2029-01-01-jekyll-post.md、samples/2029-01-01-jekyll-post.adoc。示例文件名帶2029-01-01日期前綴正是 Jekyll 標準的文章命名約定見本文第五節(jié)。二、Front Matter 字段逐項解析模板中的每一行字段都有明確的 Jekyll 語義下面逐一說明其作用、取值方式與在 Markor 中的表現(xiàn)。2.1 布局與標題必填核心字段字段模板默認值作用layoutpost指定 Jekyll 使用的布局模板對應站點_layouts/post.html幾乎所有博文都應保持posttitletitle文章標題會在站點列表頁、RSS 與title標簽中展示寫作時務必替換其中title建議保留單引號包裹——Jekyll 的 YAML 解析器基于 Ruby對未加引號、含特殊字符的字符串容易誤解析引號是安全寫法。2.2 標簽與分類內(nèi)容組織字段tags: [] categories: []兩個字段默認是空數(shù)組但取值方式不同tags文章標簽可寫為[markdown, android]或 YAML 列表形式tags: - markdown - android在 Markor 的預覽渲染中tags會被特殊處理源碼 MarkdownTextConverter.java 中有一條專門的分支——當tags恰好只有一個元素且形如[tag1,tag2,tag3]時會先按逗號拆分、再通過LinkedHashSet去重保序最終展開為獨立的標簽項同時模板的 CSSCSS_FRONTMATTER會為標簽渲染圓角膠囊樣式。categories文章分類Jekyll 用它生成分類歸檔頁支持層級結(jié)構(gòu)如[tech, android]。2.3 被注釋的可選字段按需啟用模板用#注釋保留了四個常用可選字段取消注釋即可啟用字段默認示例用途date2019-06-25 13:14:15手動固定發(fā)布時間不設置時 Jekyll 使用文件名中的日期前綴excerpt自定義文章摘要不設置時 Jekyll 自動截取正文開頭imageBASEURL/assets/blog/img/.png封面圖路徑注意BASEURL是占位符應替換為站點根路徑如/assets/blog/img/xxx.pngpermalink空自定義文章 URL如/blog/my-post留空時使用默認的/:categories/:year/:month/:day/:title規(guī)則description空頁面描述通常用于 SEO meta 標簽這種默認必填字段開啟、可選字段注釋保留的設計讓模板既能開箱即用又保留了完整的擴展空間。三、Markor 如何解析與渲染 Jekyll 語法模板之所以能無縫工作是因為 Markor 的 Markdown 轉(zhuǎn)換器在底層集成了對 Jekyll 語法的完整支持。證據(jù)集中在 MarkdownTextConverter.java3.1 解析器擴展注冊轉(zhuǎn)換器基于 flexmark-java 構(gòu)建在flexmarkExtensions列表中顯式注冊了與 Jekyll 直接相關的三個擴展源碼 L126-L147JekyllTagExtension.create(), // 識別 {% ... %} 標簽語法 JekyllFrontMatterExtension.create(), // 識別 --- 包裹的 Front Matter 塊 YamlFrontMatterExtension.create(), // 將 Front Matter 解析為結(jié)構(gòu)化 YAML這意味著即使沒有開啟任何額外選項Markor 在預覽模式中也能正確把---之間的 YAML 塊從正文中剝離出來解析而不會把它誤當作水平分割線或正文文本。3.2 Front Matter 的可視化渲染Markor 默認不會把 Front Matter 原樣顯示在預覽中而是按需渲染成結(jié)構(gòu)化信息條。其邏輯位于 MarkdownTextConverter.java L216-L241只有當文檔以---開頭且滿足以下任一條件時才觸發(fā)解析用戶在設置中配置了要顯示的 YAML 鍵AppSettings.getMarkdownShownYamlFrontMatterKeys()正文中出現(xiàn)了{{ post.xxx }}形式的令牌YAML_FRONTMATTER_TOKEN_PATTERN正則匹配。通過extractYamlAttributes()用YamlFrontMatterExtension單獨解析得到MapString, ListString形式的鍵值對。僅渲染白名單內(nèi)的屬性每個屬性包裝為front-matter-item容器整體放入.front-matter-container并注入CSS_FRONTMARTTER樣式——這就是預覽中頂部那條標題、標簽膠囊、描述信息條的來源。3.3 正文內(nèi)的{{ post.xxx }}令牌替換這是模板與 Markor 交互最巧妙的一環(huán)。在 Jekyll 站點中正文可以使用{{ page.title }}、{{ page.tags }}等 Liquid 變量Markor 在本地預覽時無法運行 Jekyll于是實現(xiàn)了近似機制源碼 replaceTokens() 會掃描正文中的{{ post.attr }}令牌并把對應 YAML 屬性的值經(jīng)過去引號、HTML 轉(zhuǎn)義、--→–破折號處理回填進去最終渲染為高亮的post-item-attr標簽。例如若 Front Matter 中聲明了tags: [markdown, android]正文某處寫入本文標簽{{ post.tags }}預覽時會自動顯示為兩個獨立的標簽條目。這讓你在手機上寫作時就能即時看到標簽、標題等元數(shù)據(jù)最終會以什么形態(tài)出現(xiàn)在頁面上。3.4 Jekyll Liquid 令牌的本地化替代模板注釋與正文中可能出現(xiàn){{ site.time | date: %x }}、{{ site.baseurl }}這類 Liquid 表達式。Markor 在轉(zhuǎn)換時做了兩處替換MarkdownTextConverter.java L299-L300markup markup.replace({{ site.baseurl }}, ..) .replace(TOKEN_SITE_DATE_JEKYLL, TOKEN_POST_TODAY_DATE);{{ site.baseurl }}被替換為..——因為 Markor 中 Jekyll 文章通常存放在_posts目錄該目錄相對于站點根目錄恰好上跳一級圖片等資源引用如因此可正確解析{{ site.time | date: %x }}被替換為{{ post.date_today }}后者在 TextConverterBase.java 中最終被替換為設備當前的本地化日期字符串。這套機制讓 Markor 的預覽與 Jekyll 站點的最終渲染保持一致本地所見即線上所得。四、在 Markor 中使用模板新建博文模板的消費入口是新建文件對話框?qū)创a NewFileDialog.java。4.1 模板加載流程NewFileDialog.java L156-L162 將三部分來源合并進模板下拉框第一項固定為空文件R.string.empty_file接著是用戶在設置中配置的 snippets 目錄下的所有純文本片段文件getSnippetFiles()最后是內(nèi)置模板getBuiltinTemplates()即assets/templates下的全部文件——jekyll-post.md就在這里。4.2 文件名自動生成選中jekyll-post.md模板后對話框會用模板文件名自動建議標題與擴展名jekyll-post.mdNewFileDialog.java L173-L188標題格式可通過格式輸入框定制支持{{title}}占位符與yyyy-MM-ddTHHmmss等日期格式默認規(guī)則見 NewFileDialog.java L244-L257確認后模板內(nèi)容作為新文件內(nèi)容寫入模板名與格式偏好會被記住下次新建同類型文件時自動預選NewFileDialog.java L311-L315。4.3 與 AsciiDoc 模板的對照若你的博客使用 AsciiDocJekyll 同樣支持可對照參考 jekyll-post.adoc它以 My Title起頭用:page-subtitle:、:page-tags:、:page-last-updated:等文檔屬性承載元數(shù)據(jù)并通過ifndef::env-site[]條件塊實現(xiàn)本地預覽顯示副標題、線上 Jekyll 站點不重復顯示的差異化渲染。兩份模板體現(xiàn)了 Markor 對 Markdown / AsciiDoc 雙格式 Jekyll 工作流的完整覆蓋。五、寫作到發(fā)布的完整流程結(jié)合模板與 Markor 的功能一條完整的移動端 Jekyll 寫作鏈路如下新建文件打開新建文件對話框模板選擇jekyll-post.md標題格式可設置為 Jekyll 規(guī)范的yyyy-MM-dd-{{title}}日期前綴便于 Jekyll 識別發(fā)布時間。填寫元數(shù)據(jù)把title: title替換為真實標題按需填寫tags、categories取消注釋date、excerpt、permalink等可選字段。寫作正文利用 Markor 的 Markdown 全語法支持任務列表、表格、腳注、數(shù)學公式 KaTeX、Mermaid 圖表等均由 MarkdownTextConverter.java 注冊的 flexmark 擴展提供需要展示元數(shù)據(jù)時在正文中寫{{ post.tags }}等令牌。本地預覽切換預覽模式Front Matter 會渲染為信息條{{ site.baseurl }}與日期令牌被替換為本地可解析值圖片路徑經(jīng)escapeSpacesInLink()處理空格轉(zhuǎn)%20見 MarkdownTextConverter.java L349-L376。歸檔發(fā)布將文件放入 Jekyll 倉庫的_posts目錄Markor 檢測到_posts/blog/post文件夾時還會自動為預覽注入目錄 TOC見 MarkdownTextConverter.java L244-L259經(jīng) Git 推送后由 Jekyll 構(gòu)建發(fā)布。值得強調(diào)的是模板中注釋字段與文件命名都遵循 Jekyll 官方約定YYYY-MM-DD-title.ext、---定界符、layout必填因此只要不刪改 Front Matter 結(jié)構(gòu)Markor 產(chǎn)出的文件即可直接進入 Jekyll 構(gòu)建流水線無需二次編輯。六、小結(jié)jekyll-post.md雖僅十余行卻是 Markor 面向 Jekyll 博客場景的核心載體它既是可復制的寫作骨架又是測試 Markor Jekyll 語法支持的天然樣例。配合 MarkdownTextConverter.java 中的 Jekyll 擴展注冊、Front Matter 白名單渲染與令牌替換機制以及 NewFileDialog.java 的模板加載流程你完全可以在手機端完成建文件—填元數(shù)據(jù)—寫作—預覽—歸檔的 Jekyll 博客全流程且預覽結(jié)果與線上渲染保持一致。 /output_article贊分享移動開發(fā)【免費下載鏈接】markorText editor - Notes ToDo (for Android) - Markdown, todo.txt, plaintext, math, ..項目地址https://gitcode.com/gh_mirrors/ma/markor點擊查看免費下載相關推薦Jekyll 博客寫作實戰(zhàn)基于 _posts 目錄的純文本博客系統(tǒng)Jekyll 博客寫作實戰(zhàn)基于 _posts 目錄的純文本博客系統(tǒng) 核心主題 Jekyll 是博客感知的靜態(tài)站點生成器其博客功能完全由文本文件驅(qū)動——前端CMS使用 Devbox 搭建可復現(xiàn)的 Jekyll 博客開發(fā)環(huán)境基于 examples/stacks/jekyll 模板使用 Devbox 搭建可復現(xiàn)的 Jekyll 博客開發(fā)環(huán)境基于 examples/stacks/jekyll 模板 本指南以本倉庫 examples/st開發(fā)工具CLIacademicpages.github.io CV 頁面搭建指南基于 Jekyll 的 Markdown 簡歷模板解析academicpages.github.io CV 頁面搭建指南基于 Jekyll 的 Markdown 簡歷模板解析 本篇技術指南圍繞 academicp前端文檔上一篇掌握UnrealPakViewerPak文件解析從入門到精通下一篇UnrealPakViewerUE4資源包解析全攻略——從加密容器到資產(chǎn)洞察創(chuàng)作聲明:本文部分內(nèi)容由AI輔助生成(AIGC),僅供參考