这次给大家带来如何使用vue.js methods,使用vue.js methods的注意事项有哪些,下面就是实战案例,一起来看一下。
1.首先最明显的不同 就是调用的时候,methods要加上()
2.我们可以使用 methods 来替代 computed,效果上两个都是一样的,但是 computed 是基于它的依赖缓存,只有相关依赖发生改变时才会重新取值。
而使用 methods ,在重新渲染的时候,函数总会重新调用执行
为了方便理解,先上一段源码
<!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><span>立即学习</span>“<a href="https://pan.quark.cn/s/cb6835dc7db1" style="text-decoration: underline !important; color: blue; font-weight: bolder;" rel="nofollow" target="_blank">前端免费学习笔记(深入)</a>”;</p>
<p>{{now}}</p><p><span>立即学习</span>“<a href="https://pan.quark.cn/s/cb6835dc7db1" style="text-decoration: underline !important; color: blue; font-weight: bolder;" rel="nofollow" target="_blank">前端免费学习笔记(深入)</a>”;</p>
<p>{{now}}</p><p><span>立即学习</span>“<a href="https://pan.quark.cn/s/cb6835dc7db1" style="text-decoration: underline !important; color: blue; font-weight: bolder;" rel="nofollow" target="_blank">前端免费学习笔记(深入)</a>”;</p>
<p>{{now}}</p><p><span>立即学习</span>“<a href="https://pan.quark.cn/s/cb6835dc7db1" style="text-decoration: underline !important; color: blue; font-weight: bolder;" rel="nofollow" target="_blank">前端免费学习笔记(深入)</a>”;</p>
<hr /> <!--横线分割-->
</p>
<p class="test2"> <!--methods方法,注意new()加了括号-->
<p>{{now()}}</p><div class="aritcle_card flexRow">
<div class="artcardd flexRow">
<a class="aritcle_card_img" href="/ai/2092" title="PPT.CN,PPTCN,PPT.CN是什么,PPT.CN官网,PPT.CN如何使用"><img
src="https://img.php.cn/upload/ai_manual/000/000/000/175679993727189.png" alt="PPT.CN,PPTCN,PPT.CN是什么,PPT.CN官网,PPT.CN如何使用" onerror="this.onerror='';this.src='/static/lhimages/moren/morentu.png'" ></a>
<div class="aritcle_card_info flexColumn">
<a href="/ai/2092" title="PPT.CN,PPTCN,PPT.CN是什么,PPT.CN官网,PPT.CN如何使用">PPT.CN,PPTCN,PPT.CN是什么,PPT.CN官网,PPT.CN如何使用</a>
<p>一键操作,智能生成专业级PPT</p>
</div>
<a href="/ai/2092" title="PPT.CN,PPTCN,PPT.CN是什么,PPT.CN官网,PPT.CN如何使用" class="aritcle_card_btn flexRow flexcenter"><b></b><span>下载</span> </a>
</div>
</div>
<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: '.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>运行结果如上,可以看出computed计算属性的话,每次进入页面将一直沿用第一次的信息,不会再触发now,这就是依赖缓存。(有延时的情况下 多次输出时间相同)
那什么是相关依赖发生改变时才会重新取值呢 比方说reversedMessage function()计算属性中调用了message变量
就意味着只要 message 还没有发生改变,多次访问 reversedMessage 计算属性会立即返回之前的计算结果,而不必再次执行函数。
而methods是实时的,在重新渲染时,函数总会重新调用执行,不会缓存,(多次输出时间不同)
可以说使用 computed 性能会更好,但是如果你不希望缓存,你可以使用 methods 属性。
computed 属性默认只有 getter ,不过在需要时你也可以提供一个 setter :所以其实computed也是可以传参的。
ps:下面看下vue计算属性computed和methods的区别
在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('ok')
//这里根据情况,可以返回有返回值也可以没有返回值。
}
}
})
</script>
对比computed 和 methods:
computed计算的结果如果不发生改变就不会触发result这个函数。而methods中一般都是定义的需要事件触发的一些函数。每次只要触发事件,就会执行对应的方法。如果把computed中的方法写到method中会浪费性能。
computed必须返回一个值页面绑定的才能取得值,而methods中可以只执行逻辑代码,可以有返回值,也可以没有。相信看了本文案例你已经掌握了方法,更多精彩请关注php中文网其它相关文章!
推荐阅读:









