「nuxt.js」ライブラリvue-contextをインストールしてコンテキストメニューを作成する

環境

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

操作方法
1.「nuxtcontext」という名前でプロジェクトを作成し
C:\study\skill\nuxt>npx create-nuxt-app nutxcontext

create-nuxt-app v4.0.0
✨  Generating Nuxt.js project in nutxcontext
? Project name: nutxcontext
? 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 nutxcontext

  To get started:

        cd nutxcontext
        yarn dev

  To build & start for production:

        cd nutxcontext
        yarn build
        yarn start

2.vue-contextをインストールします
作成したプロジェクトに移動します
>cd nutxcontext

vue-contextのインストール

>yarn add vue-context
yarn add v1.22.17
[1/4] Resolving packages...
warning vue-context@6.0.0: No longer maintained
[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
└─ vue-context@6.0.0
info All dependencies
├─ loose-envify@1.4.0
├─ vue-clickaway@2.2.2
└─ vue-context@6.0.0
Done in 34.96s.

3.pluginsフォルダ、plugin.jsを作成します
以下の内容を編集します

import Vue from 'vue'
import VueContext from 'vue-context'
import 'vue-context/dist/css/vue-context.css'
Vue.component('vue-context', VueContext)

4.プロジェクト配下にあるnuxt.config.jsに下記のコードを追加します

plugins: [
    {
      src: '@/plugins/plugin',
      mode: 'client'
    }
  ],
  // Build Configuration: https://go.nuxtjs.dev/config-build
  build: {
  }

5.pages配下にindex.vueを下記のコードを編集します

<template>
  <div class="container">
    <div>
      <div>
        <p @contextmenu.prevent="$refs.menu.open">
          マウスを右クリックしてメニューを選択します
        </p>
      </div>
      <vue-context ref="menu">
        <li>
          <a @click.prevent="onClick($event.target.innerText)">更新</a>
        </li>
        <li>
          <a @click.prevent="onClick($event.target.innerText)">削除</a>
        </li>
      </vue-context>
    </div>
  </div>
</template>

<script>

export default {
  name: 'Nuxttest',
  methods: {
    onClick (text) {
      alert(`クリックしたのは ${text}です`)
    }
  }
}
</script>
<style>
.container {
  margin: 0 auto;
  min-height: 100vh;
  display: flex;
  justify-content: center;
  align-items: center;
  text-align: center;
}
</style>

5.yarnを起動します

>yarn dev
$ nuxt

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

6.ブラウザから http://プライベートIP:3000にアクセスします。

画面に文字「マウスを右クリックしてメニューを選択します」が表示されます。
文字をを右クリックするとコンテキストメニュー「更新、削除」が表示されていることが確認できます。

 

Nuxt.js

Posted by arkgame