27
Vue.js 2.0 ڹᒒຝݸᒒວਫ᪢ ᴢก ᑑയᰂڠতՈ www.juejin.im

Vue.js 2.0 ¹ J x É - Huodongjia.com• vue-cli • _ o ø vue-loader • § vue-router • ë ¾ Õ X vuex • Ajax vue-resource / vue-axios • ¹ O N á M vue-devtools

  • Upload
    others

  • View
    5

  • Download
    0

Embed Size (px)

Citation preview

Page 1: Vue.js 2.0 ¹ J x É - Huodongjia.com• vue-cli • _ o ø vue-loader • § vue-router • ë ¾ Õ X vuex • Ajax vue-resource / vue-axios • ¹ O N á M vue-devtools

Vue.js 2.0

www.juejin.im

Page 2: Vue.js 2.0 ¹ J x É - Huodongjia.com• vue-cli • _ o ø vue-loader • § vue-router • ë ¾ Õ X vuex • Ajax vue-resource / vue-axios • ¹ O N á M vue-devtools

• Vue

• Vue

• Vue 2.0

• Vue 2.0 Render Function &

Vue.js

Page 3: Vue.js 2.0 ¹ J x É - Huodongjia.com• vue-cli • _ o ø vue-loader • § vue-router • ë ¾ Õ X vuex • Ajax vue-resource / vue-axios • ¹ O N á M vue-devtools

Bc.CUHK

MPhil.Cambridge

xitu.io / juejin.im

Page 4: Vue.js 2.0 ¹ J x É - Huodongjia.com• vue-cli • _ o ø vue-loader • § vue-router • ë ¾ Õ X vuex • Ajax vue-resource / vue-axios • ¹ O N á M vue-devtools

Vue.js

Why

What

How

Page 5: Vue.js 2.0 ¹ J x É - Huodongjia.com• vue-cli • _ o ø vue-loader • § vue-router • ë ¾ Õ X vuex • Ajax vue-resource / vue-axios • ¹ O N á M vue-devtools

• The Progressive JavaScript Framework

• GitHub 3 5 ⭐

• NPM 22 ⏬

Vue.js/about

Page 6: Vue.js 2.0 ¹ J x É - Huodongjia.com• vue-cli • _ o ø vue-loader • § vue-router • ë ¾ Õ X vuex • Ajax vue-resource / vue-axios • ¹ O N á M vue-devtools

Vue.js

coder-price http://xitu.github.io/coder-price/

Page 7: Vue.js 2.0 ¹ J x É - Huodongjia.com• vue-cli • _ o ø vue-loader • § vue-router • ë ¾ Õ X vuex • Ajax vue-resource / vue-axios • ¹ O N á M vue-devtools

Vue.js

1.0 MVVM

Model / View / ModelView

UI = VM(State)

Page 8: Vue.js 2.0 ¹ J x É - Huodongjia.com• vue-cli • _ o ø vue-loader • § vue-router • ë ¾ Õ X vuex • Ajax vue-resource / vue-axios • ¹ O N á M vue-devtools

Vue.js

2.0

Page 9: Vue.js 2.0 ¹ J x É - Huodongjia.com• vue-cli • _ o ø vue-loader • § vue-router • ë ¾ Õ X vuex • Ajax vue-resource / vue-axios • ¹ O N á M vue-devtools

Vue.js Object.defineProperty

Page 10: Vue.js 2.0 ¹ J x É - Huodongjia.com• vue-cli • _ o ø vue-loader • § vue-router • ë ¾ Õ X vuex • Ajax vue-resource / vue-axios • ¹ O N á M vue-devtools

Vue.js Demo

Page 11: Vue.js 2.0 ¹ J x É - Huodongjia.com• vue-cli • _ o ø vue-loader • § vue-router • ë ¾ Õ X vuex • Ajax vue-resource / vue-axios • ¹ O N á M vue-devtools

Vue.js

0.12.5

1.x

2.x

Page 12: Vue.js 2.0 ¹ J x É - Huodongjia.com• vue-cli • _ o ø vue-loader • § vue-router • ë ¾ Õ X vuex • Ajax vue-resource / vue-axios • ¹ O N á M vue-devtools
Page 13: Vue.js 2.0 ¹ J x É - Huodongjia.com• vue-cli • _ o ø vue-loader • § vue-router • ë ¾ Õ X vuex • Ajax vue-resource / vue-axios • ¹ O N á M vue-devtools

• 1 3

• >

Page 14: Vue.js 2.0 ¹ J x É - Huodongjia.com• vue-cli • _ o ø vue-loader • § vue-router • ë ¾ Õ X vuex • Ajax vue-resource / vue-axios • ¹ O N á M vue-devtools

• Vue.component: vue-loader / vueify

• Single File Component

Vue.js

Page 15: Vue.js 2.0 ¹ J x É - Huodongjia.com• vue-cli • _ o ø vue-loader • § vue-router • ë ¾ Õ X vuex • Ajax vue-resource / vue-axios • ¹ O N á M vue-devtools

• .vue

• <template>

• <style>

• <script>

• JavaScript import / export

• webpack

Single File Component

Page 16: Vue.js 2.0 ¹ J x É - Huodongjia.com• vue-cli • _ o ø vue-loader • § vue-router • ë ¾ Õ X vuex • Ajax vue-resource / vue-axios • ¹ O N á M vue-devtools

