国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

vue中實(shí)現(xiàn)markdown+代碼高亮格式渲染,及內(nèi)容一鍵復(fù)制功能

這篇具有很好參考價(jià)值的文章主要介紹了vue中實(shí)現(xiàn)markdown+代碼高亮格式渲染,及內(nèi)容一鍵復(fù)制功能。希望對(duì)大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請(qǐng)大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問(wèn)。

涉及組件:vue-markdown、highlight.js、clipboard
完成功能:將數(shù)據(jù)以markdown格式渲染,代碼部分高亮,內(nèi)容可一鍵復(fù)制

1.安裝

//安裝vue-markdown依賴(lài)
npm install --save vue-markdown 
//安裝對(duì)應(yīng)樣式,若要定制化樣式,可以到對(duì)應(yīng)文件中做修改
npm install github-markdown-css
//安裝高亮
npm install highlight.js
//安裝復(fù)制組件
npm install clipboard --save

2.引用

①main.js

//main.js
import 'github-markdown-css/github-markdown.css'
import hljs from "highlight.js";
Vue.prototype.$hljs = hljs;
// 有多種樣式可選,也可以到對(duì)應(yīng)文件中定制化
import "highlight.js/styles/atom-one-dark.css";
// 自定義命令v-highlight
Vue.directive("highlight", function(el) {
    let blocks = el.querySelectorAll("pre code");
    blocks.forEach(block => {
        hljs.highlightBlock(block);
    });
});
//復(fù)制組件引用
import clipboard from 'clipboard'
Vue.prototype.clipboard = clipboard

②CodeCopy.vue

//CodeCopy.vue
<template>
  <div class="copy-content">
    <!-- 復(fù)制按鈕 -->
    <div
      class="copy-btn code-data-copy"
      @click="copyMessage"
      data-clipboard-action="copy"
      :data-clipboard-text="code"
    >
      <i class="el-icon-document-copy myicon"></i>
    </div>
    <div v-if="success" class="copy-success-text">copied!</div>
  </div>
</template>

<script>
import clipboard from "clipboard"; 
export default {
  data() {
    return {
      code: null,
      success: false,
    };
  },
  methods: {
    copyMessage(value) {
      let _this = this;
      _this.success = false;
      let clipboard = new this.clipboard(".code-data-copy");
      clipboard.on("success", function (e) {
        //    this.$message.error("提問(wèn)不能為空");
        _this.success = true;
        // setTimeout(() => {
        //   _this.success = false
        // }, 300)
        clipboard.destroy(); // 銷(xiāo)毀,避免多次點(diǎn)擊重復(fù)出現(xiàn)
      });
      clipboard.on("error", function () {
        _this.$message.error("複製失敗");
      });
    },
  },
};
</script>

<style lang="less" scoped>
.copy-content {
  height: 0px;
}
.icon {
  width: 0.8rem;
  height: 0.8rem;
  fill: rgb(231, 32, 32);
}
.myicon {
  font-size: 14px;
   color: #c0c4cc;
  &:hover {
    color: black;
  }
}
.copy-btn {
  user-select: none;
  opacity: 1;
  position: absolute;
  right: 0px;
  top: 0px;
  cursor: pointer;
  border-radius: 3px;
  transition: 0.3s;
  background: rgba(255, 255, 255, 0.2);
  &:active {
    background: rgba(253, 253, 253, 0.575);
  }
}
.copy-success-text {
  font-family: "微軟雅黑";
  color: green;
  position: absolute;
  font-size: 12px;
  top: 2px;
  right: 18px;
  font-weight: 500;
  animation: successCopy 0.6s ease both 1;
}

</style>

3.使用

//demo.vue
 <template>
  <div id="demo>
  <!--注意div的class"markdown-body"否則識(shí)別不到樣式  -->
   <!--v-highlight為自定義命令,直接使用即可  -->
    <div class="markdown-body"><VueMarkdown v-highlight :source="dataval"></VueMarkdown></div>
  </div>
