中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

如何使用Vite2+Vue3渲染Markdown文檔

發布時間:2021-08-03 17:18:19 來源:億速云 閱讀:378 作者:chen 欄目:開發技術

本篇內容主要講解“如何使用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: [{  // 用于 rollup
      test: context => context.path.endsWith('.md'),
      transform: ({ code }) => mdToJs(code)
    }]
  };
}

接著修改 vite.config.js,引入上面創建的插件。

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 Title
description: Describe this awesome content
tags:
  - "great"
  - "awesome"
  - "rad"
---
# This is awesome
Vite 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) 
//=> "<h2>This is awesome</h2><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)

# vite

Vite 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

# Notes

import { 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 (
    <div>
      <ReactComponent />
    </div>
}

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文檔”有了更深的了解,不妨來實際操作一番吧!這里是億速云網站,更多相關內容可以進入相關頻道進行查詢,關注我們,繼續學習!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

浮梁县| 康乐县| 都匀市| 崇仁县| 遂川县| 济南市| 汝南县| 上蔡县| 霍山县| 曲阳县| 科尔| 龙门县| 南城县| 原平市| 罗甸县| 靖江市| 鹿泉市| 南江县| 秦皇岛市| 大英县| 康马县| 固阳县| 樟树市| 炎陵县| 湛江市| 贵阳市| 潞城市| 临猗县| 金秀| 宁夏| 普兰县| 宽城| 东安县| 东阳市| 明光市| 辽宁省| 沙湾县| 武鸣县| 山东省| 天气| 四会市|