Vue2基础及其进阶面试(二)

news2024/9/17 7:17:48

vue2的生命周期

删除一些没用的

App.vue

删成这个样子就行

<template>

    <router-view/>

</template>

<style lang="scss">

</style>

来到路由把没用的删除

import Vue from 'vue'
import VueRouter from 'vue-router'
import HomeView from '../views/HomeView.vue'

Vue.use(VueRouter)

const routes = [
  {
    path: '/',
    name: 'home',
    component: HomeView
  },
  
]

const router = new VueRouter({
  routes
})

export default router

有报错没关系那是因为你引入的文件已经删除了

新建一个命名为生命周期的文件夹

然后在下面新建一个index.vue(规范都用index)

像设置打出vue2的快捷代码请看

[VUE框架学习笔记]VsCode快速生成vue组件模板(详细图示!)_vscode自动生成vue模板-CSDN博客

index.vue

<template>
  <div class="">
    
  </div>
</template>

<script>
export default {
  name: ''
}
</script>

<style lang="less" scoped>

</style>

scoped单独样式

更改对应的路由

//引用刚刚新建的文件
import HomeView from '../views/Life_cycle/index.vue'
//使用路由
const routes = [
  {
    path: '/',
    name: 'home',
    component: HomeView
  },
  
]
import Vue from 'vue'
import VueRouter from 'vue-router'
import HomeView from '../views/Life_cycle/index.vue'

Vue.use(VueRouter)

const routes = [
  {
    path: '/',
    name: 'home',
    component: HomeView
  },
  
]

const router = new VueRouter({
  routes
})

export default router

来到

index.vue文件里

学习语法和生命周期(beforeCreate,created,beforeMount,mounted)

<template>
  <div class="">
    
  </div>
</template>

<script>
export default {
 data(){
  return{
    name:'张三',
    age:18
  }
 },
 methods:{},
 beforeCreate(){
  //组件实例未创建,此时无法获取道el和data
  console.log("beforeCreate",this,this.$el)
 },
 created(){
  //组件实例已创建,但未挂载,无法获取到D0M元素,但可以获取到data和methods
  console.log('created',this,this.$el)
 },
 beforeMount(){
  //组件实例已创建,但未挂载,可以获取到D0M元素
  console.log('beforeMount',this,this.$el)
 },
 mounted(){
  //组件实例已挂载,可以获取到D0M元素
  console.log('mounted',this,this.$el)
 }
}
</script>

<style lang="less" scoped>

</style>

先要了解

  • DOM元素是指网页中的div
  • $el 组件实例的根DOM元素
  • $data 组件实例的数据对象

当执行后可以看到data值封装到vue2中是_data的书写形式

因为我们需要观察这四个生命周期的不同,所以我们加上_data再打印一遍

<template>
  <div class="">
    
  </div>
</template>

<script>
export default {
 data(){
  return{
    name:'张三',
    age:18
  }
 },
 /**
  * $el 组件实例的根DOM元素
    $data 组件实例的数据对象
    所有的生命周期都是同步的
 */
 methods:{},
 beforeCreate(){
  //组件实例未创建,此时无法获取道el和data
  console.log("beforeCreate",this._data,this.$el)
 },
 created(){
  //组件实例已创建,但未挂载,无法获取到D0M元素,但可以获取到data和methods
  console.log('created',this._data,this.$el)
 },
 beforeMount(){
  //组件实例已创建,但未挂载,可以获取到D0M元素
  console.log('beforeMount',this._data,this.$el)
 },
 mounted(){
  //组件实例已挂载,可以获取到D0M元素.如果要操作dom的话需要在mounted之后进行
  console.log('mounted',this._data,this.$el)
 }
}
</script>

<style lang="less" scoped>

</style>

(面试题)如何在beforeCreate里面获取到dom元素?

原因:所有的生命周期都是同步的

所以只需要在里面添加异步就可以了

例如:

这样异步后,就挂载上了

 beforeCreate(){
  //组件实例未创建,此时无法获取道el和data
  console.log("beforeCreate",this._data,this.$el)
  setTimeout(() => {
    console.log("beforeCreate添加了异步任务",this._data,this.$el)
  }, 100);
 },

vue2的计算属性

先添加个文件夹和文件放我们的计算属性

修改下路由(切换到计算属性页面)

这里我把生命周期的换成了计算属性的

import Vue from 'vue'
import VueRouter from 'vue-router'
// import HomeView from '../views/Life_cycle/index.vue'
import HomeView from '../views/Computed/index.vue'
Vue.use(VueRouter)

const routes = [
  {
    path: '/',
    name: 'home',
    component: HomeView
  },

]

const router = new VueRouter({
  routes
})

export default router

我们返回计算属性写一下

主要在计算属性中

1.不要使用箭头函数

2.计算属性是有缓存的只有依赖项改变了,计算属性的值才会改变

<template>
  <div class="">
    
  </div>
</template>

<script>
export default {
  name: ''
}
</script>

<style lang="scss" scoped>

</style>
<template>
  <div>
    <div>{{sum}}</div>
    <button @click="add">num加一</button>
    <button @click="add2">num2加一</button>
  </div>
