使用Vite2+Vue3渲染Markdown文档的方法实践
使用Vite2+Vue3渲染Markdown文档的方法实践,博智网带你了解详细信息 。
目录
- 自定义 Vite 插件
- 使用 vite-plugin-markdown
- Import Front Matter attributes
- Import compiled HTML (Mode.HTML)
- Import ToC metadata (Mode.TOC)
- Import as a React component (Mode.REACT)
- Import as a Vue component (Mode.VUE)
- 写在最后
大部分使用 Vite2 的开发者遇到的一个问题 , 就是文档里并没有相关支持 Markdown 的介绍 , 那么如果想要在 Vite 项目中支持 Markdown 引入并渲染 , 需要怎么操作?这篇文章将介绍两种方式 。
自定义 Vite 插件
如果去网上相关问题 , 大部分都是这种方式 , 就是自定义插件 , 使得 Vite 支持 Markdown 渲染 , 具体做法如下:
在项目根目录创建 md.js 文件 , 填充如下内容:
import path from 'path';import fs from 'fs';import marked from 'marked';const mdToJs = str => {const content = JSON.stringify(marked(str));return `export default ${content}`;};export function md() {return {configureServer: [ // 用于开发async ({ app }) => {app.use(async (ctx, next) => {// 获取后缀为 .md 的文件 , 将他变为 js 文件if (ctx.path.endsWith('.md')) {ctx.type = 'js';const filePath = path.join(process.cwd(), ctx.path);ctx.body = mdToJs(fs.readFileSync(filePath).toString());} else {await next();}});},],transforms: [{// 用于 rolluptest: context => context.path.endsWith('.md'),transform: ({ code }) => mdToJs(code)}]};}
接着修改 vite.config.js , 引入上面创建的插件 。
【使用Vite2+Vue3渲染Markdown文档的方法实践】import {md} from './md';export default {plugins: [md()]};
这样 , 在使用时 , 会将导入的 md 文件转换成 js 文件渲染 。具体使用示例:
<template><article v-html="md" /></template><script lang="ts">import md from './xxx.md'export default {setup(){return {md}}}
使用 vite-plugin-markdown
这款第三方插件不仅支持引入并渲染 Markdown 文件 , 并且支持渲染成各种格式 , 例入 HTML 字符串、React 或 Vue 的组件等 。
安装 vite-plugin-markdown 。
npm i vite-plugin-markdown
在 vite.config.js 中修改:
const mdPlugin = require('vite-plugin-markdown')export default {plugins: [mdPlugin.plugin({mode: ['html'],})]}
配置中传入一个 options , 选项对象 , 支持以下参数:
mode?: ('html' | 'toc' | 'react' | 'vue')[]各个模式下的渲染示例:
markdown?: (body: string) => string
markdownIt?: MarkdownIt | MarkdownIt.Options
Import Front Matter attributes
---title: Awesome Titledescription: Describe this awesome contenttags:- "great"- "awesome"- "rad"---# This is awesomeVite is an opinionated web dev build tool that serves your code via native ES Module imports during dev and bundles it with Rollup for production.import { attributes } from './contents/the-doc.md';console.log(attributes) //=> { title: 'Awesome Title', description: 'Describe this awesome content', tags: ['great', 'awesome', 'rad'] }
Import compiled HTML (Mode.HTML)
import { html } from './contents/the-doc.md';console.log(html) //=> "<h1>This is awesome</h1><p>ite is an opinionated web dev build tool that serves your code via native ES Module imports during dev and bundles it with Rollup for production.</p>"
Import ToC metadata (Mode.TOC)
# viteVite is an opinionated web dev build tool that serves your code via native ES Module imports during dev and bundles it with Rollup for production.## Status## Getting Started# Notesimport { toc } from './contents/the-doc.md'console.log(toc)//=> [{ level: '1', content: 'vite' }, { level: '2', content: 'Status' }, { level: '2', content: 'Getting Started' }, { level: '1', content: 'Notes' },]
Import as a React component (Mode.REACT)
import React from 'react'import { ReactComponent } from './contents/the-doc.md'function MyReactApp() {return (<p><ReactComponent /></p>}
Import as a Vue component (Mode.VUE)
<template><article><markdown-content /></article></template><script>import { VueComponent } from './contents/the-doc.md'export default {components: {MarkdownContent: VueComponent}};</script>
写在最后
到此这篇关于使用Vite2+Vue3渲染Markdown文档的方法实践的文章就介绍到这了,更多相关Vite2+Vue3渲染Markdown内容请搜索趣讯吧以前的文章或继续浏览下面的相关文章希望大家以后多多支持趣讯吧!
- 蚕丝被的保养 蚕丝被使用保养全攻略
- 3a香料的使用方法
- 如何延长防晒霜的使用时间
- 绝地求生喷子使用技巧
- 废文网必须注册才能使用吗
- 水粉颜料第一次怎么使用
- 华为手机如何设置使用智慧搜索
- 妆前啫喱使用顺序?
- 手机隐私照片在哪里查看
- 床单被套有使用期限吗
