72

Click here to load reader

Vue js 大型專案架構

Embed Size (px)

Citation preview

Page 1: Vue js 大型專案架構

#

VueJS

Page 2: Vue js 大型專案架構

Kuro Hsuhttp://goo.gl/m8wuEQ

Page 3: Vue js 大型專案架構

AgendaVueJS

VueJS

Vuex

Vue Router

VueStrap

JWT + Auth0

Page 4: Vue js 大型專案架構

VueJS

.vue

Page 5: Vue js 大型專案架構

VueJS

MVVM

Page 6: Vue js 大型專案架構

VueJS

Page 7: Vue js 大型專案架構

VueJS Lifecycle Hooks

init created beforeCompile compiled ready attached detached beforeDestroy destroyed

Page 8: Vue js 大型專案架構

VueJS index.html

Page 9: Vue js 大型專案架構

VueJS main.js

Page 10: Vue js 大型專案架構

VueJS

vueApp

https://github.com/vuejs/vue-cli

Page 11: Vue js 大型專案架構

VueJS .vue

components ng1.x Driective

Page 12: Vue js 大型專案架構

VueJS .vue

template

script

style

Page 13: Vue js 大型專案架構

VueJS .vue <template>

HTML jade

jade-loader mustache

* {{{ HTML }}}

<template lang=“jade”>

<div>

<h1>{{ message }}</h1>

<p>{{ *message }}</p>

<p>{{{ messageRawHtml }}}</p>

<p class="message-{{ messageId }}"></p>

</div>

</template>

http://vue-loader.vuejs.org/en/index.html

Page 14: Vue js 大型專案架構

VueJS .vue <style>

CSS

scss/sass

sass-loader

scoped

<style lang=“scss” scoped>

$primary-color: #633;

.component {

color: $primary-color;

}

</style>

http://vue-loader.vuejs.org/en/index.html

Page 15: Vue js 大型專案架構

VueJS

.vue <script>

script

coffee

coffee-loader

<script lang=“coffee”>

# Write your coffee script here.

# Coffee Script.

</script>

http://vue-loader.vuejs.org/en/index.html

Page 16: Vue js 大型專案架構

VueJS

Kuro Hsu http://goo.gl/m8wuEQ 閱

Page 17: Vue js 大型專案架構

VueJS 2.0 ?

Page 18: Vue js 大型專案架構
Page 19: Vue js 大型專案架構
Page 20: Vue js 大型專案架構

VueJS

Page 21: Vue js 大型專案架構

VueJS http://vuejs.org/guide/application.html

Page 22: Vue js 大型專案架構

VueJS

API

Page 23: Vue js 大型專案架構

VueJS veux

superagent

vue-router

JWT + Auth0

scss/sass/jade

coffee or native JavaScript

Page 24: Vue js 大型專案架構

Vuexhttps://github.com/vuejs/vuex

Page 25: Vue js 大型專案架構

Vuex

Page 26: Vue js 大型專案架構

VueJS + Vuex

Flux, Redux

http://vuex.vuejs.org/zh-cn/index.html

Page 27: Vue js 大型專案架構

https://github.com/vuejs/vuex

Vuex

Page 28: Vue js 大型專案架構

Vuex getters

state mutations

actions

modules

store

Page 29: Vue js 大型專案架構

Vuex

Page 30: Vue js 大型專案架構

Vuex getters actions

Page 31: Vue js 大型專案架構

Vuex getters this.

Page 32: Vue js 大型專案架構

Vuex

getters store mutation

Page 33: Vue js 大型專案架構

Vuex mutationmutation

mutation-types.js

Vue getters

Page 34: Vue js 大型專案架構

mutations。 utility.js 。

state。 mutations

mutation-types

state。

Vuex mutation

Page 35: Vue js 大型專案架構

mutation state。

dispatch Vue.set

Stage 2*

* https://github.com/sebmarkbage/ecmascript-rest-spread

Vuex mutation