</template>

<script>
export default {
 data(){
    return{
        name:'你会不会',
        num:0,
        num2:0
    }
 },
 methods:{
    add(){
        this.num++
    },
    add2(){
        this.num2++
    }
 },
 computed:{
    sum(){
      return this.num+this.num2
    }
 },
}
 
</script>

计算属性的优点缺点

计算属性无法执行异步操作,计算属性的返回值不能写在异步函数中。但可以在里面写异步函数

<template>
    <div>
        <div>sum{{sum}}</div>
        <div>num3{{num3}}</div>
    
         <button @click="add">num加一</button>
         <button @click="add2">num2加一</button>
         <button @click="add3">num2加一</button>
         <div>sum2{{sum2()}}</div>
    </div>
        
    </template>
    
    <script>
    export default {
       data(){
        return{
                 name:"张三",
                 num:20,
                 num2:30,
                 num3:30
    
         }
       },
       methods:{
          add(){
              this.num++
          },
           add2(){
              this.num2++
          },
       
          add3(){
          this.num3++
          },
          sum2(){
            console.log('sum2')
            return this.num+ this.num2
          }
       },
       computed:{
        /**
         * 1.不要使用箭头函数
         * 2.计算属性是有缓存的只有依赖项改变了,计算属性的值才会改变
         * 3.计算属性无法执行异步操作,计算属性的返回值不能写在异步函数中。但可以在里面写异步函数
         * 
         */
           sum(){
                  console.log('sum')
                  setTimeout(()=>{
                    console.log('计算属性的异步操作+')
                    //  return this.num+this.num2
    
                  },100)
                  return this.num+this.num2
              }
       }
    }
    </script>
    
    <style lang="scss" scoped>
    
    </style>

1.当sum2和sum发生变化都被计算属性监听=>缓存机制,所以计算属性是有缓存的只有依赖项改变了,计算属性的值才会改变

2.计算属性无法执行异步操作,计算属性的返回值不能写在异步函数中。但可以在里面写异步函数

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1697401.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Java进阶学习笔记25——Objects类

为啥比较两个对象是否相等&#xff0c;要用Objects的equals方法&#xff0c;而不是用对象自己的equals方法来解决呢&#xff1f; Objects&#xff1a; Objects类是一个工具类&#xff0c;提供了很多操作对象的静态方法供我们使用。 package cn.ensource.d14_objects;import ja…

无货源抖店怎么起店?教你两种起店方法,记得收藏!

大家好&#xff0c;我是喷火龙。 开通抖音小店之后最重要的一步就是起店了&#xff0c;今天就给大家分享两种起店方法。 大家都知道&#xff0c;产品是做店的核心&#xff0c;品不行&#xff0c;就算平台给你免费的流量&#xff0c;那你也承接不住。 第一个&#xff0c;商品卡…

Steam在连接至服务器发生错误/连接服务器遇到问题解决办法

Steam作为全球最大的数字游戏分发平台&#xff0c;构建了一个活跃的玩家社区&#xff0c;用户可以创建个人资料&#xff0c;添加好友&#xff0c;组建群组&#xff0c;参与讨论&#xff0c;甚至直播自己的游戏过程。通过创意工坊&#xff0c;玩家还能分享自制的游戏模组、地图、…

【古董技术】ms-dos应用程序的结构

序 制定一个MS-DOS应用程序计划需要认真分析程序的大小。这种分析可以帮助程序员确定MS-DOS支持的两种程序风格中哪一种最适合该应用程序。.EXE程序结构为大型程序提供了好处&#xff0c;因为所有.EXE文件之前都有额外的512字节&#xff08;或更多&#xff09;的文件头。另一方…

跨境选品师不是神话:普通人也能轻松掌握,开启全球贸易新篇章!

随着互联网技术的飞速发展&#xff0c;跨境电商行业已成为全球经济的新增长点。在这个背景下&#xff0c;一个新兴的职业——跨境选品师&#xff0c;逐渐走进了人们的视野。那么&#xff0c;跨境选品师究竟是做什么的?普通人又该如何成为优秀的跨境选品师呢? 一、跨境选品师的…

Docker compose 的方式一键部署夜莺

官方安装文档&#xff1a;https://flashcat.cloud/docs/content/flashcat-monitor/nightingale-v7/install/docker-compose/ 介绍&#xff1a;夜莺监控是一款开源云原生观测分析工具&#xff0c;采用 All-in-One 的设计理念&#xff0c;集数据采集、可视化、监控告警、数据分析…

数据结构(四)串

2024年5月26日一稿(王道P127) 定义和实现

日志的介绍及简单实现

个人主页&#xff1a;Lei宝啊 愿所有美好如期而遇 目录 日志是什么&#xff1f; 为什么需要日志&#xff1f; 实现一个简单日志 时间戳 clock_gettime time & localtime 可变模板参数(使用C语言)&#xff0c;va_start & va_end & vsprintf 宏 __LINE__…

推荐一款媒体影音嗅探神器—Chrome扩展插件(猫抓cat-catch)

