previewCodeDialg.vue 1.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354
  1. <template>
  2. <div class="previewCode">
  3. <el-tabs v-model="activeName">
  4. <el-tab-pane v-for="(item,key) in previewCode" :key="key" :label="key" :name="key">
  5. <div :id="key" style="background:#fff;padding:0 20px" />
  6. </el-tab-pane>
  7. </el-tabs>
  8. </div>
  9. </template>
  10. <script>
  11. import marked from 'marked'
  12. import hljs from 'highlight.js'
  13. // import 'highlight.js/styles/atelier-cave-light.css';
  14. import 'highlight.js/styles/atelier-plateau-light.css'
  15. export default {
  16. props: {
  17. previewCode: {
  18. type: Object,
  19. default() {
  20. return {}
  21. }
  22. }
  23. },
  24. data() {
  25. return {
  26. activeName: ''
  27. }
  28. },
  29. mounted() {
  30. marked.setOptions({
  31. renderer: new marked.Renderer(),
  32. highlight: function(code) {
  33. return hljs.highlightAuto(code).value
  34. },
  35. pedantic: false,
  36. gfm: true,
  37. tables: true,
  38. breaks: false,
  39. sanitize: false,
  40. smartLists: true,
  41. smartypants: false,
  42. xhtml: false
  43. }
  44. )
  45. for (const key in this.previewCode) {
  46. if (this.activeName === '') {
  47. this.activeName = key
  48. }
  49. document.getElementById(key).innerHTML = marked(this.previewCode[key])
  50. }
  51. }
  52. }
  53. </script>