首页 > 其他分享 >Vue3学习笔记(7.0)

Vue3学习笔记(7.0)

时间:2023-04-01 21:32:01浏览次数:31  
标签:computed app vm 笔记 write 7.0 Vue3 message document


Vue3计算属性

计算属性关键词:computed

计算属性在处理一些复杂逻辑时是很有用的。

可以看下以下反转字符的例子:

<!--
 * @Author: [email protected]
 * @Date: 2023-03-30 08:30:35
 * @LastEditors: Mei
 * @LastEditTime: 2023-03-30 08:33:36
 * @FilePath: \vscode\vue_computed.html
 * @Description: 
 * 
 * Copyright (c) 2023 by ${git_name_email}, All Rights Reserved. 
-->
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
    <script src="vue_doc/vue.global3.js"></script>
</head>
<body>
    <div id="app">
        {{message.split("").reverse().join('')}}
    </div>

    <script>
        const app={
            data(){
                return {
                    message:"Mez!!!!!!!!!!"
                }
            }
        }

        Vue.createApp(app).mount('#app')
    </script>
</body>
</html>

Vue3学习笔记(7.0)_前端

 接下来看看使用了计算属性的实例

<!--
 * @Author: [email protected]
 * @Date: 2023-03-30 08:30:35
 * @LastEditors: Mei
 * @LastEditTime: 2023-03-30 08:40:32
 * @FilePath: \vscode\vue_computed.html
 * @Description: 
 * 
 * Copyright (c) 2023 by ${git_name_email}, All Rights Reserved. 
-->
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
    <script src="vue_doc/vue.global3.js"></script>
</head>
<body>
    <div id="app">
        <p>原始字符串:{{message}}</p>
        <p>反转后的字符串:{{reversedMessage}}</p>
    </div>

    <script>
        const app={
            data(){
                return {
                    message:"Mez!!!!!!!!!!"
                }
            },
            computed:{
                reversedMessage:function(){
                    return this.message.split("").reverse().join('')

                }
            }
        }

        Vue.createApp(app).mount('#app')
    </script>
</body>
</html>

Vue3学习笔记(7.0)_vue.js_02

 在该示例中声明了一个计算属性reversedMessage

提供的函数将用作属性vm.reversedMessage的getter。

vm.reversedMessage依赖于vm.message,在vm.message发生改变时,vm.reversedMessage也会更新。

我们可以用methods来替代computed,效果上两个都是一样的,但是computed是基于它的依赖缓存,只有相关依赖发生改变时才会重新取值。而使用methods,在重新渲染的时候,函数总会重新调用执行。

下面就来看看一个示例

Vue3学习笔记(7.0)_学习_03

尴尬,一开始出现个这,检查一下代码,发现少了括号

Vue3学习笔记(7.0)_vue.js_04

 

<!--
 * @Author: [email protected]
 * @Date: 2023-03-30 08:30:35
 * @LastEditors: Mei
 * @LastEditTime: 2023-03-30 08:51:35
 * @FilePath: \vscode\vue_computed.html
 * @Description: 
 * 
 * Copyright (c) 2023 by ${git_name_email}, All Rights Reserved. 
-->
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
    <script src="vue_doc/vue.global3.js"></script>
</head>
<body>
    <div id="app">
        <p>原始字符串:{{message}}</p>
        <p>使用computed反转后的字符串:{{reversedMessage}}</p>
        <p>使用methods反转后的字符串:{{reversedMessage2()}}</p>
    </div>

    <script>
        const app={
            data(){
                return {
                    message:"Mez!!!!!!!!!!"
                }
            },
            computed:{
                reversedMessage:function(){
                    return this.message.split("").reverse().join('')

                }
            },
            methods:{
                reversedMessage2:function(){
                    return this.message.split("").reverse().join('')

                }
            }
        }

        Vue.createApp(app).mount('#app')
    </script>
</body>
</html>

 

Vue3学习笔记(7.0)_前端_05

这样就能正常显示了。

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

computed setter

computed属性默认只有getter,不过需要时我们也可以提供一个setter:
 

<!--
 * @Author: [email protected]
 * @Date: 2023-03-30 08:30:35
 * @LastEditors: Mei
 * @LastEditTime: 2023-03-30 09:21:11
 * @FilePath: \vscode\vue_computed.html
 * @Description: 
 * 
 * Copyright (c) 2023 by ${git_name_email}, All Rights Reserved. 
-->
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
    <script src="vue_doc/vue.global3.js"></script>
