Posts vue2.x基本概念
Post
Cancel

vue2.x基本概念

简介

官网介绍Vue (读音 /vjuː/,类似于 view) 是一套用于构建用户界面的渐进式框架。与其它大型框架不同的是,Vue 被设计为可以自底向上逐层应用。Vue 的核心库只关注视图层,不仅易于上手,还便于与第三方库或既有项目整合。另一方面,当与现代化的工具链以及各种支持类库结合使用时,Vue 也完全能够为复杂的单页应用提供驱动。

个人观点:(刚刚从React过来)

区别:

  1. react在每更新一个组件之后,都会以这个组件为根,向上或向下将整个组件树都更新一遍。如果不需要,则需要手动配置shouldComponentUpadate。

    而vue非常明确的更新你需要更新的那个组件。

  2. react使用的渲染语法为JSX,偏向逻辑。

    Vue使用的渲染语法为模板字符串,偏向最原始的html。

  3. 向上向下扩展做的规模很大。

  4. 学了一周Vue,在学的很浅的时候,感觉还是React爽,希望一个月后我会对Vue有不同的感受。

来自一个月后的我:vue真香了

声明式渲染

允许采用模板语法:

1
2
3
<div id="app">
    
</div>
1
2
3
4
5
6
var app = new Vue({
    el: '#app', //el相当于一个选择器,里面放置#+id
    data: {
        message: 'hello Vue'
    }
})

同时可以在页面通过 .来更改其值。

除了模板语法插入文本,还可以通过vue特有的标签v-bind来绑定元素。

1
2
3
4
5
<div id="app-2">
    <span v-bind:title="message">
    	鼠标悬停以查看时间信息
    </span>
</div>
1
2
3
4
5
6
var app2 = new Vue({
    el: '#app-2',
    data: {
        message:'页面加载于'+new Date().toLocaleString()
    }
})

类似于v-bind Attribute 被称为 指令。指令带有前缀 v- ,以表示他们式Vue提供的特殊标签:会在渲染DOM时使用特殊的响应式行为

条件与循环

条件v-if

1
2
3
4
5
<div id='app-3'>
    <p v-if='seen'>
        现在你看到我了
    </p>
</div>
1
2
3
4
5
6
var app3 = new Vue({
    el: '#app-3',
    data: {
        seen: true
    }
})

在控制台输入: app3.seen = false,可以发现文字消失了。

循环v-for

1
2
3
4
5
6
7
<div id='app-4'>
    <ol>
        <li v-for='todo in todos'>
        	
        </li>
    </ol>
</div>
1
2
3
4
5
6
7
8
9
10
var app4 = new Vue({
    el: '#app-4',
    data: {
        todos: [
            {text: 'text1', id:';lskajf'},
            {text: 'text2', id:';lsdskajf'},
            {text: 'text3', id:';lsdfskajf'},
        ]
    }
})

同样的:在控制台中输入 app4.todos.push({text: ‘新项目’,id:’sdlkfja;}),可以发现列表中会增加一行。

用户输入处理

按钮交互v-on

1
2
3
4
5
6
7
8
<div id='app-5'>
    <p>
        
    </p>
    <button v-on:click='myOnClick'>
        反转消息
    </button>
</div>
1
2
3
4
5
6
7
8
9
10
11
var app5 = new Vue({
    el: '#app-5',
    data: {
        message: 'hello Vue.js'
    },
    methods: {
        myOnClick: function(){
            this.message = this.message.split('').reverse().join('')
        }
    }
})

和react不同的是,虽然更新了状态,但是我们没有触碰到DOM——所有的DOM都有Vue来处理,我们只需要关注逻辑层。

表单与应用状态间的双向绑定v-model

1
2
3
4
5
6
<div id='app-6'>
    <p>
        
    </p>
    <input v-model="message" />
</div>
1
2
3
4
5
6
var app6 = new Vue({
    el: '#app-6',
    data: {
        message: 'Hello Vue'
    }
})

组件化应用构建

和React一样了,组件系统也是Vue的另一个重要概念,组件是一种抽象,允许我们使用小型、独立和通常可以复用的组件构建大型应用。

photo

一个组件本质上是有一个拥有预定义选项的一个Vue实例。

1
2
3
4
5
6
7
8
<div id='app-7'>
    <ol>
        <todo-item
                   v-for='item in groceryList'
                   v-bind:todo='item'
                   v-bind:key='item.id'
    </ol>
</div>
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
Vue.component('todo-item',{
    //todo-item 组件现在接收一个prop,类似于一个自定义Attribute
    //所要接收的prop名填在后面的数组中。
    props:['todo'],
    template: `
    	<li></li>
    `
})

var app7 = new Vue({
    el: '#app-7',
    data: {
        groceryList: [
            {id: 0, text: '蔬菜'},
      		{ id: 1, text: '奶酪' },
     		{ id: 2, text: '随便其它什么人吃的东西' }
        ]
    }
})
This post is licensed under CC BY 4.0 by the author.