vue3引入highlight.js進(jìn)行代碼高亮的方法實(shí)例
背景描述:
在項(xiàng)目開(kāi)發(fā)中,經(jīng)常一些日志預(yù)覽,還有文件的預(yù)覽,需要進(jìn)行代碼高亮顯示。這樣可以讓文本內(nèi)容展示的時(shí)候顯得更加友好,也便于閱讀
效果類似markdown語(yǔ)法的代碼高亮,如下:
<TestPlan guiclass="TestPlanGui" testclass="TestPlan" testname="自動(dòng)化測(cè)試"> <stringProp name="TestPlan.comments"></stringProp> <boolProp name="TestPlan.functional_mode">false</boolProp> <boolProp name="TestPlan.tearDown_on_shutdown">true</boolProp> <boolProp name="TestPlan.serialize_threadgroups">false</boolProp> <elementProp name="TestPlan.user_defined_variables" elementType="Arguments"> <collectionProp name="Arguments.arguments"/> </elementProp> </TestPlan>
一、安裝依賴:
注意:我們需要安裝的依賴有兩個(gè),網(wǎng)上的博文,都是寫(xiě)的一個(gè),比較坑。
npm install --save highlight.js
npm install --save @highlightjs/vue-plugin
命令行如下
## 這個(gè)是highlight.js基礎(chǔ)依賴 npm install --save highlight.js ## 安裝支持vue3 的@highlightjs/vue-plugin 依賴 npm install --save @highlightjs/vue-plugin
二、在vue3主入口main文件,對(duì)highlight進(jìn)行引入和注冊(cè):
需要引入的有
樣式 ,在main主入口引入樣式為全局統(tǒng)一都使用這個(gè)樣式,也可以在單獨(dú)的頁(yè)面引入,你想要的樣式。樣式效果參考官網(wǎng):https://highlightjs.org/static/demo/
更改 import ‘highlight.js/styles/atom-one-dark.css’ 把styles 后面的值改成你想要的樣式就行依賴包組件
# --- 文件src/main.ts | src/main.js # highlight 的樣式,依賴包,組件 import 'highlight.js/styles/atom-one-dark.css' import 'highlight.js/lib/common' import hljsVuePlugin from '@highlightjs/vue-plugin' import { computed, createApp } from 'vue' import App from './App.vue' const app = createApp(App) // 引入代碼高亮,并進(jìn)行全局注冊(cè) app.use(hljsVuePlugin) app.mount('#app')
三、頁(yè)面使用:
<!-- 把數(shù)據(jù)綁定到 `code` 屬性--> <highlightjs autodetect :code="code" /> <!--或者直接將顯示的代碼寫(xiě)到 `code`中 --> <highlightjs language='javascript' code="var x = 5;" />
示例如下:
可以使用 language 指定具體的語(yǔ)言,如javascript、xml等
這個(gè)值省略,highlightjs 也會(huì)自動(dòng)識(shí)別對(duì)應(yīng)的語(yǔ)言
四、看下效果展示吧:
五、一些優(yōu)化:
1.問(wèn)題
可以看到生成的代碼 是pre包裹的,會(huì)有個(gè)1rem 的margin-bottom,效果不是很好
2.解決方法
在對(duì)應(yīng)的頁(yè)面,使用style 標(biāo)簽,對(duì)樣式進(jìn)行重寫(xiě),注意不要加 scoped
<style lang="scss"> pre { margin-bottom: 0; } </style>
3. 處理后的效果
這個(gè)是示例,當(dāng)然你們可以根據(jù)實(shí)際的項(xiàng)目進(jìn)行樣式改造
碼字不容易,對(duì)你有幫助的話,給個(gè)點(diǎn)贊吧 ? (????)
更多詳情,請(qǐng)查閱官方文檔,
官網(wǎng)鏈接:https://highlightjs.org/
官網(wǎng)github鏈接:https://github.com/highlightjs/vue-plugin
總結(jié)
到此這篇關(guān)于vue3引入highlight.js進(jìn)行代碼高亮例的文章就介紹到這了,更多相關(guān)vue3引入highlight.js代碼高亮內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
詳解vuelidate 對(duì)于vueJs2.0的驗(yàn)證解決方案
本篇文章主要介紹了vuelidate 對(duì)于vueJs2.0的驗(yàn)證解決方案,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下。2017-03-03Vue組件大全包括(UI組件,開(kāi)發(fā)框架,服務(wù)端,輔助工具,應(yīng)用實(shí)例,Demo示例)
本文為大家分享了網(wǎng)上比較流行的Vue組件,包括UI組件,開(kāi)發(fā)框架,服務(wù)端,輔助工具,應(yīng)用實(shí)例,Demo示例等開(kāi)源項(xiàng)目,總有一款適合你2018-10-10詳解基于Vue的支持?jǐn)?shù)據(jù)雙向綁定的select組件
這篇文章主要介紹了詳解基于Vue的支持?jǐn)?shù)據(jù)雙向綁定的select組件,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2019-09-09