• vue-cli

• vue-loader

• vue-router

• vuex

• Ajax vue-resource / vue-axios

• vue-devtools

• vux / vue-mdl / mint-ui / element

Vue.js

Page 17: Vue.js 2.0 ¹ J x É - Huodongjia.com• vue-cli • _ o ø vue-loader • § vue-router • ë ¾ Õ X vuex • Ajax vue-resource / vue-axios • ¹ O N á M vue-devtools

Vue.js

Page 18: Vue.js 2.0 ¹ J x É - Huodongjia.com• vue-cli • _ o ø vue-loader • § vue-router • ë ¾ Õ X vuex • Ajax vue-resource / vue-axios • ¹ O N á M vue-devtools

Vue.js 2.0

Virtual DOM Render Function

Page 19: Vue.js 2.0 ¹ J x É - Huodongjia.com• vue-cli • _ o ø vue-loader • § vue-router • ë ¾ Õ X vuex • Ajax vue-resource / vue-axios • ¹ O N á M vue-devtools

• v-for=“item in items”, :key

• v-on:click.prevent / @click.prevent

• v-bind:user / :user

• <transition> <transition-group>

Page 20: Vue.js 2.0 ¹ J x É - Huodongjia.com• vue-cli • _ o ø vue-loader • § vue-router • ë ¾ Õ X vuex • Ajax vue-resource / vue-axios • ¹ O N á M vue-devtools

• <input

type=“checkbox" v-model=“toggle" :true-value=“a" :false-value=“b”

> <input v-model.lazy="msg" > <input v-model.number="age" type="number"> <input v-model.trim="msg">

• Class • <div :class=“[activeClass, errorClass]">

Page 21: Vue.js 2.0 ¹ J x É - Huodongjia.com• vue-cli • _ o ø vue-loader • § vue-router • ë ¾ Õ X vuex • Ajax vue-resource / vue-axios • ¹ O N á M vue-devtools

• Vue.js 2.0 DOM Virtual DOM

Virtual DOM

<ul id='myId'> <li>Item 1</li> <li>Item 2</li> <ul>

// Pseudo-code of a DOM node represented as Javascript Let domNode = { tag: 'ul' attributes: { id: 'myId' } children: [ // where the LI's would go ] };

domNode.children.push('<ul>Item 3</ul>'); sync(originalDomNode, domNode);

Page 22: Vue.js 2.0 ¹ J x É - Huodongjia.com• vue-cli • _ o ø vue-loader • § vue-router • ë ¾ Õ X vuex • Ajax vue-resource / vue-axios • ¹ O N á M vue-devtools

• Render Function DOM

Render Function

<div id='app'> <div id='myId'>

hello world </div>

</div>

new Vue({ el: '#app', data: { message: 'hello world' }, render() { var node = this.$createElement; return node( 'div', { attrs: { id: 'myId' } }, this.message ); } });

Page 23: Vue.js 2.0 ¹ J x É - Huodongjia.com• vue-cli • _ o ø vue-loader • § vue-router • ë ¾ Õ X vuex • Ajax vue-resource / vue-axios • ¹ O N á M vue-devtools

• createElement • jsx

Render Function // @returns {VNode} createElement( // {String | Object | Function}

// An HTML tag name, component options, or function // returning one of these. Required. 'div',

// {Object} // A data object corresponding to the attributes // you would use in a template. Optional.

{ // (see details in the next section below) }, // {String | Array}

// Children VNodes. Optional. [ createElement('h1', 'hello world'),

createElement(MyComponent, { props: { someProp: 'foo'

} }), 'bar' ]

)

Page 24: Vue.js 2.0 ¹ J x É - Huodongjia.com• vue-cli • _ o ø vue-loader • § vue-router • ë ¾ Õ X vuex • Ajax vue-resource / vue-axios • ¹ O N á M vue-devtools

• Render Function Node

Page 25: Vue.js 2.0 ¹ J x É - Huodongjia.com• vue-cli • _ o ø vue-loader • § vue-router • ë ¾ Õ X vuex • Ajax vue-resource / vue-axios • ¹ O N á M vue-devtools

// Step 1: Create a Vue instance

var Vue = require('vue')

var app = new Vue({

render: function (h) {

return h('p', 'hello world')

}

})

// Step 2: Create a renderer

var renderer = require(‘vue-server-renderer’)

.createRenderer()

// Step 3: Render the Vue instance to HTML

renderer.renderToString(app, function (error, html) {

if (error) throw error

console.log(html)

// => <p server-rendered="true">hello world</p>

})

• Example

• nuxt.js

Page 26: Vue.js 2.0 ¹ J x É - Huodongjia.com• vue-cli • _ o ø vue-loader • § vue-router • ë ¾ Õ X vuex • Ajax vue-resource / vue-axios • ¹ O N á M vue-devtools

• Vue function call window context

• renderer js

• Vue.js 2.0 Stream

• HTML • renderer.renderToStream( … )

Page 27: Vue.js 2.0 ¹ J x É - Huodongjia.com• vue-cli • _ o ø vue-loader • § vue-router • ë ¾ Õ X vuex • Ajax vue-resource / vue-axios • ¹ O N á M vue-devtools

Thx with 💕💕💕💕💕💕💕💕💕💕