vue教程1-初体验

起步

var vm = new Vue({
  // 选项
})
#每个Vue应用都需要通过实例化Vue来实现,语法格式继承原生js

  

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
	<script src="https://cdn.staticfile.org/vue/2.4.2/vue.min.js"></script>
</head>

<body>
    <div id="app">
        <h1>site: {{ site }}</h1>
        <h1>url: {{ url }}</h1>
        <h1>{{ details() }}</h1>
    </div>

    <script>
        var vm = new Vue({
            el: '#app',
            data: {
                    site: "jabbok blog",
                    url: "www.jabbok.com",
            },
            methods: {
                details:function () {
                    return this.site + "- for ops & dev!";
                }
            }
        })
    </script>
</body>
</html>
#el:就是DOM元素中的id,在这个例子中,vue的全部改动都会在这个id为app的div中产生影响。
#data:定义属性,将DOM中{{}}中的元素进行渲染替换
#methods:定义函数,这里是details(),可以通过return返回函数值,这里返回一个拼接字符串

  

模板语法-插值

文本

<div id="app">
  <p>{{ message }}</p>
</div>
#最常见的数据绑定就是使用{{}}的文本插值

  

html

<div id="app">
     <div v-html="message"></div>
</div>

<script>
    var vm = new Vue({
        el: '#app',
        data: {
			message: "<h1>jabbok cnblog</h1>",
        },
})
</script>
#在html标签中使用v-html属性,将vue中的data以html代码输出

  

模板语法-指令

指令是带有v-前缀的特殊属性,用于在表达式改变时,将某些行为应用到DOM上。

v-if

    <div id="app">
        <p v-if='seen'>this is v-if:seen</p>
        <p v-else>this is v-else:notseen</p>
    </div>
     
    <script>
        var vm = new Vue({
            el: '#app',
            data: {
                seen: true,
                }
    })
    </script>


#v-if决定一个DOM是否被销毁,通过true和false来决定
#如果id中有velse,当v-if为fasle,则显示v-else中的内容
#vm.seen被重置后,DOM元素随即改变

  

  

v-model

在表单空间元素上创建双向数据绑定。 

    <div id="app">
        <input v-model='message'>
        <p>{{message}}</p>
    </div>
     
    <script>
        var vm = new Vue({
            el: '#app',
            data: {
                message:'Hello Vue.js!'
                },
            methods:{
                ReverseFunc() {
                    this.message = this.message.split(' ').reverse().join(' ')
                }
            }
        }
        )
    </script>
#这是一个双向绑定,视图上(input)的值改变,会同步改变vue里的值,然后又反应到<p>中的值

  

v-bind

v-bind里引入新的概念-参数。和指令用冒号分开

<div id="app">
      <p v-bind:title='title'>one line</p>
      <a v-bind:href='url'>baidu</a>
</div>

<script>
    var vm = new Vue({
        el: '#app',
        data: {
            title: "this is a v-bind",
            url: 'http://baidu.com',
            
            }
})
</script>
#参数title、url被绑定,当vue中的data被改变,就会马上响应到DOM

  

v-for

<div id="app">
    <ol>
        <li v-for="name in names">{{ name.value }}</li>
    </ol>
</div>

<script>
    var vm = new Vue({
        el: '#app',
        data: {
            names:[
                {value: 'jab'},
                {value: 'eric'},
                {value: 'lee'}
            ]
            }
})
</script>
#names的每个name是一个键值对,在DOM中把每个name.value输出

  

v-on

添加事件监听器,响应事件

    <div id="app">
        <p>{{ message }}</p>
        <button v-on:click='ReverseFunc'>submit</button>
    </div>
     
    <script>
        var vm = new Vue({
            el: '#app',
            data: {
                message:'Hello Vue.js!'
                },
            methods:{
                ReverseFunc:function(){
                    this.message = this.message.split(' ').reverse().join(' ')
                }
            }
        }
        )
    </script>
#点击之后,触发ReverseFunc方法,将vm.message处理之后马上响应到DOM

  

模板语法-实时监听

    <div id="app">

        <p>{{message}}</p>
        <p>{{ReverseFunc}}</p>
        <p>{{ReverseFunc2()}}</p>
    </div>
     
    <script>
        var vm = new Vue({
            el: '#app',
            data: {
                message:'Hello Vue.js!'
                },
            computed:{
                ReverseFunc() {
                    return this.message.split(' ').reverse().join(' ')
                }
            },
            methods:{
                ReverseFunc2(){
                    return this.message.split(' ').reverse().join(' ')
                }
            }
        }
        )
    </script>
#ReverseFunc是计算属性
#ReverseFunc2是使用方法
#两种效果一样,但计算属性是依赖缓存,方法是每次重新调用
#所以计算属性性能好一点

  

    <div id="app">
        <input v-model='message'>
        <p>{{ReverseFunc}}</p>
    </div>
     
    <script>
        var vm = new Vue({
            el: '#app',
            data: {
                message:'Hello Vue.js!',
                ReverseFunc:''
                },
            watch:{
                message(){
                    this.ReverseFunc = this.message.split(' ').reverse().join(' ')
                }
            }
        }
        )
    </script>
#在watch里以监听属性为名的函数,然后再函数体做具体运算
#watch用于更大开销的操作

  

 

原文地址:https://www.cnblogs.com/jabbok/p/10616834.html