Page 36: Vue js 大型專案架構

actions store actions.js

Vuex actions

Page 37: Vue js 大型專案架構

action mutations action store

mutation actions

Vuex actions

Page 38: Vue js 大型專案架構

- middleware Vuex -

Vuex middlewares

Page 39: Vue js 大型專案架構

https://github.com/vuejs/vuex

Vuex

Page 40: Vue js 大型專案架構

superagent

https://github.com/visionmedia/superagent

Ajax with less suck

Page 41: Vue js 大型專案架構

superagent

Page 42: Vue js 大型專案架構

Vuex + superagent- actions - API - 。

Page 43: Vue js 大型專案架構

action mutationsmutation

Vuex action + superagent

Page 44: Vue js 大型專案架構

Vue-routerhttps://github.com/vuejs/vue-router

Page 45: Vue js 大型專案架構

vue-router

Page 46: Vue js 大型專案架構

VueJS + vue-router

Nested view $router

$route hooks

Page 47: Vue js 大型專案架構

vue-router

Page 48: Vue js 大型專案架構

vue-router hashbang history abstract root linkActiveClass saveScrollPosition transitionOnLoad suppressTransitionError

# HTML5 History

Page 49: Vue js 大型專案架構

vue-router Nested

subRoutes

Page 50: Vue js 大型專案架構

vue-router Nested

<router-view> subRoutes

<router-view>

Page 51: Vue js 大型專案架構

vue-router Pipeline

Pipeline hooks

data activate deactivate canActivate canDeacivate canReuse

/foo/boo/qoo

/foo/goo/ooo?

Page 52: Vue js 大型專案架構

vue-router Hooks

data route

activate route

deactivate

Page 53: Vue js 大型專案架構

vue-router Hooks

canActivate

canDeactivate

canReuse true

Page 54: Vue js 大型專案架構

vue-router Hooks

data, activate, deactivate Promise Promise canActivate, canDeactivate Promise Boolean canReuse Boolean

Page 55: Vue js 大型專案架構

vue-router Hooks

http://router.vuejs.org/zh-cn/pipeline/index.html

Page 56: Vue js 大型專案架構

vue-router Hooks

http://router.vuejs.org/zh-cn/pipeline/index.html

Page 57: Vue js 大型專案架構

vue-router Hooks

http://router.vuejs.org/zh-cn/pipeline/index.html

Page 58: Vue js 大型專案架構

vue-router APIs

start

stop

map

on

go

replace

redirect

alias

beforeEach

afterEach

Page 59: Vue js 大型專案架構

VueStraphttps://github.com/yuche/vue-strap

Page 60: Vue js 大型專案架構

VueStrap

Page 61: Vue js 大型專案架構

VueStrap

angularStrap

VueJS

Bootstrap 3.x.x CSS

Page 62: Vue js 大型專案架構

VueStrap

Page 63: Vue js 大型專案架構

VueStrap

Page 64: Vue js 大型專案架構

VueStrap

Page 65: Vue js 大型專案架構

VueStrap

Bootstrap

Page 66: Vue js 大型專案架構

JWT + Auth0

Page 67: Vue js 大型專案架構

JWT + Auth0 JSON Web Token

PHP firebase/php-jwt

JWT+auth0 with VueJS https://goo.gl/gdf3H8

Page 68: Vue js 大型專案架構

JWT + Auth0 Vuex actions Token

store

Token header Authorization

localStorage Token

Cookie

Page 69: Vue js 大型專案架構

JWT + Auth0

https://goo.gl/gdf3H8

Page 70: Vue js 大型專案架構

JWT + Auth0

https://goo.gl/gdf3H8

Page 71: Vue js 大型專案架構

https://auth0.com/blog/2015/11/13/build-an-app-with-vuejs/

https://yuche.github.io/vue-strap/

http://vuex.vuejs.org/en/index.html

http://router.vuejs.org/en/index.html

https://vuejs.org

Page 72: Vue js 大型專案架構

Thanks