【Vue】Vuetify ~ 入門編 ~

■ はじめに

Vuetify - A Material Design Framework for Vue.js
っていうのを触れる機会があったので、メモ。

過去の記事を漁っていたら、以下の関連記事で少しだけ触れていた。。。

https://dk521123.hatenablog.com/entry/2018/05/26/005948

目次

【1】Vuetify とは?
【2】環境設定
【3】サンプル

【1】Vuetify とは?

* Vue.js対応のマテリアル デザイン フレームワーク
* MIT License (商用利用可能)

※ マテリアル デザイン フレームワークについては、
 以下の関連記事を参照のこと。

https://dk521123.hatenablog.com/entry/2018/05/26/005948

公式サイト

https://vuetifyjs.com/ja/
テンプレート
https://vuetifyjs.com/ja/resources/themes/

【2】環境設定

1)Node をインストールする

* 以下の関連記事を参照のこと。

https://dk521123.hatenablog.com/entry/2018/06/05/211900

2)コマンドで設定を行う

# プロジェクトを作っていない場合は、
# 「補足:新規プロジェクトを立ち上げる場合」を参照。

# インストール
vue add vuetify

補足:新規プロジェクトを立ち上げる場合
https://dk521123.hatenablog.com/entry/2020/12/22/192553

の「2)vue init コマンド / vue create コマンド」より抜粋
~~~~~~~
# 「my-app」ってプロジェクトを新規で立ち上げる
vue create my-app
~~~~~~~
Vue CLI v4.5.9
? Please pick a preset: Manually select features
? Check the features needed for your project: Choose Vue version, Babel, TS, PWA, Router, Vuex, Linter, Unit, E2E
? Choose a version of Vue.js that you want to start the project with 2.x <=★2.x系にしないとエラー★
? Use class-style component syntax? Yes
? Use Babel alongside TypeScript (required for modern mode, auto-detected polyfills, transpiling JSX)? Yes
? Use history mode for router? (Requires proper server setup for index fallback in production) Yes
? Pick a linter / formatter config: Basic
? Pick additional lint features: Lint on save
? Pick a unit testing solution: Jest
? Pick an E2E testing solution: WebdriverIO
? Pick browsers to run end-to-end test on Chrome
? Where do you prefer placing config for Babel, ESLint, etc.? In package.json
? Save this as a preset for future projects? Yes
? Save preset as:

Vue CLI v4.5.9
・・・略・・・
~~~~~~~

cd my-app

# インストール
vue add vuetify

補足:警告・エラーに関するトラブルシューティング

* 以下の関連記事を参照のこと。

https://dk521123.hatenablog.com/entry/2021/02/08/000000

【3】サンプル

今回は、「Hello.vue」を追加してみる

src/App.vue

<template>
  <v-app>
    <v-main>
      <router-view />
    </v-main>
  </v-app>
</template>

<script lang="ts">
import Vue from 'vue';

export default Vue.extend({
  name: 'App',

  data: () => ({
    //
  }),
});
</script>

src/router/index.ts

import Vue from 'vue'
import VueRouter, { RouteConfig } from 'vue-router'
import Home from '../views/Home.vue'
// ★ここを追加★
import Hello from '../views/Hello.vue'

Vue.use(VueRouter)

const routes: Array<RouteConfig> = [
  {
    path: '/',
    name: 'Home',
    component: Home
  },
  // ★ここを追加★
  {
    path: '/hello',
    name: 'Hello',
    component: Hello
  },
  {
    path: '/about',
    name: 'About',
    // route level code-splitting
    // this generates a separate chunk (about.[hash].js) for this route
    // which is lazy-loaded when the route is visited.
    component: () => import(/* webpackChunkName: "about" */ '../views/About.vue')
  }
]

const router = new VueRouter({
  mode: 'history',
  base: process.env.BASE_URL,
  routes
})

export default router

動作確認

[1] 以下のコマンドでローカル環境のサーバ起動
~~~~~
npm run serve
~~~~~

[2] ブラウザで以下のURLにアクセスする

http://localhost:8080/hello

関連記事

Vue.js ~ 入門編 ~
https://dk521123.hatenablog.com/entry/2020/04/30/000000
Vue.js ~ 基本編 ~
https://dk521123.hatenablog.com/entry/2020/12/19/000000
Vuetify ~ 基本編 ~
https://dk521123.hatenablog.com/entry/2021/02/21/162236
Vuetify ~ コンポーネント編 ~
https://dk521123.hatenablog.com/entry/2021/02/14/180324
Vuetify ~ ユーザへの通知 ~
https://dk521123.hatenablog.com/entry/2021/03/01/225352
Vuetify ~ ローディング中の表示 ~
https://dk521123.hatenablog.com/entry/2021/03/03/111740
Vuetify + TypeScript で トップに戻る 丸ボタンを作る
https://dk521123.hatenablog.com/entry/2021/02/20/000000
Vuetify に関するトラブルシューティング
https://dk521123.hatenablog.com/entry/2021/02/08/000000
Vue CLI ~ 入門編 ~
https://dk521123.hatenablog.com/entry/2020/12/22/192553
Vue Router ~ 入門編 ~
https://dk521123.hatenablog.com/entry/2020/12/24/000000
マテリアル デザイン フレームワーク の比較調査
https://dk521123.hatenablog.com/entry/2018/05/26/005948