Vite2+Vue3を使用してMarkdownドキュメントをレンダリングする練習

Vite2+Vue3を使用してMarkdownドキュメントをレンダリングする練習

Vite2 を使用するほとんどの開発者が遭遇する問題は、ドキュメントに Markdown のサポートについての説明がないことです。では、Vite プロジェクトで Markdown のインポートとレンダリングをサポートしたい場合はどうすればよいでしょうか?この記事では2つの方法を紹介します。

カスタム Vite プラグイン

ネット上の関連質問を見ると、ほとんどがこのやり方、つまり、Vite で Markdown レンダリングをサポートするためのカスタム プラグインに関するものです。具体的な手順は次のとおりです。

プロジェクトのルート ディレクトリに md.js ファイルを作成し、次の内容を入力します。

'path' からパスをインポートします。
'fs' から fs をインポートします。
'marked' から marked をインポートします。

const mdToJs = str => {
  const コンテンツ = JSON.stringify(marked(str));
  `export default ${content}` を返します。
};

エクスポート関数md() {
  戻る {
    configureServer: [ // 開発用 async ({ app }) => {
        app.use(async (ctx, next) => {
          // .md という拡張子のファイルを取得し、それを js ファイルに変換します if (ctx.path.endsWith('.md')) {             
            ctx.type = 'js';
            定数 filePath = path.join(process.cwd(), ctx.path);
            ctx.body = mdToJs(fs.readFileSync(filePath).toString());
          } それ以外 {
            次の()を待ちます。
          }
        });
      },
    ]、
    変換: [{ // ロールアップ用
      テスト: context => context.path.endsWith('.md'),
      変換: ({ code }) => mdToJs(code)
    }]
  };
}

次に、vite.config.js を変更し、上記で作成したプラグインをインポートします。

'./md' から {md} をインポートします。

エクスポートデフォルト{
  プラグイン: [md()]
};

この方法を使用すると、インポートされた md ファイルはレンダリング用の js ファイルに変換されます。具体的な使用例:

<テンプレート>
<記事 v-html="md" />
</テンプレート>

<script lang="ts">
'./xxx.md' から md をインポートします
エクスポートデフォルト{
設定(){

  {md} を返す
  
  }
}

vite-plugin-markdownの使用

このサードパーティ製プラグインは、Markdown ファイルのインポートとレンダリングをサポートするだけでなく、HTML 文字列、React または Vue コンポーネントなどのさまざまな形式へのレンダリングもサポートします。
vite-plugin-markdownをインストールします。

npm と vite-plugin-markdown

vite.config.js で変更します:

const mdPlugin = require('vite-plugin-markdown')

エクスポートデフォルト{
  プラグイン: [
    mdPlugin.plugin({
      モード: ['html'],
    })
  ]
}

オプション オブジェクトが構成に渡され、次のパラメーターがサポートされます。

モード: ('html' | 'toc' | 'react' | 'vue')[]

マークダウン?: (本文: 文字列) => 文字列

マークダウン?: マークダウン | マークダウン.オプション

各モードでのレンダリング例:

Front Matter属性をインポートする

---
タイトル: 素晴らしいタイトル
説明: この素晴らしいコンテンツについて説明してください
タグ:
  - "素晴らしい"
  - "素晴らしい"
  - 「すごい」
---
# これはすごい
Vite は、開発中にネイティブ ES モジュールのインポートを介してコードを提供し、本番環境用に Rollup とバンドルする、独自の Web 開発ビルド ツールです。

'./contents/the-doc.md' から { 属性 } をインポートします。

console.log(attributes) //=> { title: '素晴らしいタイトル', description: 'この素晴らしいコンテンツを説明してください', tags: ['素晴らしい', '素晴らしい', '素晴らしい'] }

コンパイルされた HTML (Mode.HTML) をインポートする

'./contents/the-doc.md' から { html } をインポートします。

コンソール.log(html) 
//=> "<h1>これは素晴らしい</h1><p>ite は、開発中にネイティブ ES モジュールのインポートを介してコードを提供し、本番環境用に Rollup とバンドルする、独自の Web 開発ビルド ツールです。</p>"

ToC メタデータをインポートする (Mode.TOC)

# バイト

Vite は、開発中にネイティブ ES モジュールのインポートを介してコードを提供し、本番環境用に Rollup とバンドルする、独自の Web 開発ビルド ツールです。

## 状態

## はじめる

# 注記

'./contents/the-doc.md' から { toc } をインポートします。

コンソール.log(toc)
//=> [{ レベル: '1', コンテンツ: 'vite' }, { レベル: '2', コンテンツ: 'ステータス' }, { レベル: '2', コンテンツ: 'はじめに' }, { レベル: '1', コンテンツ: 'メモ' },]

React コンポーネントとしてインポート (Mode.REACT)