</template>
<script>
import VueMarkdown from "vue-markdown";
import CodeCopy from "./CodeCopy.vue";
export default {
  components: {
    VueMarkdown,
  },
  data() {
    return {
    //從后臺(tái)獲取數(shù)據(jù)
       data: "DDS Security Plugin是一種用於保護(hù)DDS通訊的安全機(jī)制。它的架構(gòu)包括以下三個(gè)層次:\n\n1. DDS Security Plugin API層:提供了一個(gè)API接口,讓DDS應(yīng)用程序可以訪問(wèn)DDS Security Plugin。這一層還負(fù)責(zé)將安全設(shè)置應(yīng)用到DDS中。\n\n2. DDS Security Plugin實(shí)現(xiàn)層:實(shí)現(xiàn)了DDS Security Plugin API所定義的接口。它包括了一個(gè)安全管理器和相關(guān)的安全策略、安全驗(yàn)證、加密解密等功能。在這一層中,安全管理器負(fù)責(zé)將安全策略應(yīng)用到DDS中,使得DDS能夠?qū)崿F(xiàn)安全通訊。\n\n3. 安全策略層:包括了各種安全策略,如加密、授權(quán)、驗(yàn)證等,以實(shí)現(xiàn)不同的安全需求。DDS Security Plugin提供了一些預(yù)定義的安全策略,同時(shí)也支持用戶(hù)自定義的安全策略。在這一層中,安全策略定義了如何對(duì)DDS進(jìn)行安全設(shè)置,以保護(hù)DDS通訊的安全性。",
       dataval :"",
    };
  },
 mounted() {
  //為解決序號(hào)被吞情況   ,第五點(diǎn)其他問(wèn)題處會(huì)說(shuō)明
    this.dataval = this.data.replace(/\. /g, ".");
  },
 updated() {
    this.update();
  },
  methods: {
    update() {
      setTimeout(() => {
        // 給每一個(gè) markdown-body  加上復(fù)制按鈕,具體樣式可以自己調(diào)整
        document.querySelectorAll(".markdown-body").forEach((el) => {
          //   console.log(el)
          if (el.classList.contains("code-copy-added")) return;
          let ComponentClass = Vue.extend(CodeCopy);
          let instance = new ComponentClass();
          instance.code = el.innerText;
          instance.parent = el;
          /* 手動(dòng)掛載 */
          instance.$mount();
          el.classList.add("code-copy-added");
          el.appendChild(instance.$el);
        });
      }, 100);
    },
  },
};
</script>

<style>
</style>

4.經(jīng)過(guò)樣式調(diào)整,效果如下:

markdown 代碼復(fù)制,前端問(wèn)題,vue.js,javascript,前端

5.其他問(wèn)題

vue-markdown可能存在某些問(wèn)題,比如數(shù)據(jù)中的1. 2. 3. 等標(biāo)號(hào)會(huì)被莫名吞掉隱藏。
經(jīng)觀察發(fā)現(xiàn): 這樣格式的數(shù)據(jù),標(biāo)號(hào)會(huì)被隱藏:\n\n1. 空格 ;如:

\n\n1.  DDS Security Plugin API層:提供了一個(gè)API接口,
讓DDS應(yīng)用程序可以訪問(wèn)DDS Security Plugin。這一層還負(fù)責(zé)將安全設(shè)置應(yīng)用到DDS中。
\n\n2.  DDS Security Plugin實(shí)現(xiàn)層:實(shí)現(xiàn)了DDS Security Plugin API所定義的接口。

解決方案
將返回?cái)?shù)據(jù)data做replace替換

//將   .空格 替換成 .
  this.p = this.data.replace(/\. /g, ".");

最后:
以上方法均來(lái)自網(wǎng)絡(luò),四處收羅完成需求后在此記錄總結(jié)。
demo代碼并不完整,但復(fù)制下來(lái)功能可以實(shí)現(xiàn),樣式按需調(diào)整。文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-689795.html

