最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

深入淺析Vue.js中 computed和methods不同機(jī)制

 更新時間:2018年03月22日 16:47:04   作者:liangyuqi  
這篇文章給大家介紹了Vue.js中 computed和methods不同機(jī)制,在vue.js中,methods和computed兩種方式來動態(tài)當(dāng)作方法使用,文中還給大家提到了computed和methods的區(qū)別,感興趣的朋友一起看看吧

在vue.js中,有methods和computed兩種方式來動態(tài)當(dāng)作方法來用的

1.首先最明顯的不同 就是調(diào)用的時候,methods要加上()

2.我們可以使用 methods 來替代 computed,效果上兩個都是一樣的,但是 computed 是基于它的依賴緩存,只有相關(guān)依賴發(fā)生改變時才會重新取值。

而使用 methods ,在重新渲染的時候,函數(shù)總會重新調(diào)用執(zhí)行

為了方便理解,先上一段源碼

<!DOCTYPE html>
<html>
  <head>
    <meta charset="utf-8">
    <title>title</title>
    <script src="https://cdn.bootcss.com/vue/2.4.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>

運(yùn)行結(jié)果如上,可以看出computed計算屬性的話,每次進(jìn)入頁面將一直沿用第一次的信息,不會再觸發(fā)now,這就是依賴緩存。(有延時的情況下 多次輸出時間相同)

那什么是相關(guān)依賴發(fā)生改變時才會重新取值呢 比方說reversedMessage function()計算屬性中調(diào)用了message變量

就意味著只要 message 還沒有發(fā)生改變,多次訪問 reversedMessage 計算屬性會立即返回之前的計算結(jié)果,而不必再次執(zhí)行函數(shù)。

而methods是實時的,在重新渲染時,函數(shù)總會重新調(diào)用執(zhí)行,不會緩存,(多次輸出時間不同)

可以說使用 computed 性能會更好,但是如果你不希望緩存,你可以使用 methods 屬性。

computed 屬性默認(rèn)只有 getter ,不過在需要時你也可以提供一個 setter :所以其實computed也是可以傳參的。

ps:下面看下vue計算屬性computed和methods的區(qū)別

在new Vue的配置參數(shù)中的computed和methods都可以處理大量的邏輯代碼,但是什么時候用哪個屬性,要好好區(qū)分一下才能做到正確的運(yùn)用vue。
computed稱為計算屬性,顧名思義,計算就要返回一個計算的結(jié)果,所以,當(dāng)我們要處理大量的邏輯,但是最后要取得最后的結(jié)果的時候可以用computed;
簡單示例:
要求:
<input type="text v-model="num1"><input type="text v-model="num2">
現(xiàn)在要返回num1和num2的和;
<script>
  new Vue({
    el:"#box",
    data:{
        num1:0,
        num2:0
        }
    computed:{  
        result:function(){
            return this.num1 + this.num2  
            // 計算屬性必須有一個返回值
        }
    }
   })
</script>
methods:是方法的意思,在js中,我們把一些函數(shù)叫做方法,一般情況下,要觸發(fā)這個方法就要執(zhí)行,要執(zhí)行就要有一個源來觸發(fā),所以就需要一個事件源。這是和computed的一點不同之處;
methods的示例:
要求:
<\button @click="do()">點擊彈出<\/button>
<script>
  new Vue({
    el:"#box",
    data:{
        num1:0,
        num2:0
        }
    methods:{  
        do:function(){
           alert('ok')
           //這里根據(jù)情況,可以返回有返回值也可以沒有返回值。
        }
    }
   })
</script>
對比computed 和 methods:
computed計算的結(jié)果如果不發(fā)生改變就不會觸發(fā)result這個函數(shù)。而methods中一般都是定義的需要事件觸發(fā)的一些函數(shù)。每次只要觸發(fā)事件,就會執(zhí)行對應(yīng)的方法。如果把computed中的方法寫到method中會浪費(fèi)性能。
computed必須返回一個值頁面綁定的才能取得值,而methods中可以只執(zhí)行邏輯代碼,可以有返回值,也可以沒有。

總結(jié)

以上所述是小編給大家介紹的Vue.js中 computed和methods不同機(jī)制,希望對大家有所幫助,如果大家有任何疑問請給我留言,小編會及時回復(fù)大家的。在此也非常感謝大家對腳本之家網(wǎng)站的支持!

相關(guān)文章

最新評論

平安县| 兴文县| 余姚市| 遵义市| 探索| 雅安市| 晴隆县| 桐梓县| 普宁市| 剑川县| 沂南县| 定陶县| 竹山县| 浦北县| 贵州省| 建湖县| 陕西省| 开封县| 都兰县| 丁青县| 凭祥市| 库伦旗| 普宁市| 高清| 栾川县| 颍上县| 镇安县| 南通市| 佛冈县| 报价| 鱼台县| 塔城市| 蒙山县| 翁源县| 双柏县| 高邑县| 韶关市| 开远市| 顺义区| 大城县| 定结县|