Slide 1

Slide 1 text

Vue Router ͱ Nuxt ͷϧʔςΟϯά גࣜձࣾRe:Build Յ਺ ါىʢ@kkznchʣ 2019೥10݄25೔ʢۚʣ v-okinawa Vue.js/Nuxt.js meetup #2

Slide 2

Slide 2 text

͚͚ͣΜ @kkznch ܦྺ ɾ1990೥ͷԭೄੜ·Ε ɾී௨ߴग़਎ɺླྀେ৘ใ޻ֶՊग़਎ ɾిྗձࣾͷITΠϯϑϥɺηΩϡϦςΟ ɾגࣜձࣾRe:BuildͰWebΤϯδχΞ झຯ ɾήʔϜɺΞχϝɺόϨʔϘʔϧɺϐΞϊ ࠷ۙͷग़དྷࣄ ɾMGSͷϓϨΠಈը͕໘ന͍ɺݟΔ΂͖

Slide 3

Slide 3 text

ࠓ೔࿩͢͜ͱ • Vue Router ʹ͍ͭͯ • Nuxt ͷϧʔςΟϯάʹ͍ͭͯ

Slide 4

Slide 4 text

Vue Router

Slide 5

Slide 5 text

Vue Router ͸ Vue.js ެࣜϧʔλͰ͢ ※ Vue Router ެࣜαΠτ(https://router.vuejs.org/ja/) ΑΓ

Slide 6

Slide 6 text

SPA (Single Page Application) Λ ࣮ݱ͢ΔͨΊͷύοέʔδ

Slide 7

Slide 7 text

No content

Slide 8

Slide 8 text

import Vue from 'vue'; import VueRouter from 'vue-router'; import First from '../views/First'; import Second from '../views/Second'; Vue.use(VueRouter); const routes = [ { path: '/first', name: 'first', component: First, }, { path: '/second', name: 'second', component: Second, } ]; const router = new VueRouter({ mode: 'history', base: process.env.BASE_URL, routes }); export default router router.js

Slide 9

Slide 9 text

import Vue from 'vue' import App from './App.vue' import router from './router' Vue.config.productionTip = false new Vue({ router, render: h => h(App) }).$mount('#app') main.js

Slide 10

Slide 10 text

App.vue
First | Second

Slide 11

Slide 11 text

Nuxt ͷϧʔςΟϯά

Slide 12

Slide 12 text

Nuxt.js ͸ pages σΟϨΫτϦ಺ͷ Vue ϑΝΠϧͷ໦ߏ଄ʹԊͬͯɺࣗಈతʹ vue-router ͷઃఆΛੜ੒͠·͢ ※ NUXT JS ެࣜαΠτ(https://ja.nuxtjs.org/guide/routing/) ΑΓ

Slide 13

Slide 13 text

No content

Slide 14

Slide 14 text

No content

Slide 15

Slide 15 text

First | Second
layouts/default.vue

Slide 16

Slide 16 text

ͲɺͲ͏ͳ͍ͬͯΔΜͩ...ʁ

Slide 17

Slide 17 text

$ yarn run dev

Slide 18

Slide 18 text

import Vue from 'vue' import Router from 'vue-router' import { interopDefault } from './utils' import scrollBehavior from './router.scrollBehavior.js' const _fd0ef1ee = () => interopDefault(import('../pages/first.vue' /* webpackChunkName: "pages/first" */)) const _59dc092a = () => interopDefault(import('../pages/second.vue' /* webpackChunkName: "pages/second" */)) const _4968fc2b = () => interopDefault(import('../pages/index.vue' /* webpackChunkName: "pages/index" */)) Vue.use(Router) export const routerOptions = { mode: 'history', base: decodeURI('/'), linkActiveClass: 'nuxt-link-active', linkExactActiveClass: 'nuxt-link-exact-active', scrollBehavior, routes: [{ path: "/first", component: _fd0ef1ee, name: "first" }, { path: "/second", component: _59dc092a, name: "second" }, { path: "/", component: _4968fc2b, name: "index" }], fallback: false } export function createRouter () { return new Router(routerOptions) } .nuxt/router.js

Slide 19

Slide 19 text

ͪͳΈʹ ੩తϑΝΠϧॻ͖ग़͠ͷ৔߹ͩͱ

Slide 20

Slide 20 text

$ yarn run generate

Slide 21

Slide 21 text

·ͱΊ

Slide 22

Slide 22 text

·ͱΊ • Vue Router ͰSPAͳϖʔδ͕࡞ΕΔ • Nuxt Ͱ؆୯ʹSPAͳϖʔδ͕࡞ΕΔ • Nuxt ͷϧʔςΟϯά׬શʹཧղͨ͠