最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Vue單頁面應用中實現(xiàn)Markdown渲染

 更新時間:2021年02月14日 09:55:48   作者:YouXam  
這篇文章主要介紹了Vue單頁面應用中如何實現(xiàn)Markdown渲染,幫助大家更好的理解和使用vue,感興趣的朋友可以了解下

之前渲染 Markdown 的時候, 筆者使用的是 mavonEditor 的預覽模式, 使用起來比較爽, 只需要引入組件即可, 但是在最近的開發(fā)中, 遇到了困難.

主要問題在于作為單頁面應用, 站內鏈接必須是使用 router-link 跳轉, 如果使用 mavonEditor 默認渲染的 a 標簽, 就會重新加載頁面, 用戶體驗較差.

動態(tài)渲染

想要實現(xiàn)在前端動態(tài)地根據用戶內容渲染router-link , 需要使用動態(tài)渲染, 根據 官方文檔, 直接修改vue.config.js 即可:

// vue.config.js
module.exports = {
 runtimeCompiler: true
}

渲染 Markdown

筆者使用的是 markdown-it, 配置過程如下:

安裝

npm install markdown-it --save # 本體
npm install markdown-it-highlightjs --save # 代碼高亮
npm install markdown-it-katex --save # latex 支持

這里還另外安裝了兩個語法插件, 如果有其他需要的話, 可以在 npm 上搜索

靜態(tài)文件導入

highlight.js
通過 cdn 導入, 在 index.html 中加入:

<link rel="stylesheet"  rel="external nofollow" >
<script src="http://cdn.jsdelivr.net/gh/highlightjs/cdn-release@10.5.0/build/highlight.min.js"></script>

github-markdown-css

markdown 的樣式

安裝

npm install github-markdown-css --save

導入

在 main.js 文件中添加

import 'github-markdown-css/github-markdown.css'

katex

通過 cdn 導入, 在 index.html 中加入:

<link rel="stylesheet"  rel="external nofollow" >

使用

首先在 components 目錄下創(chuàng)建 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 才能在動態(tài)綁定時動態(tài)更新
  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單頁面應用中實現(xiàn)Markdown渲染的詳細內容,更多關于vue Markdown渲染的資料請關注腳本之家其它相關文章!

相關文章

  • 深入解析el-col-group強大且靈活的Element表格列組件

    深入解析el-col-group強大且靈活的Element表格列組件

    這篇文章主要為大家介紹了el-col-group強大且靈活的Element表格列組件深入解析,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2023-04-04
  • iview table render集成switch開關的實例

    iview table render集成switch開關的實例

    下面小編就為大家分享一篇iview table render集成switch開關的實例,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2018-03-03
  • 如何在Vue3中正確使用ElementPlus,親測有效,避坑

    如何在Vue3中正確使用ElementPlus,親測有效,避坑

    這篇文章主要介紹了如何在Vue3中正確使用ElementPlus,親測有效,避坑!具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2024-03-03
  • Vite開發(fā)環(huán)境搭建詳解

    Vite開發(fā)環(huán)境搭建詳解

    Vite是一款非常輕量級的Web開發(fā)框架,它可以幫助開發(fā)者快速搭建一個開發(fā)環(huán)境。Vite搭建的開發(fā)環(huán)境可以提供更快的編譯速度,更少的配置,更好的性能和更多的開發(fā)者友好性,使開發(fā)者可以更快地構建出功能強大的Web應用程序。
    2023-02-02
  • vue3的基本使用方法詳細教程

    vue3的基本使用方法詳細教程

    這篇文章主要介紹了vue3的基本使用方法,結合實例形式詳細分析了vue3功能、組件、生命周期、TypeScript結合運用等相關概念與使用方法,需要的朋友可以參考下
    2023-06-06
  • vue2中使用echarts實現(xiàn)中國地圖、在中國地圖上標注坐標散點圖的操作代碼

    vue2中使用echarts實現(xiàn)中國地圖、在中國地圖上標注坐標散點圖的操作代碼

    這篇文章主要介紹了vue2中使用echarts實現(xiàn)中國地圖、在中國地圖上標注坐標散點圖,本文通過實例代碼給大家介紹的非常詳細,需要的朋友可以參考下
    2024-05-05
  • 一款移動優(yōu)先的Solid.js路由solid router stack使用詳解

    一款移動優(yōu)先的Solid.js路由solid router stack使用詳解

    這篇文章主要為大家介紹了一款移動優(yōu)先的Solid.js路由solid router stack使用詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2022-08-08
  • vue中如何引入jest單元測試

    vue中如何引入jest單元測試

    這篇文章主要介紹了vue中如何引入jest單元測試問題,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2023-07-07
  • 一文學會什么是vue.nextTick()

    一文學會什么是vue.nextTick()

    這篇文章主要介紹了一文學會什么是vue.nextTick(),下面文章圍繞主題的相關資料展開詳細內容介紹,具有一定的參考價值,需要的小伙伴可以參考一下
    2022-04-04
  • Vue Router之router.push和router.resolve頁面跳轉方式

    Vue Router之router.push和router.resolve頁面跳轉方式

    這篇文章主要介紹了Vue Router之router.push和router.resolve頁面跳轉方式,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2025-04-04

最新評論

老河口市| 漳平市| 沂南县| 鲁甸县| 南通市| 安阳市| 平泉县| 乌恰县| 车致| 嘉义市| 扎鲁特旗| 巴楚县| 白玉县| 夏津县| 苍山县| 武安市| 潮州市| 金湖县| 扎囊县| 长宁县| 全椒县| 泸水县| 兴义市| 灵石县| 德庆县| 阜城县| 綦江县| 南汇区| 台江县| 高清| 淳安县| 志丹县| 福安市| 安宁市| 花莲县| 渝北区| 锡林郭勒盟| 木兰县| 江北区| 息烽县| 海原县|