'react' から React をインポートします
'./contents/the-doc.md' から { ReactComponent } をインポートします。

関数MyReactApp() {
  戻る (
    <div>
      <Reactコンポーネント />
    </div>
}

Vue コンポーネントとしてインポート (Mode.VUE)

<テンプレート>
  <記事>
    <マークダウンコンテンツ />
  </記事>
</テンプレート>

<スクリプト>
'./contents/the-doc.md' から { VueComponent } をインポートします。

エクスポートデフォルト{
  コンポーネント:
    マークダウンコンテンツ: VueComponent
  }
};
</スクリプト>

最後に

Vite2+Vue3を使用してMarkdown文書をレンダリングする実践に関するこの記事はこれで終わりです。より関連性の高いVite2+Vue3レンダリングMarkdownコンテンツについては、123WORDPRESS.COMの以前の記事を検索するか、次の関連記事を引き続き参照してください。今後とも123WORDPRESS.COMを応援してください。

以下もご興味があるかもしれません:
  • Vue3ナビゲーションバーコンポーネントのカプセル化実装方法
  • Vue3 Vue イベント処理ガイド
  • Vue3 シングルファイルコンポーネントのスタイル機能の詳細な説明
  • vue3.0+echarts は 3 次元の縦棒グラフを実現します
  • この記事では、Vue 3.0 レスポンシブの使い方を説明します。
  • vue3.2 で追加された defineCustomElement の基本原理の詳細な説明
  • Vue3 + TypeScript 開発の概要
  • Vue3+TypeScriptは再帰メニューコンポーネントの完全な例を実装します
  • Vue3はToDoリストを実装する
  • Vue3+スクリプト設定+ts+Vite+Volarプロジェクト
  • Vue3 コンポジション API でロジックの再利用を実装する方法
  • Vue3は画像拡大鏡効果を実現します
  • vue3.0+vant3.0の迅速なプロジェクト構築の実装
  • Vue3 ドキュメント クイックスタート

<<:  Linux calコマンドの使用

>>:  MySQL インデックス使用状況監視スキル (収集する価値あり!)

推薦する

tomcat をインストールし、Linux で Web サイトを展開します (推奨)

jdk をインストールします: Oracle 公式ダウンロード https://www.oracl...

VMware Workstation 12 Pro Linux インストール チュートリアル

この記事は、VMware Workstation 12 ProのインストールLinuxチュートリアル...

TSオブジェクトのスプレッド演算子とレスト演算子の詳細な説明

目次概要オブジェクトの残り属性オブジェクトの拡張プロパティオブジェクトの浅いコピーを作成するkeyo...

サーバー間のファイル バックアップ ソリューション、サーバー ファイルを別のサーバーに自動的にバックアップする方法は?

多くの組織ではファイル サーバーをバックアップする必要があり、あるサーバーから別のファイル サーバー...

Vueでデータを読み取るためにこれを悪用しないでください

目次序文1. これを使用してデータ内のデータを読み取るプロセス2. Dep.target はいつ存在...

CSS ブラウザ互換性の問題に対する 4 つの解決策

フロントエンドは、技術が急速に進化するだけでなく、知っておくべき事柄が多すぎるという理由で大変な仕事...

CSS コード省略 div+css レイアウト コード省略仕様

略語を使用すると、CSS ファイルのサイズが小さくなり、読みやすくなります。 CSS 省略形の主なル...

Linux での mysql および mysql.sock のインストールに関する問題

最近、Linux に Aphace、mysql、php をインストールするときに多くの問題に遭遇しま...

Layuiテーブル行のデータを動的に編集する

目次序文スタイル機能説明初期化コードイベントリスナーの追加リスナーツールバーモニターテーブル行ツール...

上下に空白行があるフォームを挿入する解決策

ウェブページを作成するときに、フォームを挿入した後、フォームの上下に空白行が表示されることがよくあり...

DockerはClickHouseをインストールし、データテストを初期化します

クリックハウスの紹介ClickHouse は、SQL クエリを使用して分析データ レポートをリアルタ...

ウェブページのコメントにより IE でテキストがオーバーフローする

実験コードは次のとおりです。 </head> <body> <div ...

Linux ファイル管理コマンド例の分析 [権限、作成、削除、コピー、移動、検索など]

この記事では、Linux ファイル管理コマンドについて例を挙げて説明します。ご参考までに、詳細は以下...

MySQL ステートメントを使用して、さまざまな整数が占めるバイト数とその最大値と最小値を調べる例

直接コード: タイプとして「bigint unsigned」、バイトとして「8」、max_numとし...

Node.js を使用して png 画像に透明なピクセルがあるかどうかを判断する方法

背景PNG 画像は jpg 画像よりも多くのストレージスペースを占有しますが、PNG 画像の品質は大...