时间:2021-05-26
之前渲染 Markdown 的时候, 笔者使用的是 mavonEditor 的预览模式, 使用起来比较爽, 只需要引入组件即可, 但是在最近的开发中, 遇到了困难.
主要问题在于作为单页面应用, 站内链接必须是使用 router-link 跳转, 如果使用 mavonEditor 默认渲染的 a 标签, 就会重新加载页面, 用户体验较差.
想要实现在前端动态地根据用户内容渲染router-link , 需要使用动态渲染, 根据 官方文档, 直接修改vue.config.js 即可:
// vue.config.jsmodule.exports = { runtimeCompiler: true}笔者使用的是 markdown-it, 配置过程如下:
这里还另外安装了两个语法插件, 如果有其他需要的话, 可以在 npm 上搜索
highlight.js
通过 cdn 导入, 在 index.html 中加入:
markdown 的样式
在 main.js 文件中添加
import 'github-markdown-css/github-markdown.css'通过 cdn 导入, 在 index.html 中加入:
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/KaTeX/0.5.1/katex.min.css" rel="external nofollow" >首先在 components 目录下创建 Markdown.vue 文件,
<template> <components :is="html" class="markdown-body"></components></template><script>import MarkdownIt from 'markdown-it'import hljs from 'markdown-it-highlightjs'import latex from 'markdown-it-katex'export default { name: 'Markdown', props: { content: String }, data: () => ({ md: null }), computed: { // 使用 computed 才能在动态绑定时动态更新 html: function () { let res = this.md.render(this.content) // 使用正则表达式将站内链接替换为 router-link 标签 res = res.replace(/<a href="(?!http:\/\/|https:\/\/)(.*?)" rel="external nofollow" >(.*?)<\/a>/g, '<router-link to="$1">$2</router-link>') // 使用正则表达式将站外链接在新窗口中打开 res = res.replace(/<a href="(.*?)" rel="external nofollow" >(.*?)<\/a>/g, '<a href="$1" rel="external nofollow" target="_blank">$2</a>') return { template: '<div>' + res + '</div>' } } }, created () { this.md = new MarkdownIt() this.md.use(hljs).use(latex) }}</script>然后在想使用的地方导入即可
<template> <div> <Markdown :content="content"/> </div></template><script>import Markdown from '@/components/Markdown.vue'export default { name: 'Home', components: { Markdown }, data: () => ({ content: '' }), created () { this.content = '# 测试' }}</script>以上就是Vue单页面应用中实现Markdown渲染的详细内容,更多关于vue Markdown渲染的资料请关注其它相关文章!
声明:本页内容来源网络,仅供用户参考;我单位不保证亦不表示资料全面及准确无误,也不保证亦不表示这些资料为最新信息,如因任何原因,本网内容或者用户因倚赖本网内容造成任何损失或损害,我单位将不会负任何法律责任。如涉及版权问题,请提交至online#300.cn邮箱联系删除。
Vue下路由Historymode导致页面无法渲染的原因用Vue.js+vue-router创建单页应用,是非常简单的。使用Vue.js,我们已经可以通过组合组
对于React,Vue构建的单页面应用老说,SEO是一个众所周知的问题。服务端渲染(SSR-serverSideRender)是目前看来最好的解决办法。Reac
1.vue路由可以实现单页面应用。路由三要素:vue路由通过hash的变化切换页面(组件/div)导航存储页面(组件)的容器src/router/index.j
前言:本文基于vue2.5.2,webpack3.6.0(配置多页面原理类似,实现方法各有千秋,可根据需要进行定制化)vue是单页面应用。但是在做大型项目时,单
vue实现加载并展示后台数据的tab选项卡vue用于渲染页面jquery用于方法实现动态效果{{value.date}}{{flow.name.fullName