「Nuxt.js」ライブラリsimple-m-editorをインストールしてmarkdownエディタを作成する

環境

Windows 10 Home 64bt
node v14.18.3
npm 6.14.15
yarn 1.22.17

1.Nuxt.jsを環境構築します
「nuxteditor」という名前でプロジェクトを作成してます

c:\nuxtdemo>npx create-nuxt-app nuxteditor

create-nuxt-appの設定を行います

create-nuxt-app v4.0.0
✨  Generating Nuxt.js project in nuxteditor
? Project name: nuxteditor
? Programming language: JavaScript
? Package manager: Yarn
? UI framework: None
? Nuxt.js modules: (Press <space> to select, <a> to toggle all, <i> to invert selection)
? Linting tools: (Press <space> to select, <a> to toggle all, <i> to invert selection)
? Testing framework: None
? Rendering mode: Universal (SSR / SSG)
? Deployment target: Server (Node.js hosting)
? Development tools: (Press <space> to select, <a> to toggle all, <i> to invert selection)
? What is your GitHub username?
? Version control system: Git

環境構築の結果

Successfully created project nuxteditor

To get started:

      cd nuxteditor
      yarn dev

To build & start for production:

      cd nuxteditor
      yarn build
      yarn start

2.言語を設定します

プロジェクトnuxtappの配下にある「nuxt.config.js」を修正します
6行目 修正前
lang: 'en'
修正後
lang: 'jp'

3.simple-m-editorライブラリのインストール

>cd nuxteditor
>yarn add simple-m-editor
yarn add v1.22.17
[1/4] Resolving packages...
[2/4] Fetching packages...
[3/4] Linking dependencies...
warning "nuxt > @nuxt/components@2.2.1" has unmet peer dependency "consola@*".
[4/4] Building fresh packages...
success Saved lockfile.
success Saved 3 new dependencies.
info Direct dependencies
└─ simple-m-editor@0.4.6
info All dependencies
├─ highlight.js@11.6.0
├─ marked@2.1.3
└─ simple-m-editor@0.4.6
Done in 96.10s.

4.pluginsを設定します
「nuxt.config.js」に以下コードを追加します

plugins: [
  {
    src: '@/plugins/plugin',
    mode: 'client'
  }
],

5.pluginsフォルダ作成、 plugins配下にplugin.jsを作成します。
以下のコードを編集します

import Vue from 'vue'
import mEditor from 'simple-m-editor'
import 'simple-m-editor/dist/simple-m-editor.css'

Vue.component('mEditor',mEditor)

6.simple-m-editor使い方
pagesフォルダの配下にindex.vueを編集します

<template>
  <div class="relative flex items-top">    
    <m-editor
      v-model="text"
      @on-change="handleChange"
    />
    <div class="m-editor-preview" v-html="markdownContent"></div>
  </div>    
</template>

<script>

export default {  
  data() {
    return {
      text: '',
      markdownContent: ''
    };
  },
  methods: {
    handleChange(data) {
      this.markdownContent = data.htmlContent
    }
  }
};
</script>

7.yarnを起動します

c:\nuxtdemo\nuxteditor>yarn dev
yarn run v1.22.17
$ nuxt

   ╭───────────────────────────────────────╮
   │                                       │
   │   Nuxt @ v2.15.8                      │
   │                                       │
   │   ▸ Environment: development          │
   │   ▸ Rendering:   server-side          │
   │   ▸ Target:      server               │
   │                                       │
   │   Listening: http://localhost:3000/   │
   │                                       │
   ╰───────────────────────────────────────╯

8.動作確認
ブラウザから http://プライベートIP:3000にアクセスします

Nuxt.js

Posted by arkgame