| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263 |
- <script src="https://unpkg.com/marked@0.3.6"></script>
- <script src="https://unpkg.com/lodash@4.16.0"></script>
- <script src="../../dist/vue.global.js"></script>
- <div id="editor">
- <textarea :value="input" @input="update"></textarea>
- <div v-html="compiledMarkdown"></div>
- </div>
- <script>
- const App = {
- data: {
- input: '# hello'
- },
- computed: {
- compiledMarkdown() {
- return marked(this.input, { sanitize: true })
- }
- },
- methods: {
- update: _.debounce(function (e) {
- this.input = e.target.value
- }, 300)
- }
- }
- Vue.createApp().mount(App, '#editor')
- </script>
- <style>
- html, body, #editor {
- margin: 0;
- height: 100%;
- font-family: 'Helvetica Neue', Arial, sans-serif;
- color: #333;
- }
- textarea, #editor div {
- display: inline-block;
- width: 49%;
- height: 100%;
- vertical-align: top;
- -webkit-box-sizing: border-box;
- -moz-box-sizing: border-box;
- box-sizing: border-box;
- padding: 0 20px;
- }
- textarea {
- border: none;
- border-right: 1px solid #ccc;
- resize: none;
- outline: none;
- background-color: #f6f6f6;
- font-size: 14px;
- font-family: 'Monaco', courier, monospace;
- padding: 20px;
- }
- code {
- color: #f66;
- }
- </style>
|