auの日記

プログラミング初心者の日記。(auはハンドルネームです)

Vueにスマートなサイドバーを速攻で実装する方法

auです。

Vue.jsを使って、サイドバーを実装してみました。と言っても、パッケージを使ったので見た目だけですが・・・。

使ったパッケージがこちら

github.com

デモを見てもらえれば分かるのですが、UIもUXも高く、使い勝手が良さそうですね。

実際に入れてみる

1. npmを使ってインストールする

npm i vue-sidebar-menu --save

2. Sidebar.vueを作ってimportする

node_moduleにある「vue-sidebar-menu」をローカルファイルへインポートしていますね。

<template>
  <sidebar-menu :menu="menu">
  </sidebar-menu>
</template>
<script>
import { SidebarMenu } from 'vue-sidebar-menu'
export default {
  components: {
    SidebarMenu
  },
  data () {
    return {
      menu: [
        {
          header: true,
          title: 'Main Navigation',
          hiddenOnCollapse: true
        },
        {
          href: '/',
          title: 'Dashboard',
          icon: 'fa fa-user'
        },
        {
          href: '/charts',
          title: 'Charts',
          icon: 'fa fa-chart-area',
          child: [
            {
              href: '/charts/sublink',
              title: 'Sub Link'
            }
          ]
        }
      ]
    }
  }
}
<style scoped>
</style>

ただ、このままだと貧相な見た目をしています。cssが適応されていません。
f:id:program-shoshinsya:20200508212434p:plain

3. cssを「main.js」にimportする

Githubにも書いてあるのですが、cssをimportしなければいけません。

ずっと「Sidebar.js」にcssをimportするのだと思っていたのですが、main.jsにimportすることで解決しました。

import Vue from 'vue'
import App from './App'
import router from './router'
import 'vue-sidebar-menu/src/scss/vue-sidebar-menu.scss'

Vue.config.productionTip = false

/* eslint-disable no-new */
new Vue({
  el: '#app',
  router,
  components: { App },
  template: '<App/>'
})

scssファイルが必要など書いてあったのですが、調べてもどの階層に該当ファイルを作ればいいのか分かりませんでした・・・。

Vueの更新で、Webpackがvue.config.jsに置き換わったりした〜とか書いてあったので、どちらも検索にヒットしてしまったのが原因だと思われます。

何がともあれ、無事に実装することができました。
f:id:program-shoshinsya:20200508212821p:plain