vue中展示、讀取.md?文件的方法(批量引入、自定義代碼塊高亮樣式)
1.首先安裝以下依賴
- vue-markdown-loader
- vue-loader
- vue-template-compiler
- github-markdown-css
- highlight.js
npm install vue-markdown-loader -D npm install vue-loader -D npm install vue-template-compiler -D npm install github-markdown-css -D npm install highlight.js -D
2.在 vue.config.js 文件中配置 webpack
module.exports = { chainWebpack: (config) => { config.module .rule("md") .test(/\.md/) .use("vue-loader") .loader("vue-loader") .end() .use("vue-markdown-loader") .loader("vue-markdown-loader/lib/markdown-compiler") .options({ raw: true, }); }, };
3.組件中使用時(shí)
單個(gè)文件使用可在組件內(nèi)單獨(dú)引用
main.js 中引入樣式
// markdown樣式 import "github-markdown-css"; // 代碼高亮 import "highlight.js/styles/github.css"; //默認(rèn)樣式
- vue 組件中使用
- 將 md 文件作為組件導(dǎo)入,注意:class 的值必須包含 markdown-body ,否則樣式無法生效!
<template> <demo-md class="markdown-body"></demo-md> </template> <script> import DemoMd from './demo.md'; export default { components: { DemoMd } } </script>
批量導(dǎo)入多個(gè)文件
在 md 文件同目錄中創(chuàng)建 index.js 文件,導(dǎo)入 md 文件
// md文件批量引入 import javaScript_prototype from "./javaScript_prototype.md"; import git_basics from "./git_basics.md"; import click_copy from "./click_copy.md"; // 創(chuàng)建md組件同時(shí)設(shè)置文章其他信息,單獨(dú)導(dǎo)出使用 export const components = { click_copy: { id: 3, name: click_copy, type: ["html", "javaScript", "vue"], describe: "JavaScript頁面點(diǎn)擊復(fù)制功能(vue)", date: "2021-11-23 15:51:00", }, git_basics: { id: 2, name: git_basics, type: ["git"], describe: "git 基礎(chǔ)使用(創(chuàng)建、推送、克隆、拉取、常用指令等)", date: "2021-11-23 14:22:00", }, javaScript_prototype: { id: 1, name: javaScript_prototype, type: ["javaScript"], describe: "個(gè)人對(duì) javaScript 原型鏈理解", date: "2021-11-22 10:00:00", }, }; // 注冊(cè)全部md組件 export const mdArticle = function (Vue, opts = {}) { Object.keys(components).forEach((key) => { Vue.component(key, components[key].name); }); };
在 main.js 文件中引入剛剛創(chuàng)建的 index.js 文件,導(dǎo)出全部 me 組件,全局注冊(cè)
引入markdown樣式和高亮樣式
// markdown樣式 import "github-markdown-css"; // 代碼高亮 import "highlight.js/styles/github.css"; //默認(rèn)樣式 // 代碼高亮devibeans swh自定義顏色 // import './assets/css/swh.css' //自定義樣式 // 引入md文章組件列表 import { mdArticle } from "./article/index"; Vue.use(mdArticle);
自定義代碼代碼塊高亮樣式(文件中自行修改顏色)
創(chuàng)建 css 文件
/* 代碼塊高亮樣式 */ pre code.hljs { display: block; overflow-x: auto; padding: 1em; } code.hljs { padding: 3px 5px; } .hljs { color: #eaeaea; background: #000; } .hljs-subst { color: #eaeaea; } .hljs-emphasis { font-style: italic; } .hljs-strong { font-weight: 700; } .hljs-type { color: #eaeaea; } /* 參數(shù) */ .hljs-params { color: #ea00ff; } /* true顏色 */ .hljs-literal, .hljs-name, .hljs-number { color: rgb(105, 195, 255); font-weight: bolder; } /* 注釋顏色 */ .hljs-comment { color: #8a8a8a; } .hljs-quote, .hljs-selector-id { color: #0ff; } /* 函數(shù)顏色 */ .hljs-template-variable, .hljs-title, .hljs-variable { color: #c3bf7b; font-weight: 700; } /* 對(duì)象顏色 */ .hljs-keyword, .hljs-selector-class, .hljs-symbol { color: #9d6bb4; } /* 值的顏色 */ .hljs-bullet, .hljs-string { color: rgb(255, 142, 66); } .hljs-section, .hljs-tag { color: rgb(105, 195, 255); } .hljs-selector-tag { color: #000fff; font-weight: 700; } .hljs-attribute, .hljs-built_in, .hljs-link, .hljs-regexp { color: rgb(105, 195, 255); } .hljs-meta { color: #fff; font-weight: bolder; }
App.vue 可直接覆蓋(代碼塊背景色、代碼括號(hào)顏色)
<style lang="less"> #app { font-family: "楷體"; -webkit-font-smoothing: antialiased; -moz-osx-font-smoothing: grayscale; color: #2c3e50; .markdown-body .highlight pre, .markdown-body pre { background-color: rgb(34, 34, 34); // 代碼塊背景色改變默認(rèn) color: rgb(105, 195, 255); //代碼括號(hào)顏色 } } </style>
組件中直接使,可以根據(jù) parameter 動(dòng)態(tài)顯示 md 文件
- 將 md 文件作為組件導(dǎo)入,注意:class 的值必須包含 markdown-body ,否則樣式無法生效!
- parameter 是文章 md 組件名稱,通過列表點(diǎn)擊傳遞 name,實(shí)現(xiàn)動(dòng)態(tài)顯示 md 組件
<template> <div class="markdown-body"> <!-- 文章詳情頁面 --> <div class="details"> <!-- md文件組件 --> <component :is="parameter"></component> </div> </div> </template> export default { data() { return { parameter: "", //文章對(duì)應(yīng)組件名字 }; }, mounted() { this.getParameters(); }, methods: { getParameters() { // 獲取文章參數(shù) 點(diǎn)擊跳轉(zhuǎn)獲取參數(shù) 或者 刷新頁面從url中獲取參數(shù) this.parameter = this.$route.query.article || location.search.split("=")[1]; }, }, };
效果展示
點(diǎn)擊 md 文件列表
進(jìn)入md 文件詳情頁面
到此這篇關(guān)于vue中展示、讀取.md 文件的方法(批量引入、自定義代碼塊高亮樣式)的文章就介紹到這了,更多相關(guān)vue展示、讀取.md 文件內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
vue、element實(shí)現(xiàn)表格表頭縱向顯示方式
這篇文章主要介紹了vue、element實(shí)現(xiàn)表格表頭縱向顯示方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2023-10-10Vue利用高德地圖API實(shí)現(xiàn)實(shí)時(shí)天氣
這篇文章主要為大家詳細(xì)介紹了Vue如何利用高德地圖API實(shí)現(xiàn)實(shí)時(shí)天氣,文中的示例代碼講解詳細(xì),感興趣的小伙伴可以跟隨小編一起學(xué)習(xí)一下2023-12-12vue開發(fā)移動(dòng)端使用better-scroll時(shí)click事件失效的解決方案
這篇文章主要介紹了vue開發(fā)移動(dòng)端使用better-scroll時(shí)click事件失效的解決方案,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2021-07-07Vue.js中NaiveUI組件文字漸變的實(shí)現(xiàn)
這篇文章主要介紹了Vue.js中NaiveUI組件文字漸變的實(shí)現(xiàn),文章圍繞主題展開詳細(xì)的內(nèi)容介紹,具有一定的參考價(jià)值,需要的小伙伴可以參考一下2022-07-07Vue3之Vite中由element?ui更新導(dǎo)致的啟動(dòng)報(bào)錯(cuò)解決
這篇文章主要介紹了Vue3之Vite中由element?ui更新導(dǎo)致的啟動(dòng)報(bào)錯(cuò)解決方案,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2023-01-01解決vue無法加載文件D:\Program Files\nodejs\node_global\vue.ps1,
這篇文章主要給大家介紹了關(guān)于解決vue無法加載文件D:\Program Files\nodejs\node_global\vue.ps1,因?yàn)樵诖讼到y(tǒng)上禁止運(yùn)行腳本的相關(guān)資料,這個(gè)報(bào)錯(cuò)是由于在系統(tǒng)上禁止運(yùn)行腳本導(dǎo)致的,文中通過圖文介紹的非常詳細(xì),需要的朋友可以參考下2024-01-01vue中循環(huán)多個(gè)li(表格)并獲取對(duì)應(yīng)的ref的操作代碼
我想要獲取每一個(gè)循環(huán)并獲取每一個(gè)li(或者其它循環(huán)項(xiàng))的ref,以便于后續(xù)的操作,接下來通過本文給大家分享vue中循環(huán)多個(gè)li(表格)并獲取對(duì)應(yīng)的ref的操作代碼,感興趣的朋友跟隨小編一起看看吧2024-02-02解決Vue中引入swiper,在數(shù)據(jù)渲染的時(shí)候,發(fā)生不滑動(dòng)的問題
今天小編就為大家分享一篇解決Vue中引入swiper,在數(shù)據(jù)渲染的時(shí)候,發(fā)生不滑動(dòng)的問題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧2018-09-09