Nuxt.js 2에서 마크다운 렌더링하기
제가 쓰는 Nuxt 버전은 다음과 같습니다.
"nuxt": "^2.15.8",
"vue": "^2.7.10",
원래 평소와 똑같이 marked
를 임포트해서 처리하려고 했는데... 계속 계속 오류가 뜨길래 Nuxt에서 마크다운을 렌더링하는 기본적인 방법이 없나 찾아보았습니다.
결국 끝장을 보긴 했어요.
일단 @nuxtjs/markdownit
모듈을 깔아줍니다.
npm i @nuxtjs/markdownit
그다음 nuxt.config.js
에서 모듈 부분을 다음과 같이 바꿉니다.
//nuxt.config.js
// Modules: https://go.nuxtjs.dev/config-modules
modules: ['@nuxtjs/markdownit'],
markdownit: {
runtime: true // Support `$md()`
},
마크다운 렌더를 원하는 부분에 $md.render()
를 붙이면 끝.
// index.vue
<template>
<div v-html="$md.render(wikiBody1)"></div>
</template>
다만 marked.js보다는 별로라고 생각합니다. 아주 기본적인 마크다운 렌더는 지원하지만, 체크리스트 같은 게 제대로 렌더되지 않았다는 점을 고려해 보면, <sub>
등의 구문도, 접었다 펼치는 것도 지원하지 않을 거라고 생각해요.
이 부분은 어차피 replace 같은 걸로 따로 구현할 수 있는데, 따로 구현할지 아니면 그냥 둘지는 고민입니다.