zoukankan      html  css  js  c++  java
  • computed 与 method

    在vue.js中,methods和computed是动态当作方法来用的,可以使用 methods 来替代 computed,效果俩个是一样的。

    不同:

    1、调用的时候,methods要加上()

    2、computed 是基于它的依赖缓存,只有相关依赖发生改变时才会重新取值。

      methods 在重新渲染的时候,函数总会重新调用执行

    <!DOCTYPE html>
    <html>
        <head>
            <meta charset="utf-8">
            <title>title</title>
            <script src="https://cdn.staticfile.org/vue/2.2.2/vue.min.js"></script>
        </head>
        <body>
            <div class="test">    <!--computed计算属性-->
                <p>{{now}}</p>
                <p>{{now}}</p>
                <p>{{now}}</p>
                <p>{{now}}</p>
                <hr />            <!--横线分割-->
         </div>
            <div class="test2">   <!--methods方法,注意new()加了括号-->
                <p>{{now()}}</p>
                <p>{{now()}}</p>
                <p>{{now()}}</p>
                <p>{{now()}}</p>
            </div>
        </body>
    
        <script type="text/javascript">
            var myVue = new Vue({
                el: ".test",
                computed: {
                    now: function() {
                        var yanshi = 0;
                        for(var o = 0; o < 2000; o++) {     //延时
                            for(var q = 0; q < 2000; q++) {
                                yanshi++;
                            }
                        }
                        return Date.now()
                    }
                }
            });
            var vue2 = new Vue({
                el: '.test2',
                methods: {
                    now: function() {
                        var yanshi = 0;
                        for(var o = 0; o < 2000; o++) {
                            for(var q = 0; q < 2000; q++) {
                                yanshi++;
                            }
                        }
                        return Date.now()
                    }
                }
            })
        </script>
    </html>

    结果如下:

    总结:

    1、computed 计算属性的话,每次进入页面将一直沿用第一次的信息,不会再触发now,这就是依赖缓存。(有延时的情况下 多次输出时间相同)

    如果reversedMessage function() 计算属性中调用了 message 变量。就意味着只要 message 还没有发生改变,多次访问 reversedMessage 计算属性会立即返回之前的计算结果,而不必再次执行函数。

    2、methods是实时的,在重新渲染时,函数总会重新调用执行,不会缓存,(多次输出时间不同)

    所以:使用 computed 性能会更好,但是如果不希望缓存,可以使用 methods 属性。

    computed 属性默认只有 getter ,不过在需要时也可以提供一个 setter :所以其实computed也是可以传参的。具体参考:https://www.runoob.com/vue2/vue-computed.html

  • 相关阅读:
    php多态
    ssl certificate problem: self signed certificate in certificate chain
    test plugin
    open specific port on ubuntu
    junit vs testng
    jersey rest service
    toast master
    use curl to test java webservice
    update folder access
    elk
  • 原文地址:https://www.cnblogs.com/redFeather/p/15532648.html
Copyright © 2011-2022 走看看