到了這里,關(guān)于vue中實(shí)現(xiàn)markdown+代碼高亮格式渲染,及內(nèi)容一鍵復(fù)制功能的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來(lái)自互聯(lián)網(wǎng)用戶(hù)投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場(chǎng)。本站僅提供信息存儲(chǔ)空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請(qǐng)注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請(qǐng)點(diǎn)擊違法舉報(bào)進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

  • towxml的使用,在微信小程序中快速將markdown格式渲染為wxml文本

    towxml的使用,在微信小程序中快速將markdown格式渲染為wxml文本

    towxml3.0 支持以下功能: ● echarts圖表,默認(rèn)禁用,需自行構(gòu)建以開(kāi)啟此功能 ● LaTeX數(shù)學(xué)公式,默認(rèn)禁用,需搭建解析服務(wù)并自行構(gòu)建以開(kāi)啟此功能 ● yuml圖表,默認(rèn)禁用,需要搭建解析服務(wù)并自行構(gòu)建以開(kāi)啟此功能 ● highlight代碼高亮,默認(rèn)開(kāi)啟(默認(rèn)僅開(kāi)啟bash、javascript、

    2024年04月26日
    瀏覽(37)
  • 比微信還方便,一鍵導(dǎo)出你與 ChatGPT 的聊天記錄,而且是 Markdown 格式!

    比微信還方便,一鍵導(dǎo)出你與 ChatGPT 的聊天記錄,而且是 Markdown 格式!

    需求: 我們知道 ChatGPT 是文本形式輸出內(nèi)容。在有時(shí)候與 ChatGPT 進(jìn)行交談的過(guò)程中,遇到 ChatGPT 提供的有價(jià)值的信息,我們通常想要把整個(gè)對(duì)話(huà)內(nèi)容保存起來(lái)或者復(fù)制到別的地方展示。一般的方法就是將整個(gè)對(duì)話(huà)框截圖,或者一段一段話(huà)復(fù)制,非常麻煩! 面對(duì)這種問(wèn)題,如

    2024年02月05日
    瀏覽(19)
  • 如何在Vue表單處理中實(shí)現(xiàn)表單的條件渲染

    在Vue開(kāi)發(fā)中,我們經(jīng)常會(huì)遇到需要根據(jù)某些條件來(lái)渲染表單的情況。這種情況下,我們需要靈活地根據(jù)條件來(lái)展示或隱藏一些表單字段。本文將介紹如何在Vue中實(shí)現(xiàn)表單的條件渲染,并提供了代碼示例。 一、使用v-if指令實(shí)現(xiàn)簡(jiǎn)單的條件渲染 在Vue中,我們可以使用v-if指令來(lái)根

    2024年02月12日
    瀏覽(18)
  • vue中實(shí)現(xiàn)復(fù)制內(nèi)容到剪切板

    在項(xiàng)目中 點(diǎn)擊按鈕 復(fù)制 某行文本是很常見(jiàn)的 應(yīng)用場(chǎng)景, 在 Vue 項(xiàng)目中實(shí)現(xiàn) 復(fù)制功能 需要借助 vue-clipboard2 插件。 1、安裝 vue-clipboard2 依賴(lài) ( 不行的話(huà)可以切換成淘寶鏡像源 npm config set registry https://registry.npm.taobao.org ) 2、在 main.js 文件中全局引入插件 示例代碼如下: 3、

    2024年02月13日
    瀏覽(24)
  • VUE框架中實(shí)現(xiàn)HTML頁(yè)面(局部)內(nèi)容轉(zhuǎn)PDF下載

    有一朋友想把網(wǎng)頁(yè)內(nèi)容變成PDF下載下來(lái)。問(wèn)我有沒(méi)有好辦法。 這還真巧了,咱公司也有這個(gè)需求,就是網(wǎng)頁(yè)生成合同,然后可以直接打印合同內(nèi)容。最早吧,就是可以直接打印就好了。 當(dāng)時(shí)為解決完美打印的問(wèn)題,挺費(fèi)勁的,當(dāng)時(shí)第三方插件還有BUG(當(dāng)然把解決放給發(fā)給作

    2023年04月14日
    瀏覽(15)
  • vue+prismjs 網(wǎng)頁(yè)代碼高亮插件

    最近在使用wangEditor的過(guò)程中發(fā)現(xiàn)編輯器中代碼塊展示沒(méi)有問(wèn)題,但是預(yù)覽編輯器中的內(nèi)容樣式丟失,看過(guò)wangEditor的文檔后發(fā)現(xiàn)用到了Prism.js,現(xiàn)將使用的經(jīng)驗(yàn)分享。 打開(kāi)? babel.config.js ,在module.exports中的plugins添加以下配置,如果原本沒(méi)有plugins可以手動(dòng)添加 配置后 babel.con

    2024年02月05日
    瀏覽(17)
  • webstorm配置eslint一鍵格式化代碼

    webstorm配置eslint一鍵格式化代碼

    安裝eslint插件:npm install --save-dev eslint-config-vue eslint-plugin-vue 創(chuàng)建eslintrc.js文件,添加相關(guān)代碼規(guī)范(根據(jù)自己喜好進(jìn)行調(diào)整) webstorm進(jìn)行快捷鍵設(shè)置 這樣在頁(yè)面使用Alt + S,即可一鍵格式化代碼了

    2024年02月01日
    瀏覽(24)
  • vue+Element UI Table表格動(dòng)態(tài)渲染表頭內(nèi)容及操作按鈕

    循環(huán)表格頭信息數(shù)組 封裝操作組件并引入表格文件內(nèi) 配置表頭信息數(shù)組及添加操作事件

    2024年02月13日
    瀏覽(93)
  • VS Code 一鍵刪除所有注釋?zhuān)斫「袷交看a,一鍵去除行尾空格空白

    VS Code 一鍵刪除所有注釋?zhuān)斫「袷交看a,一鍵去除行尾空格空白

    1. 打開(kāi)VSCode的替換頁(yè)面,快捷鍵為: Ctl + H 2. 鼠標(biāo)左擊使能正則表達(dá)式選項(xiàng),快捷鍵為: Alt + R 3. 瞄準(zhǔn)全部注釋的正則表達(dá)式為: ? ? ? 4. 替換的內(nèi)容什么都不寫(xiě), 鼠標(biāo)左擊替換全部, 快捷鍵為: Ctl + Alt + Enter 5. 如果想刪除全部空行,瞄準(zhǔn)全部空行的正則表達(dá)式為: 同樣用空來(lái)替換全

    2024年02月03日
    瀏覽(34)
  • 前端sql語(yǔ)句輸入框以及格式化sql語(yǔ)句和sql關(guān)鍵詞高亮---sql-formatter、vue-codemirror

    前端sql語(yǔ)句輸入框以及格式化sql語(yǔ)句和sql關(guān)鍵詞高亮---sql-formatter、vue-codemirror

    1.下載 2.引入 3.使用 4.遇到的問(wèn)題 “select * from 表格名稱(chēng)” 這個(gè)字符包含了中文,如果進(jìn)行格式化,就會(huì)變成 “select * from 表 格 名 稱(chēng)” 中文之前添加了空格 解決方法:使用正則去掉空格 使用正側(cè)格式化去掉空格我嘗試的幾種方法 方法一 方法二 方法三(最終版本) 5.優(yōu)化

    2024年02月02日
    瀏覽(22)

覺(jué)得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請(qǐng)作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包