6
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

@nuxtjs/markdownitを使ってマークダウンの記事をHTMLで出力する

Last updated at Posted at 2020-12-15

前回、nuxt.jsとcontentfulを使ってブログサイトを環境構築しました。
今回はmarkdownitというnpm moduleを使ってContentfulで書いたマークダウンの記事をHTMLで出力したいと思います。

設定していく

インストール

公式サイトを見ながら今回は@nuxtjs/markdownitを使ってやっていきます。

$ npm install @nuxtjs/markdownit

クリスマス仕様・・・?

コマンド実行したらクリスマスっぽいバナーが流れてきました 🎅 < Hello

スクリーンショット 2020-12-15 22.14.28.png

nuxt.config.jsに設定を追加する

nuxt.config.js
modules: [
  '@nuxtjs/axios',
  '@nuxt/content',
  '@nuxtjs/markdownit' //この1行追加
],
// ~~~~~~省略~~~~~~~

// 追加
markdownit: {
    injected: true,   // $mdを使ってどこからでも使えるようになる
    breaks: true      // 改行を<br>に変換してくれる
  }
}

vueファイルに$mdを追加する

templateの一部を差し替え

v-htmlを使用してHTMLを出力していきます

2重中括弧の mustaches は、データを HTML ではなく、プレーンなテキストとして扱います。実際の HTML として出力するためには、v-html ディレクティブを使用する必要があります。 引用:Vue.js - 生のHTML

_slug.vue
<!-- before -->
<div>
  {{ article.fields.body }}
</div>

<!-- after -->
<div v-html="$md.render(article.fields.body)"></div>

HTMLで出力できた

検証画面

スクリーンショット 2020-12-15 23.31.58.png

サイト画面

スクリーンショット 2020-12-15 23.32.09.png

npmのscopeって

@がついているパッケージ(@nuxtjs/markdownitとか)はscope付きパッケージといいます。
同じ名前のパッケージは存在できないので@nuxtjs/markdownit@hoge/markdownitのようにscopeを使用することで別のユーザーや組織が作成したパッケージと競合することなく作成ができます。

公式サイトのスコープに関する説明

終わりに

npmを追加しただけなので短いですが以上になります。
今回記事を書きながら実装しましたが、その際にバグを見つけてしまったので頑張って直そうと思います。。。

6
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
6
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?