</head>
<body>
    <div id="app">
        <!-- <p>原始字符串:{{message}}</p>
        <p>使用computed反转后的字符串:{{reversedMessage}}</p>
        <p>使用methods反转后的字符串:{{reversedMessage2()}}</p> -->
    </div>

    <script>
        const app={
            data(){
                return {
                    name:"Mez!!!!!!!!!!",
                    url:'http://www.baidu.com'
                }
            },
            computed:{
                site:{
                    get:function(){
                    return this.name+' '+this.url
                    },
                    set:function(newValue){
                    var names=newValue.split(' ')
                    this.name=names[0]
                    this.url=names[names.length-1]
                }
            }
        }
    }
        //     methods:{
        //         reversedMessage2:function(){
        //             return this.message.split("").reverse().join('')

        //         }
        //     }
        // }

        vm=Vue.createApp(app).mount('#app')
        document.write('name:'+vm.name);
        document.write('要换行了')
        document.write('<br>')
        document.write('url:' +vm.url);
        document.write('<br>')

        vm.site='度娘 https://127.0.0.1';
        document.write('name:' +vm.name)
        document.write('<br>')
        document.write('url:' +vm.url)
        document.write('要换行了')
        
        // vm("Mez1111")
        // document.write('name:' +vm.name)
        // document.write('url:' +vm.url)

    </script>
</body>
</html>

Vue3学习笔记(7.0)_前端_06

 

标签:computed,app,vm,笔记,write,7.0,Vue3,message,document
From: https://blog.51cto.com/u_15888443/6163818

相关文章

  • Vue3学习笔记(4.0)
    vue.js为两个最为常用的指令提供了特别的缩写://全称<av-bind:href="url"></a>//缩写<a:href="url"></a>v-on缩写//全称<av-on:click="doSomething"></a>//缩写<a@click="doSonthing"></a>条件判断条件判断使......
  • 笔记1
        刚开始读《构建之法》这本书时,书上所提到的很多问题都是我们平常在写代码时候会犯的一些小的错误,就我个人而言,在我还没读《构建之法》这本书之前,我还不知道我平常在写代码中犯了这么多的错误,虽然这些错误都是一些小错误,并不影响代码的执行,但是看了《构建之法》这......
  • 笔记2
    我在编写代码的时候没有重视代码规范的问题。现代软件产业经过几十年的发展,一个软件由一个人单枪匹马完成,已经很少见了,软件都是在相互合作中完成的。合作的最小单位是两个人,两个工程师在一起,做的最多的事情就是“看代码”,每个人都能看“别人的代码”,并发表意见。这时,如果我们的代......
  • 笔记3
    我在编程时没有重视团队的重要性,对于团队的认识还不够。团队有一致的集体目标。团队成员有各自的分工,互相依赖合作,共同完成任务。软件团队的模式有一窝蜂模式、主治医生模式、明星模式、社区模式、业余剧团模式、秘密团队、特工团队、交响乐模式、爵士乐模式、功能团队模式、官僚......
  • 《前端构建工具(webpack&vite)- 李立超》笔记
    1.构建工具简介1.1模块化最初我们都使用script标签来引入js,但当一个页面引入的js文件越来越多时,就产生了几个难以避免的问题:全局变量污染。变量重名。js之间的依赖关系复杂,无法保证顺序。而模块化规范就是为解决以上问题,模块内部的变量实现了在其他模块内共享。而且可以......
  • vue3面包屑导航栏
    import{useRoute,useRouter}from"vue-router";import{computed,ref,watch,watchEffect,nextTick}from"vue";constrouter=useRouter()constroute=useRoute()constbreadcrumb=ref([])/***@Date:2023-03-2817:55:20*@descript......
  • vue3+elementPlus 深色主题切换
    首先安装需要的两个依赖npmi@vueuse/corenpminstallelement-plus--save在main.js中引入css文件,自定义深色背景颜色可以看ElementPlus官方网站//引入elementUIimportElementPlusfrom'element-plus'importzhCnfrom'element-plus/dist/locale/zh-cn.mjs'//引入......
  • 面试笔记-Docker(Ⅱ)
    上篇文章已经成功build了image并且创建了container运行成功,我们现在进行接下来的工作目录挂载使用Docker运行后,我们改了项目代码不会立刻生效,需要重新build和run,很是麻烦。容器里面产生的数据,例如log文件,数据库备份文件,容器删除后就丢失了。......
  • JS基础《JavaScript精粹》笔记摘录
    基础概念和语法基本类型、null、undefined、NaNJavaScript定义了一小批基本类型(primitivetype),它们包括字符串类型(string,单引号或双引号包起来)、数值类型(number,整数和小数都用这个类型)和布尔类型(boolean,值仅有true和false)。JavaScript使用两个特殊的值来表示不存在有意义的值—......
  • 笔记:洛谷 P3985 不开心的金明
    算法笔记:[背包问题]洛谷P3985不开心的金明题目详情原题链接:洛谷P3985不开心的金明不开心的金明Description  金明今天很不开心,家里购置的二手房就要领钥匙了,房里并没有一间他自己专用的很宽敞的房间。更让他不高兴的是,妈妈昨天对他说:“你需要购买哪些物品,怎么布置,你......