Gem simditor 使用 reverse_markdown

brucebot · 2015年12月23日 · 最后由 brucebot 回复于 2015年12月24日 · 2229 次阅读

好吧,我最近和 simditor 玩上了。

自从把 pagedown 换成 simditor 后,发现少了一个原生 markdown 书写时最好的东西TOC. simditor 是自动生成的带有 HTML 标记的内容直接输入的,这样我的原来的 markdown helper 就无法生成 TOC 来显示文章的目录,这个目录很好我很需要。

我想要的效果是在阅读技术文章的时候,可以方便的切换到相对应主题目的章节。

所以我要把 simditor 写作时生成的 HTML 内容重新转成 markdown,这个时候可以用reverse_markdown

方法:

  • Gemfile里面加入
gem 'reverse_markdown'
  • helper里面处理 markdown 的前面,处理一下 html
renderer = Redcarpet::Render::HTML.new(options)
markdown = Redcarpet::Markdown.new(renderer, extensions)
pure_markdown=ReverseMarkdown.convert(text, unknown_tags: :bypass)
html = markdown.render(pure_markdown).html_safe

然后使用 simditor 写完后,就重新通过 red carpet 生成带有TOC的页面。

其实章节目录在前端 js 里生成比在后端渲染发给前端要节约好多资源……跑一边 dom 树就好了,还更容易给文章加锚点……

#1 楼 @cassiuschen 在服务端渲染后可以放缓存比较好

需要 登录 后方可回复, 如果你还没有账号请 注册新账号