Markdown-it
Bộ phân tích Markdown được thực hiện đúng cách. Nhanh chóng và dễ mở rộng.
- Tuân theo CommonMark spec + thêm các phần mở rộng cú pháp và tính năng tiện ích (tự động liên kết URL, trình soạn thảo).
- Cú pháp có thể tùy chỉnh! Bạn có thể thêm luật mới và thậm chí thay thế những luật đã có.
- Tốc độ cao.
- Safe theo mặc định.
- Cộng đồng viết plugins và other packages trên npm.
Cài đặt
node.js :
npm install markdown-it --save
trình duyệt (CDN):
Ví dụ về việc sử dụng
Xem thêm:
- API documentation – để biết thêm thông tin và ví dụ.
- Development info – cho người viết plugin.
Đơn giản
// node.js, "classic" way:
var MarkdownIt = require('markdown-it'),
md = new MarkdownIt();
var result = md.render('# markdown-it rulezz!');
// node.js, the same, but with sugar:
var md = require('markdown-it')();
var result = md.render('# markdown-it rulezz!');
// browser without AMD, added to "window" on script load
// Note, there is no dash in "markdownit".
var md = window.markdownit();
var result = md.render('# markdown-it rulezz!');
Hiển thị trên một dòng, không bao bọc bởi đoạn văn:
var md = require('markdown-it')();
var result = md.renderInline('__markdown-it__ rulezz!');
Khởi tạo với bộ cài đặt và tùy chọn
(*) Bộ cài đặt xác định sự kết hợp của các luật hoạt động và tùy chọn. Có thể là "commonmark"
, "zero"
hoặc "default"
(nếu bỏ qua). Xem API docs để biết thêm chi tiết.
// commonmark mode
var md = require('markdown-it')('commonmark');
// default mode
var md = require('markdown-it')();
// enable everything
var md = require('markdown-it')({
html: true,
linkify: true,
typographer: true
});
// full options list (defaults)
var md = require('markdown-it')({
html: false, // Enable HTML tags in source
xhtmlOut: false, // Use '/' to close single tags (<br />).
// This is only for full CommonMark compatibility.
breaks: false, // Convert '\n' in paragraphs into <br>
langPrefix: 'language-', // CSS language prefix for fenced blocks. Can be
// useful for external highlighters.
linkify: false, // Autoconvert URL-like text to links
// Enable some language-neutral replacement + quotes beautification
// For the full list of replacements, see https://github.com/markdown-it/markdown-it/blob/master/lib/rules_core/replacements.js
typographer: false,
// Double + single quotes replacement pairs, when typographer enabled,
// and smartquotes on. Could be either a String or an Array.
//
// For example, you can use '«»„“' for Russian, '„“‚‘' for German,
// and ['«\xA0', '\xA0»', '‹\xA0', '\xA0›'] for French (including nbsp).
quotes: '“”‘’',
// Highlighter function. Should return escaped HTML,
// or '' if the source string is not changed and should be escaped externally.
// If result starts with <pre... internal wrapper is skipped.
highlight: function (/*str, lang*/) { return ''; }
});
Tải plugin
var md = require('markdown-it')()
.use(plugin1)
.use(plugin2, opts, ...)
.use(plugin3);
Làm nổi bật cú pháp
Áp dụng làm nổi bật cú pháp cho các khối mã fenced với tùy chọn highlight
:
var hljs = require('highlight.js'); // https://highlightjs.org
// Actual default values
var md = require('markdown-it')({
highlight: function (str, lang) {
if (lang && hljs.getLanguage(lang)) {
try {
return hljs.highlight(str, { language: lang }).value;
} catch (__) {}
}
return ''; // use external default escaping
}
});
Hoặc với việc ghi đè toàn bộ bao (nếu bạn cần gán lớp cho <pre>
):
var hljs = require('highlight.js'); // https://highlightjs.org
// Actual default values
var md = require('markdown-it')({
highlight: function (str, lang) {
if (lang && hljs.getLanguage(lang)) {
try {
return '<pre class="hljs"><code>' +
hljs.highlight(str, { language: lang, ignoreIllegals: true }).value +
'</code></pre>';
} catch (__) {}
}
return '<pre class="hljs"><code>' + md.utils.escapeHtml(str) + '</code></pre>';
}
});
Tạo liên kết tự động
linkify: true
sử dụng linkify-it. Để cấu hình linkify-it, truy cập vào thể hiện linkify thông qua md.linkify
:
md.linkify.set({ fuzzyEmail: false }); // disables converting email to link
API
Nếu bạn định viết plugin, hãy xem Development info.
Các phần mở rộng cú pháp
Nhúng (được kích hoạt mặc định):
- Tables (GFM)
- Strikethrough (GFM)
Thông qua plugin:
- subscript
- superscript
- footnote
- definition list
- abbreviation
- emoji
- custom container
- insert
- mark
- … và others
Quản lý luật
Mặc định, tất cả các luật được kích hoạt, nhưng có thể bị hạn chế bằng tùy chọn. Khi tải plugin, tất cả các luật của nó đều được kích hoạt tự động.
// Activate/deactivate rules, with currying
var md = require('markdown-it')()
.disable([ 'link', 'image' ])
.enable([ 'link' ])
.enable('image');
// Enable everything
md = require('markdown-it')({
html: true,
linkify: true,
typographer: true,
});
Bạn có thể tìm thấy tất cả các luật trong nguồn:
parser_core.js
parser_block.js
parser_inline.js
Đo lường hiệu năng
Đây là kết quả của việc phân tích tệp readme trên MB Pro Retina 2013 (2.4 GHz):
make benchmark-deps
benchmark/benchmark.js readme
Selected samples: (1 of 28)
> README
Sample: README.md (7774 bytes)
> commonmark-reference x 1,222 ops/sec ±0.96% (97 runs sampled)
> current x 743 ops/sec ±0.84% (97 runs sampled)
> current-commonmark x 1,568 ops/sec ±0.84% (98 runs sampled)
> marked x 1,587 ops/sec ±4.31% (93 runs sampled)
Chú ý. Phiên bản CommonMark chạy với simplified link normalizers để so sánh “trung thực” hơn. Sự khác biệt là ≈1.5×.
Như bạn có thể thấy, markdown-it
không làm chậm tốc độ bằng tính linh hoạt của nó. Sự chậm trễ của phiên bản “đầy đủ” do các tính năng bổ sung không có sẵn trong các triển khai khác.
markdown-it cho doanh nghiệp
Có sẵn như một phần của Gói Hỗ Trợ Tidelift.
Những người duy trì của markdown-it
và hàng ngàn gói khác đang làm việc với Tidelift để cung cấp hỗ trợ thương mại và bảo trì cho các phần mềm phụ thuộc mã nguồn mở mà bạn sử dụng để xây dựng ứng dụng của mình. Tiết kiệm thời gian, giảm rủi ro và cải thiện sức khỏe mã nguồn, trong khi trả tiền cho người duy trì các phần mềm phụ thuộc bạn sử dụng chính xác. Learn more.
Tác giả
- Alex Kocharin github/rlidwka
- Vitaly Puzrin github/puzrin
markdown-it là kết quả của quyết định của những tác giả đã đóng góp vào 99% mã nguồn của Remarkable để chuyển sang một dự án cùng tác giả nhưng có lãnh đạo mới (Vitaly và Alex). Đó không phải là một nhánh.
Tham khảo / Cảm ơn
Cảm ơn lớn đến John MacFarlane vì công việc của anh ấy trong việc soạn thảo CommonMark và các phiên bản tham khảo. Công việc của anh ấy đã tiết kiệm rất nhiều thời gian cho chúng tôi trong quá trình phát triển dự án này.
Liên kết liên quan:
- https://github.com/jgm/CommonMark – các phiên bản tham khảo của CommonMark trong C & JS, cũng bao gồm phiên bản mới nhất và bản demo trực tuyến.
- http://talk.commonmark.org – diễn đàn CommonMark, nơi tốt để hợp tác với các nhà phát triển.
Các phiên bản:
- motion-markdown-it – Ruby/RubyMotion
- markdown-it-py – Python
Chi tiết Tải xuống:
Tác giả: markdown-it
Mã nguồn: https://github.com/markdown-it/markdown-it
Giấy phép: MIT license