ホームページ > ウェブフロントエンド > jsチュートリアル > Vue.js の計算およびメソッドのさまざまなメカニズムの詳細な分析

Vue.js の計算およびメソッドのさまざまなメカニズムの詳細な分析

亚连
リリース: 2018-05-26 16:06:18
オリジナル
1443 人が閲覧しました

この記事では、Vue.js の computed とメソッドのさまざまなメカニズムを紹介します。vue.js では、メソッドと computed がメソッドとして動的に使用されます。興味のある方は、ぜひ参考にしてください。一緒に見てください

vue.js では、メソッドを動的に使用する方法とメソッドとして計算する方法が 2 つあります

1。最初の最も明らかな違いは、呼び出し時にメソッドを () で追加する必要があることです

2。メソッドを使用して computed を置き換えます。2 つの効果は同じですが、computed は依存関係キャッシュに基づいており、関連する依存関係が変更された場合にのみ再評価されます。

メソッドでは、再レンダリングするときに必ず関数が呼び出されて実行されます

理解を容易にするために、まずソースコードをアップロードしましょう

<!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>
    <p class="test">  <!--computed计算属性-->
      <p>{{now}}</p>
      <p>{{now}}</p>
      <p>{{now}}</p>
      <p>{{now}}</p>
      <hr />      <!--横线分割-->
</p>
    <p class="test2">  <!--methods方法,注意new()加了括号-->
      <p>{{now()}}</p>
      <p>{{now()}}</p>
      <p>{{now()}}</p>
      <p>{{now()}}</p>
    </p>
  </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: &#39;.test2&#39;,
      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>
ログイン後にコピー

実行結果は上記の通りです。計算されたプロパティが入力されると、ページは常に最初の情報を使用し、再度トリガーされないことがわかります。これはキャッシュに依存しています。 (遅延がある場合、複数の出力時間は同じになります)

では、関連する依存関係が変更されたときに再評価される値は何ですか?

、これは、メッセージがまだ変更されていない限り、reversedMessage 計算プロパティに複数回アクセスすると、関数を再度実行することなく、以前に計算された結果がすぐに返されることを意味します。

メソッドはリアルタイムであり、再レンダリングする場合、関数は常にキャッシュなしで再呼び出しされて実行されます (複数の出力時間は異なります)


計算されたパフォーマンスを使用する方が良いと言えますが、キャッシュしたくない場合は、methods 属性を使用できます。

computed 属性にはデフォルトでは getter のみがありますが、必要に応じて setter を提供することもできます。つまり、実際には computed 属性はパラメータを渡すこともできます。

ps: vue の計算属性 computed とメソッドの違いを見てみましょう

在new Vue的配置参数中的computed和methods都可以处理大量的逻辑代码,但是什么时候用哪个属性,要好好区分一下才能做到正确的运用vue。
computed称为计算属性,顾名思义,计算就要返回一个计算的结果,所以,当我们要处理大量的逻辑,但是最后要取得最后的结果的时候可以用computed;
简单示例:
要求:
<input type="text v-model="num1"><input type="text v-model="num2">
现在要返回num1和num2的和;
<script>
  new Vue({
    el:"#box",
    data:{
        num1:0,
        num2:0
        }
    computed:{  
        result:function(){
            return this.num1 + this.num2  
            // 计算属性必须有一个返回值
        }
    }
   })
</script>
methods:是方法的意思,在js中,我们把一些函数叫做方法,一般情况下,要触发这个方法就要执行,要执行就要有一个源来触发,所以就需要一个事件源。这是和computed的一点不同之处;
methods的示例:
要求:
<\button @click="do()">点击弹出<\/button>
<script>
  new Vue({
    el:"#box",
    data:{
        num1:0,
        num2:0
        }
    methods:{  
        do:function(){
           alert(&#39;ok&#39;)
           //这里根据情况,可以返回有返回值也可以没有返回值。
        }
    }
   })
</script>
对比computed 和 methods:
computed计算的结果如果不发生改变就不会触发result这个函数。而methods中一般都是定义的需要事件触发的一些函数。每次只要触发事件,就会执行对应的方法。如果把computed中的方法写到method中会浪费性能。
computed必须返回一个值页面绑定的才能取得值,而methods中可以只执行逻辑代码,可以有返回值,也可以没有。
ログイン後にコピー

上記は私がまとめたもので、将来的に皆さんのお役に立てれば幸いです。 。

関連記事:

BoaサーバーでのAjaxとCGI通信(画像とテキストのチュートリアル)

AjaxがRestfulインターフェースを呼び出してJson形式のデータを送信する方法(コード付き)

AjaxでアクセスするIE8毎回更新できない問題

以上がVue.js の計算およびメソッドのさまざまなメカニズムの詳細な分析の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

関連ラベル:
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
最新の問題
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート