markdown-it-v
A custom markdown-it renderer that outputs virtual DOM.
Motivation
innerHTML
?
Why prefer virtual DOM to - Better integration with modern JavaScript frameworks like Vue and React.
- Better performance for real-time preview of large Markdown document. Thanks to the diff algorithm of virtual DOM, the real DOM modification can be minimized.
Why markdown-it-v
-
markdown-it itself has great performance.
-
markdown-it-v is a markdown-it plugin and can be integrated seamlessly.
-
markdown-it-v supports four schemes of output:
- Vue virtual DOM
- React virtual DOM
- Browser’s real DOM
- HTML string
Installation
$ npm install markdown-it markdown-it-v --save
Or yarn:
$ yarn add markdown-it markdown-it-v
Usage
Setup
markdown-it-v is a plugin of markdown-it:
const MarkdownIt = const MarkdownItV = const md = md
Render
After setup, the render()
method will return a StreamDom
object — a kind of virtual DOM implemented by markdown-it-v itself:
let sdom = md
Convert
Unfortunately you cannot use StreamDom
in other places and it doesn’t implement a diff algorithm. You must convert it to final output:
let vueVDom = sdom // `vueVm` is a Vue instancelet reactVDom = sdomlet realDom = sdom // not `document.createElement`!let htmlStr = sdom
Integrate with JS Frameworks
Vue component (without JSX):
// in a Vue component { return }
React component (with JSX):
Component // in a React component { const h = ReactcreateElement return <div>sdom</div> }
Changelog
-
1.1.0
- Adds highlightNoWrappingEls (#1) by @laosb
-
1.0.0-beta.1
- No change
-
1.0.0-alpha.2
- Use
_.fromPairs
in lodash
- Use
-
1.0.0-alpha.1
- Initial release