CommonMark 使用教程:將 Markdown 語法轉(zhuǎn)成 Html
Markdown寫作
從 2016年 開始寫博客,我的寫作方式一直在改變,準(zhǔn)確的說一直在進(jìn)步,因?yàn)樾试絹碓礁摺?/p>
最初在 CSDN 上寫東西時(shí)非常蹩腳,在他們編輯器上寫點(diǎn)然后調(diào)整格式,再寫,碰到圖片還得將圖片插入進(jìn)去,調(diào)整圖片大小位置等等,調(diào)整完繼續(xù)寫。
效率非常低。
后面了解到 Markdown ,改用 MD 寫東西,效率快很多。后面在 Markdown 基礎(chǔ)上慢慢優(yōu)化找到自己的寫作方式。
一般我用 MD 語法寫完后,得到的是一堆帶 MD 符號(hào)的文字,以下簡稱 MD文本。
然后會(huì)通過工具轉(zhuǎn)成對(duì)應(yīng) Html 標(biāo)記文本,復(fù)制到博客編輯框中,這就是最后顯示的文章。
到這一步不知道大家發(fā)現(xiàn)沒,假設(shè)我們能通過代碼將 MD文本 轉(zhuǎn)成對(duì)應(yīng)的 Html文本,這樣只要我們能獲取到文章的 MD文本,也就獲取到文章的最后顯示。
如果我們要做一個(gè)自動(dòng)生產(chǎn)文章的網(wǎng)站,只剩下一步,如何自動(dòng)不斷的獲取 MD文本, 接著就能不斷轉(zhuǎn)成對(duì)應(yīng)文章,然后發(fā)布。如果對(duì)于全是以內(nèi)容為主的網(wǎng)站當(dāng)然沒辦法不斷獲取 MD文本,畢竟內(nèi)容為主,很多東西都不固定。
但如果網(wǎng)站是下載站呢?下載站主要是提供文件下載,內(nèi)容只是對(duì)文件的簡單介紹,基本就是百度百科內(nèi)容,整個(gè)文章其實(shí)已經(jīng)固定,有一定規(guī)律,這樣是有可能會(huì)不斷獲取 MD文本。
以上內(nèi)容都是在說明 CommonMark的重要性。
CommonMark
使用起來很簡單。這里我主要介紹操作其中一些標(biāo)簽的方法,大家可以舉一反三,自定義其他各種標(biāo)簽。這里我舉例兩個(gè)標(biāo)簽的自定義: 圖片,超鏈接。
- 因?yàn)?CommonMark 默認(rèn)轉(zhuǎn)成的 Html 是不會(huì)帶圖片大小和位置的。
- 超鏈接也是,默認(rèn)轉(zhuǎn)成后點(diǎn)擊鏈接會(huì)在本網(wǎng)頁跳轉(zhuǎn)到超鏈接網(wǎng)頁,我希望的效果是點(diǎn)擊超鏈接后,會(huì)在瀏覽器另開一個(gè)網(wǎng)頁打開。這樣對(duì)網(wǎng)站的留存率會(huì)好點(diǎn)吧。
Maven依賴
<dependency> <groupId>com.atlassian.commonmark</groupId> <artifactId>commonmark</artifactId> <version>0.11.0</version> </dependency>
自定義標(biāo)簽屬性操作類
static class PAttributeProvider implements AttributeProvider { @Override public void setAttributes(Node node, String tagName, Map<String, String> attributes) { if (node instanceof Image) { attributes.put("style", "width:150px;height:200px;position:relative;left:50%;margin-left:-100px;"); } if(node instanceof Link){ attributes.put("target", "_blank"); } } }
如上我操作了兩個(gè)標(biāo)簽:Image 和 Link,分別在標(biāo)簽中加了一些屬性。這里我只是舉例,不一定要跟著這樣操作,不操作標(biāo)簽也行。
這一步的目的是為了說明有這個(gè)方法而已。
markdown轉(zhuǎn)成html
Parser parser = Parser.builder().build(); Node document = parser.parse(md); HtmlRenderer renderer = HtmlRenderer.builder(). attributeProviderFactory(new AttributeProviderFactory() { @Override public AttributeProvider create(AttributeProviderContext attributeProviderContext) { return new PAttributeProvider(); } }). build(); String mdHtml = renderer.render(document);
ok,已經(jīng)轉(zhuǎn)成 html 了,方法使用就是這么簡單。
以上就是本文的全部內(nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
- 一文詳解JavaScript?如何將?HTML?轉(zhuǎn)成?Markdown
- vue導(dǎo)入.md文件的步驟(markdown轉(zhuǎn)HTML)
- 使用jupyter notebook將文件保存為Markdown,HTML等文件格式
- python使用html2text庫實(shí)現(xiàn)從HTML轉(zhuǎn)markdown的方法詳解
- 將Swagger2文檔導(dǎo)出為HTML或markdown等格式離線閱讀解析
- python 自動(dòng)化將markdown文件轉(zhuǎn)成html文件的方法
- Markdown-it將Markdown文本解析轉(zhuǎn)換為HTML
相關(guān)文章
SpringBoot使用validation進(jìn)行自參數(shù)校驗(yàn)的方法
在SpringBoot項(xiàng)目中,利用validation依賴可以通過注解方式校驗(yàn)數(shù)據(jù)庫交互參數(shù),提高代碼可讀性和維護(hù)性,此方法避免了硬編碼校驗(yàn)規(guī)則,方便后期規(guī)則變更,本文給大家介紹的非常詳細(xì),感興趣的朋友跟隨小編一起看看吧2024-09-09Springboot中如何通過yml為實(shí)體類注入屬性
這篇文章主要介紹了Springboot中如何通過yml為實(shí)體類注入屬性,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2022-05-05SpringBoot+kaptcha實(shí)現(xiàn)驗(yàn)證碼花式玩法詳解
這篇文章主要想和大家聊聊kaptcha的用法,畢竟這個(gè)已經(jīng)有16年歷史的玩意還在有人用,說明它的功能還是相當(dāng)強(qiáng)大的,感興趣的小伙伴可以了解一下2022-05-05Java數(shù)據(jù)結(jié)構(gòu)之順序表的實(shí)現(xiàn)
線性表(linear?list)是n個(gè)具有相同特性的數(shù)據(jù)元素的有限序列。順序表是常見的線性表之一,本文將詳細(xì)講講順序表的原理與實(shí)現(xiàn),需要的可以參考一下2022-08-08MyBatis執(zhí)行動(dòng)態(tài)SQL的方法
今天小編就為大家分享一篇關(guān)于MyBatis執(zhí)行動(dòng)態(tài)SQL的方法,小編覺得內(nèi)容挺不錯(cuò)的,現(xiàn)在分享給大家,具有很好的參考價(jià)值,需要的朋友一起跟隨小編來看看吧2018-12-12Transactional注解導(dǎo)致Spring Bean定時(shí)任務(wù)失效的解決方法
這篇文章主要介紹了Transactional注解導(dǎo)致Spring Bean定時(shí)任務(wù)失效的解決方法,文中通過代碼示例介紹的非常詳細(xì),對(duì)大家解決問題有一定的幫助,需要的朋友可以參考下2024-10-10