攤牌是基於約翰·格魯伯(John Gruber)的原始作品的HTML轉換器的JavaScript標記。攤牌可以使用客戶端(在瀏覽器中)或服務器端(帶有node.js)。
在此處查看現場演示:http://demo.showdownjs.com/
如您所知,Showdownjs是一個免費的庫,它將永遠保持自由。但是,維護和改進圖書館花費時間和金錢。
如果您喜歡我們的作品並發現我們的圖書館有用,請通過PayPal捐款!您的貢獻將不勝感激,並幫助我繼續開發這個很棒的圖書館。
Showdownjs V 2.0根據MIT許可發布。以前的版本以BSD發布。
您可以直接從發行版中下載最新版本的Tarball。
bower install showdown
npm install showdown
PM> Install-Package showdownjs
Nuget軟件包可以在此處找到。
您還可以使用可用的幾個CDN之一:
jsdelivr
https://cdn.jsdelivr.net/npm/showdown@<version tag>/dist/showdown.min.js
CDNJS
https://cdnjs.cloudflare.com/ajax/libs/showdown/<version tag>/showdown.min.js
UNPKG
https://unpkg.com/showdown/dist/showdown.min.js
注意:用您對Eg 1.9.0
感興趣的實際全長版本替換<version tag>
攤牌已成功測試:
從理論上講,攤牌將在任何支持ECMA 262第三版(JavaScript 1.5)的瀏覽器中起作用。轉換器本身甚至可能在不是網絡瀏覽器的事物中工作,例如Acrobat。沒有保證。
攤牌旨在在任何受支持的node.js版本上使用(請參閱node.js發行時間表。代碼可以與node.js的先前版本一起使用,但沒有做出任何貼心以確保它的功能。
如果您正在尋找攤牌v <1.0.0,則可以在傳統分支中找到它。
您可以檢查完整的更改程序
檢查我們的Wiki頁面以獲取示例和更深入的文檔。
var showdown = require ( 'showdown' ) ,
converter = new showdown . Converter ( ) ,
text = '# hello, markdown!' ,
html = converter . makeHtml ( text ) ;
var converter = new showdown . Converter ( ) ,
text = '# hello, markdown!' ,
html = converter . makeHtml ( text ) ;
兩個示例都應輸出...
< h1 id =" hellomarkdown " > hello, markdown! </ h1 >
您可以通過選項更改Showdown的一些默認行為。
可以設置選項:
設置“全局”選項會影響攤牌的所有實例
showdown . setOption ( 'optionKey' , 'value' ) ;
設置“本地”選項僅影響指定的轉換器對象。可以設置本地選項:
通過構造函數
var converter = new showdown . Converter ( { optionKey : 'value' } ) ;
通過setOption()方法
var converter = new showdown . Converter ( ) ;
converter . setOption ( 'optionKey' , 'value' ) ;
攤牌提供2種方法(本地和全局)來檢索先前的集合選項。
// Global
var myOption = showdown . getOption ( 'optionKey' ) ;
//Local
var myOption = converter . getOption ( 'optionKey' ) ;
// Global
var showdownGlobalOptions = showdown . getOptions ( ) ;
//Local
var thisConverterSpecificOptions = converter . getOptions ( ) ;
您可以使用以下方式獲得攤牌的默認選項
var defaultOptions = showdown . getDefaultOptions ( ) ;
OmitextrawlIncodeBlocks :( boolean)[默認錯誤]省略了代碼塊中的尾隨newline。前任:
這:
< code > < pre > var foo = 'bar';
</ pre > </ code >
變成了:
< code > < pre > var foo = 'bar'; </ pre > </ code >
Noheaderid :(布爾值)[默認錯誤]禁用自動生成標題ID。設置為TRUE覆蓋Prefixheaderid
CustomizedHeaderId :(布爾值)[默認錯誤]將捲曲括號中的文本用作標頭ID。 (既然v1.7.0)示例:
## Sample header {real-id} will use real-id as id
ghcompatibleheaderid :( boolean)[默認false]生成與github樣式兼容的標頭ID(空間被破折號替換,並刪除了一堆非字母數字字符) (因為v1.5.5)
prefixheaderid :( string/boolean)[默認錯誤]在生成的標頭ID中添加前綴。傳遞字符串將前綴該字符串到標題ID。設置為true
將添加通用的“部分”前綴。
RAWPREFIXHEADERID :( boolean)[默認錯誤]將此選項設置為true將阻止攤牌修改前綴。這可能會導致畸形的ID(例如,如果“前綴中使用char”。
RAWHEADERID :( boolean)[默認錯誤]僅刪除空格,並且“從生成的標頭ID(包括前綴)中,用dashes( - )。警告:這可能會導致畸形ID (因為v1.7.3)
headerLevelStart :( integer)[默認1]設置標題啟動級別。例如,將此設置為3表示
# foo
將被解析為
< h3 > foo </ h3 >
parseimgdimensions :( boolean)[默認錯誤]啟用了從Markdown語法中設置圖像尺寸的支持。示例:
 simple, assumes units are in px
 sets the height to "auto"
 Image with width of 80% and height of 5em
SimplifiedAutolink :( boolean)[默認錯誤]打開此選項將啟用自動鏈接到URL。這意味著:
some text www.google.com
將被解析為
< p > some text < a href =" www.google.com " > www.google.com </ a >
DefkudetrailingPunctuationFromurls :( boolean)[默認錯誤]此選項將尾隨標點符號排除在自動鏈接URL中。標點符號不包括: . ! ? ( )
。僅當簡化的autolink選項設置為true
時才適用。
literalmidwordunderscores :( boolean)[默認錯誤]打開此操作將停止攤牌,從單詞中間解釋為<em>
和<strong>
,而是將它們視為字面的下劃線。
例子:
some text with __ underscores __ in middle
將被解析為
< p > some text with__underscores__in middle </ p >
lintalmidwordasterisks :(布爾值)[默認錯誤]打開此操作將停止攤牌,從單詞中間解釋為<em>
和<strong>
,而是將它們視為字面的星號。
罷工:(布爾)[默認錯誤]啟用對罷工語法的支持。 ~~strikethrough~~
AS <del>strikethrough</del>
表:(布爾值)[默認錯誤]啟用對錶語法的支持。例子:
| h1 | h2 | h3 |
| :------ | :-------: | --------: |
| 100 | [ a ] [ 1 ] | ![ b ] [ 2 ] |
| * foo * | ** bar ** | ~~ baz ~~ |
有關更多信息,請參見Wiki
tableSheaderId :( boolean)[默認錯誤]如果啟用啟用將ID屬性添加到表標頭標籤。
ghcodeblocks :(布爾值)[默認為true]啟用對GFM代碼塊樣式的支持。
任務列表:(布爾值)[默認錯誤]啟用對GFM任務清單的支持。例子:
- [x] This task is done
- [ ] This is still pending
SmoothlivePreview :( boolean)[默認錯誤]由於輸入不完整而導致實時預覽中的奇怪效果
smartIndentationFix :( boolean)[默認錯誤]試圖在縮進代碼中智能解決與ES6模板字符串有關的凹痕問題。
disableforced4spaceSindentedSublists :( boolean)[默認錯誤]禁用了將訂閱者縮進4個空間以嵌套的訂閱者的要求,從而有效地恢復到2或3個空間足夠的舊行為。 (由於v1.5.0)
SimpleLineBreaks :( boolean)[默認錯誤]解析行的斷裂如<br>
,而無需在行末端需要2個空間(自v1.5.1)
a line
wrapped in two
變成:
< p > a line < br >
wrapped in two </ p >
需要spaceBeforeheadText :( boolean)[默認錯誤]使#
和標題文本強制性之間添加一個空間(因為v1.5.3)
ghmentions :(布爾值)[默認錯誤]啟用github @entrions,鏈接到所述用戶名(自v1.6.0)
GhmentionsLink :(String)[默認https://github.com/{u}
]更改@Mentions生成的鏈接。攤牌將用用戶名替換{u}
。僅在啟用Ghmentions選項時適用。示例: @tivie
with ghmentionsoption設置為//mysite.com/{u}/profile
將導致<a href="//mysite.com/tivie/profile">@tivie</a>
encodeemails :( boolean)[默認為true]啟用電子郵件地址通過使用字符實體編碼,將ASCII電子郵件地址轉換為其等效小數實體。 (由於v1.6.1)
注意:在版本1.6.1之前,電子郵件將始終通過DEC和十六進制編碼來混淆。
OpenLinkSinNewwindow :( boolean)[默認false]打開新Windows中的所有鏈接(通過將屬性target="_blank"
添加到<a>
標籤中) (因為v1.7.0)
backslashescapeshtmltags :( boolean)[默認false]支持HTML標籤逃脫。例如: <div>foo</div>
(由於v1.7.2)
表情符號:(布爾值)[默認錯誤]啟用表情符號支持。例如: this is a :smile: emoji
有關可用表情符號的更多信息,請參見https://github.com/showdownjs/showdown/wiki/emojis (自v.1.8.0起)
下劃線:(布爾值)[默認錯誤]實驗功能可以支持下劃線。語法是雙重或三重下指數: __underlined word__
。啟用了此選項,下劃線不再分析<em>
和<strong>
。
省略號:(布爾值)[默認為true]將三個點替換為省略號的unicode字符。
完整的Htmldocument :( boolean)[默認錯誤]輸出一個完整的HTML文檔,包括<html>
, <head>
和<body>
標籤,而不是HTML片段。 (自v.1.8.5以來
元數據:(布爾值)[默認錯誤]啟用對文檔元數據的支持(定義在«««
and »»»
之間或---
和 - 和---
)之間的文檔頂部。 (自v.1.8.5以來
var conv = new showdown . Converter ( { metadata : true } ) ;
var html = conv . makeHtml ( someMd ) ;
var metadata = conv . getMetadata ( ) ; // returns an object with the document metadata
SplitAdjacentBlockQuotes :(boolean)[默認錯誤]拆分相鄰的塊塊塊。(自v.1.8.6)
Morestyling :(布爾值)[默認錯誤]為CSS樣式添加了一些有用的類。 (由於v2.0.1)
task-list-item-complete
添加到GFM任務列表中的完成任務項目中。注意:請注意,在版本1.6.0之前,所有這些選項默認情況下在CLI工具中被禁用。
您還可以使用口味或預設自動設置正確的選項,因此攤牌的行為就像流行的Markdown口味一樣。
目前,可用以下口味:
showdown . setFlavor ( 'github' ) ;
converter . setFlavor ( 'github' ) ;
攤牌還與命令行接口工具捆綁在一起。您可以檢查CLI Wiki頁面以獲取更多信息
Showdownjs項目還通過“插件”與AngularJS無縫集成。請訪問https://github.com/showdownjs/ngshowdown了解更多信息。
如果您正在使用Typescript
與SystemJS集成可以通過第三方“ System-MD”插件獲得。
要快速使用Showdownjs作為VUE組件,您可以檢查Vue-showdown。
攤牌不會消毒輸入。這是通過設計,因為Markdown依靠它允許將某些功能正確解析為HTML。但是,這意味著XSS注入非常有可能。
請參閱Wiki文章Markdown的XSS漏洞(以及如何減輕它)以獲取更多信息。
攤牌允許通過擴展加載其他功能。 (您可以在此處找到已知攤牌擴展名的列表)您還可以找到一個樣板,以在此存儲庫中創建自己的擴展名
< script src = "showdown.js" / >
< script src = "twitter-extension.js" / >
var converter = new showdown . Converter ( { extensions : [ 'twitter' ] } ) ;
var showdown = require ( 'showdown' ) ,
myExtension = require ( 'myExtension' ) ,
converter = new showdown . Converter ( { extensions : [ 'myExtension' ] } ) ;
構建存儲庫的克隆很容易。
預先Quesite:Node.js V12,NPM和NPX必須安裝。
運行npm install
。
運行npx grunt build
(請參閱Gruntfile.js
)。此命令:
dist
文件夾中創建可分佈和縮小的文件。 有一套需要node.js的測試套件。安裝節點後,將以下命令從項目root運行以安裝依賴項:
npm install
一旦安裝,可以使用:
npm test
可以輕鬆添加新的測試用例。創建一個Markdown文件(以.md
結尾),其中包含要測試的標記。創建一個完全相同的名稱的.html
文件。當使用mocha
執行測試時,它將自動測試。
如果您想貢獻,請閱讀以下快速指南。
您可以通過提交問題請求新功能。如果您想實現新功能,請隨時發出拉動請求。
PR很棒。但是,在提交拉動請求之前,請考慮以下準則:
搜索github查看與您的提交有關的打開或封閉請求請求。您不想重複努力。
發出更改代碼的PR時,請根據開發在新的GIT分支中進行更改:
git checkout -b my-fix-branch develop
在提交之前運行完整的測試套件並確保所有測試通過(顯然= P)。
嘗試遵循我們的編碼樣式規則。打破它們可以防止PR通過測試。
避免在同一拉的請求中解決多個問題。最好打開多個小PR,而不是很難審查大型PR。
如果PR引入新功能或解決問題,請添加適當的測試用例。
我們使用常規的提交註釋來生成遵循常規ChangElog規格的更改程序。如果您的提交消息遵守這些提交指南,這將非常有幫助。
不要忘記將您的名稱添加到Credits.md文件中。我們喜歡給予信用。
如果我們建議更改,那麼:
git rebase develop -i
git push origin my-fix-branch -f
合併拉動請求後,您可以安全地刪除分支。
如果您有時間為這個項目做出貢獻,我們會感到您有義務為此獲得信譽。這些規則使我們能夠更快地審查您的公關,並在您的GitHub個人資料中為您提供適當的信用。我們預先感謝您的貢獻!
我們正在尋找會員來幫助維持攤牌。請參閱此問題以對此說明表示興趣或評論。
https://github.com/showdownjs/showdown/blob/master/master/credits.md上的完整信用列表
攤牌由: