• 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用于更大开销的操作
    

      

     

  • 相关阅读:
    HDU 5087 (线性DP+次大LIS)
    POJ 1064 (二分)
    Codeforces 176B (线性DP+字符串)
    POJ 3352 (边双连通分量)
    Codeforces 55D (数位DP+离散化+数论)
    POJ 2117 (割点+连通分量)
    POJ 1523 (割点+连通分量)
    POJ 3661 (线性DP)
    POJ 2955 (区间DP)
    LightOJ 1422 (区间DP)
  • 原文地址:https://www.cnblogs.com/jabbok/p/10616834.html
Copyright © 2020-2023  润新知