目录 1.1、前言1.2、下载地址1.3、github Releases 版本说明1.4、安装步骤1.5、猫抓插件常规设置1.5.1、设置抓取文件的类型1.5.2、设置抓取文件的后缀名 1.1、前言 我们在日常上网的过程中&#xff0c;很多音频、视频网站下载资源都非常不方便&#xff0c;要么需要安装客户端&…

【高阶数据结构】AVL树的旋转与底层(C++实现)

1.AVL树的概念及作用 2.AVL树插入数据的规则 1.按照搜索树的规则插入&#xff0c;然后更新父亲的平衡因子 2.更新父亲的平衡因子后&#xff0c;如果出现一下三种情况需要进行相应处理 3.AVL树的旋转 3.1右单旋 右单旋的所有情况可以抽象为上图&#xff1a;图中&#xff0c;a,…

【识人】感情与交友中,如何判断一个人的性格,以及是否值得交往和相处

【识人】感情与交友中&#xff0c;如何判断一个人的性格&#xff0c;以及是否值得交往和相处 文章目录 序言正文1、学会筛选&#xff0c;贴标签&#xff0c;学会区别对待&#xff0c;2、男生女生一定要在年轻的时候学会对外在祛魅3、培养付出意识&#xff0c;学会顶风相见。4、…

protobuf —— 认识和安装

protobuf —— 认识和安装 什么是序列化和反序列化有哪些常见的什么是序列化和反序列化工具Protobuf安装安装依赖开始安装 连接动态库一些遗留问题 我们今天来看一个序列化和反序列化的工具&#xff1a;protobuf。 什么是序列化和反序列化 序列化&#xff08;Serialization&a…

Yolov9调用COCOAPI生成APs,APm,APl

最近在做小目标检测的东西&#xff0c;因为后期毕业论文需要&#xff0c;所以开始使用Yolov9模型&#xff0c;运行val.py的时候不会自己产生小目标的AP指标&#xff0c;所以研究了一下&#xff0c;步骤非常简单&#xff1a; 第一步&#xff1a; 在数据集中生成json格式的Annota…

【LLM多模态】综述Visual Instruction Tuning towards General-Purpose Multimodal Model

note 文章目录 note论文1. 论文试图解决什么问题2. 这是否是一个新的问题3. 这篇文章要验证一个什么科学假设4. 有哪些相关研究&#xff1f;如何归类&#xff1f;谁是这一课题在领域内值得关注的研究员&#xff1f;5. 论文中提到的解决方案之关键是什么&#xff1f;6. 论文中的…

AIGC时代算法工程师的面试秘籍(2024.4.29-5.12第十三式) |【三年面试五年模拟】

写在前面 【三年面试五年模拟】旨在整理&挖掘AI算法工程师在实习/校招/社招时所需的干货知识点与面试方法&#xff0c;力求让读者在获得心仪offer的同时&#xff0c;增强技术基本面。也欢迎大家提出宝贵的优化建议&#xff0c;一起交流学习&#x1f4aa; 欢迎大家关注Rocky…

LVS精益价值管理系统 DownLoad.aspx 任意文件读取漏洞复现

0x01 产品简介 LVS精益价值管理系统是杭州吉拉科技有限公司研发的一款专注于企业精益化管理和价值流优化的解决方案。该系统通过集成先进的数据分析工具、可视化的价值流映射技术和灵活的流程改善机制&#xff0c;帮助企业实现高效、低耗、高质量的生产和服务。 0x02 漏洞概述…

【数据库】基于PyMySQL连接并使用数据库(代码示例)

这里写目录标题 前言1、安装PyMySQL2、打开要连接的数据库3、创建数据库连接4、获取数据库版本5、新建数据库表6、向表中插入数据7、查询表中的相关记录8、更新表中的相关记录9、删除表中的相关记录10、关闭游标和连接完整代码 前言 本文演示了如何基于PyMySQL使用代码来创建数…

异步获取线程执行结果,JDK中的Future、Netty中的Future和Promise对比

JDK中的Future和Netty中的Future、Promise的关系 三者源头追溯 Netty中的Future与JDK中的Future同名&#xff0c;但是是两个不同的接口。Netty中的Future继承自JDK的Future&#xff0c;而Promise又对Netty中的Future进行了扩展。 JDK中的Future源自JUC并发包&#xff1a; Net…

打卡信奥刷题(19)用Scratch图形化工具信奥B3972 [语言月赛 202405] 二进制 题解

进制转换是经典的编程题&#xff0c;尤其是10进制转换为2进制。方法是拿给定的数&#xff0c;不断地除2&#xff0c;将余数放在对应的位置&#xff0c;剩下的数为对应数除2向下取整 [语言月赛 202405] 二进制 题目描述 在介绍十进制转二进制的篇目中&#xff0c;我们总会看到…

一文读懂:http免费升级https

背景&#xff1a; 随着现在全民网络安全意识的日益提升&#xff0c;各个网站需要实现的https数量也随之提升&#xff0c;那么如何将原本网站的http访问方式升级为https呢&#xff1f; 该内容为如何免费将网站的http访问升级为https访问 论https的加密逻辑&#xff1a; 步骤 …