我通过参考本文创建了Markdown的预览功能。
在Rails中实现降价的实时预览
但是,我一开始对所使用的库一无所知,所以我想把它留作备忘录。
我正在使用以下两个库,但是这次我将介绍marked.js。
- marked.js
- vue.js
Ruby和Rails的版本如下。
- Ruby 2.3.1
- Rails 5.0.0.1
官方文件
单击此处查看marked.js本身的文档。
https://github.com/chjj/已标记
单击此处获取marked.jsruby文档。
https://github.com/rosscooperman/marked-rails
安装
添加到
Gemfile并安装。
ruby文件
1 | gem 'marked-rails' |
1 | $ bundle install |
将以下内容添加到
application.js。
(如果是Rails 3.1或更高版本,则可以由Asset Pipeline读取,因此似乎不需要单独安装。)
application.js
1 | //= require marked |
在Rails上的安装现已完成。
实际使用
请参阅marked.js的官方文档并尝试使用它。
创建一个适当的视图(这次将其称为索引)并编写以下内容。
index.html.erb
1 2 3 4 5 6 | <div id="content"></div> <script> console.log(marked('I am using __markdown__.')); document.getElementById('content').innerHTML = marked('# Marked in browser\n\nRendered by **marked**.'); </script> |
由于Gem已经安装了标记,因此可以使用
这是浏览器中显示的结果。
相反,如果没有
1 2 | document.getElementById('content').innerHTML = '# Marked in browser\n\nRendered by **marked**.'; |
不会听到Markdown,它会以简单的字符串形式输出。
我尝试了一些Markdown,但基本输出正常。
日语Markdown用户组
关于选件
看来您也可以设置一些选项。
由于尚未对其进行详细调查,因此我将编写设置代码。
另外,关于突出显示,在官方文档的示例中,将node-pygmentize-bundled和Highlight.js链接在一起。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 | marked.setOptions({ // コードのハイライト(今回は割愛) highlight: function (code, lang, callback) { require('pygmentize-bundled')({ lang: lang, format: 'html' }, code, function (err, result) { callback(err, result.toString()); }); }, // Githubっぽいmd形式にするか gfm: true, // Githubっぽいmdの表にするか tables: true, // Githubっぽいmdの改行形式にするか breaks: false, // Markdownのバグを修正する?(よく分からなかったので、とりあえずdefaultのfalseで) pedantic: false, // HTML文字をエスケープするか sanitize: true, // スマートなリストにするか。pedanticと関わりがあるようなので、こちらもdefaultのtrueで。 smartLists: true, // クオートやダッシュの使い方。 smartypants: false, }); |