demo https://markdown-buffer.netlify.com/
tl;dr
remark in web worker with comlink(https://github.com/GoogleChromeLabs/comlink)
yarn add remark remark-html comlinkjs
(I use parcel-bundler to build)
Worker Side
src/worker.js
import remark from "remark";
import html from "remark-html";
import * as Comlink from 'comlinkjs'
const processor = remark().use(html)
class MarkdownCompiler {
compile(raw) {
return processor.processSync(raw).toString();
}
}
Comlink.expose(MarkdownCompiler, self);
Main Thread
src/index.js
import * as Comlink from 'comlinkjs'
const MarkdownCompiler = Comlink.proxy(new Worker("./worker.js"));
const main = async () => {
const compiler = await new MarkdownCompiler();
const result = await compiler.compile('**your markdown here**');
console.log(result)
}
main();
Comlink hides postMessage to make worker easy
Top comments (0)