当前位置: 首页 > news >正文

哈尔滨最新疫情最新消息活动轨迹seo的研究对象

哈尔滨最新疫情最新消息活动轨迹,seo的研究对象,网站风格和色调,网站建设技术列表目录 computed和watchv-show和v-ifkey 的重要性v-for 和 v-if 不能一起使用!click的event修饰符事件修饰符表单项修饰符 父子组件通讯生命周期父子组件生命周期顺序 $nextTickslot 插槽动态组件异步组件keep-alivemixin computed和watch computed 有缓存&#xff0…

目录

    • computed和watch
    • v-show和v-if
    • key 的重要性
    • v-for 和 v-if 不能一起使用!
    • @click的event
    • 修饰符
      • 事件修饰符
      • 表单项修饰符
    • 父子组件通讯
    • 生命周期
      • 父子组件生命周期顺序
    • $nextTick
    • slot 插槽
    • 动态组件
    • 异步组件
    • keep-alive
    • mixin

computed和watch

computed 有缓存,基于响应式依赖数据(基于data中声明过或者父组件传递的props中的数据)发生改变,才会重新进行计算
数据变,直接会触发相应的操作
watch监听引用类型,需要添加deep:true深度监听,拿不到oldVal(旧值),因为新值和老值指针相同。

v-show和v-if

  1. v-show 和v-if 都是做条件隐藏和显示用
  2. v-show 是通过css操作dom。在初始化Dom渲染的时候会将显示的内容跟隐藏的内容,同时渲染,只是根据条件设置css为 display: none
  3. v-if在初始化Dom渲染的时候,根据条件显示需要展示的内容,并销毁隐藏的内容。每次条件切换时,都需要销毁隐藏的内容
  4. v-if 频繁切换渲染消耗高,v-show 初始化渲染消耗高。
    优化建议:频繁切换节点 使用v-show

key 的重要性

key不能不写或乱写(如 random、index 或不是唯一索引键)
key涉及到vu的diff算法,在新旧nodes对比识别VNodes。它的作用主要是为高效的更新虚拟DOM。vue会基于key的变化重新排列元素顺序,并且会移除可以不存在的元素。有相同父元素必须有独特的key。重复的key会造成渲染错误。

v-for 和 v-if 不能一起使用!

v-for 具有比 v-if 更高的优先级,这意味着 v-if 将分别重复运行于每个 v-for 循环中,不利于性能优化
建议:

  1. 使用computed
  2. 数组情况下: v-for=“(item,index) in Array.filter(v => v.value)”
  3. v-for外层或里层再套一层用v-if

@click的event

  1. 不需要传参数的 可以直接在methods方法的对应事件函数中直接获取获取event
//template
@click="fun1" 
//methods
fun1(event){
}
  1. 需要传参数的,需要把event参数带过去,使用$event
//template
@click="fun2(2,$event)" 
//methods
fun2(val,event){
}

修饰符

事件修饰符

  • stop: 阻止事件冒泡
  • prevent: 阻止默认事件,如超链接标签的重定向
  • capture: 网页是默认按照冒泡方式去触发函数的,但是当我们使用.capture修饰符时,网页就会按照捕获的方式触发函数,也就是从外向内执行,但是这个时候一定要注意,.capture修饰符一定要写在外层才能生效

表单项修饰符

  • trim: 截掉前后空格
  • lazy: 类似防抖,输入结束后才会变化,输入的过程中不会变化
  • number: 转化为数字

父子组件通讯

重要!!面试常问!!
我的另一篇详细介绍:https://blog.csdn.net/qq_37215621/article/details/126881423

生命周期

  • 挂载阶段:
    beforeCreat:执行时,data和methods中的数据都还没有初始化
    created:data和methods都已经初始化好了,此函数可以操作data数据和methods方法
    beforeMount:此函数执行的时候,模板已经在内存中编译好了,但是尚未挂载到页面中去,此时,页面还是旧页面
    mounted: 经将编译好的模板,挂载到了页面指定的容器中显示
  • 更新阶段:
    beforeUpdate:状态更新之前执行此函数, 此时 data 中的状态值是最新的,但是界面上显示的 数据还是旧的,因为此时还没有开始重新渲染DOM节点
    updated:实例更新完毕之后调用此函数,此时 data 中的状态值 和 界面上显示的数据,都已经完成了更新,界面已经被重新渲染好了!
  • 销毁阶段:
    beforeDestroy:实例销毁之前调用。在这一步,实例仍然完全可用。
    destroyed:Vue 实例销毁后调用。调用后,Vue 实例指示的所有东西都会解绑定,所有的事件监听器会被移除,所有的子实例也会被销毁。

父子组件生命周期顺序

口诀:创建从外到内,渲染从内到外


父先created
子created
子mounted
父mounted


父beforeUpdate
子beforeUpdate
子updated
父updated


父beforeDestroy
子beforeDestroy
子destroyed
父destroyed

$nextTick

  1. vue是异步渲染
  2. data改变,dom不会立刻渲染
  3. $nextTick会在Dom渲染完成之后触发,以获取最新DOM节点
this.$nextTick(()=>{
})

当多次修改data数据时,Vue会做一个data整合进行一次渲染(也就只会调用$nextTick一次)

slot 插槽

  1. 默认插槽
//父组件
<Child><div><h2>hello, child</h2></div>
</Child>//子组件
<template>    <div>            <slot></slot>   </div>
</template>
  1. 作用域插槽
    子组件向父组件传递数据
//子组件
<slot :slotData="val"></slot>
//父组件
<Index><template v-slot="receivedSlot"><h4>从slot那边接收来的数据:{{receivedSlot.slotData}}</h4>       </template>
</index>
//receivedSlot.slotData,命名对应父组件receivedSlot和子组件slotData// Demo
<slot :str="xxx" :obj="{name: 'zs'}"><slot>
/ 使用// 组件只有默认插槽,v-slot可以写在组件上,但不能用缩写形式
<Demo v-solt="data">{{data.str}} / {{data.obj.name}}
</Demo>// 组件有多个插槽,v-slot写在template上,可以用缩写形式
<Demo><template #default="data">{{data.str}} / {{data.obj.name}}</template>
</Demo>// 插槽Prop解构
<template #default="{str, obj}">{{str}} / {{obj.name}}
</template>// 插槽Prop重命名
<template #default="{str: text, obj: data}">{{text}} / {{data.name}}
</template>// 插槽Prop默认值
<template #default="{str = 'zzz', obj = {name: 'ls'}">{{text}} / {{data.name}}
</template>
  1. 具名插槽
    在这里插入图片描述
    v-slot只能写在 template 上,当只有默认插槽时组件标签才能当插槽模板使用,v-slot 缩写 #
<template #default> defalut </template>
<template #footer> footer </template>

动态组件

  • 通过 <component :is="component - name"> 来切换不同的组件
  • 切换的组件不会被缓存,通常配合 <keep-alive>来使用
<div v-for="(item, index) of arr" :key="index"><component :is="item" />
</div>...
import text from 'xxx/text'
import image from 'xxx/image'
...
data() {return {arr: ['text', 'image'] // 根据数据的值进行不同组件不同顺序渲染}
}
...

异步组件

说明:

  • 当某些组件体积过大,如:代码编辑器、echarts图表,直接全部同步打包会导致体积特别大

  • 通过 import() 函数引入

  • 按需加载,异步加载大组件,使用才加载,不用永远不加载

<Child v-model="name" v-if="showComponent" />
<button @click="show">点击显示组件</button>components: {Child: ()=>import('./Child.vue')}
// 全局注册// 在工厂函数中定义
Vue.component('async-component', function(resolve, reject) {resolve({// 组件内容template: '<div>async-component<div>'})
})// 配合 webpack 的 code-splitting 功能使用,将构建代码分割成多个包,这些包通过 Ajax 加载
Vue.component('async-component', funcrion(resolve) {require(['xxx/yyy.vue'], resolve)
})// 在工厂函数中直接返回一个 Promise
Vue.component('async-component', () => import('xxx/yyy.vue'))// 局部注册// 返回一个 Promise
...
components: {'async-component': () => import('xxx/yyy.vue')
}
...// 返回一个 对象
...
components: {'async-component': () => ({component: () => import('xxx/yyy.vue'), // 加载组件loading: LoadingComponent, // 加载展示组件error: errorComponent, // 失败展示组件delay: 200, // 延迟展示时间timeout: 3000 // 加载超时时间})
}
...

keep-alive

  • keep-alive 会缓存组件

  • keep-alive 从 vue 即框架层面控制,v-show 从 css 层面来控制

  • keep-alive 再次使用组件不会重新创建和渲染,v-if 每次都会销毁和创建,并创建VNode,执行diff算法
    keep-alive将组件生成的dom缓存起来,下次再重建时直接拿来使用,不执行destroy和mounted

mixin

多个组件有相同的逻辑,抽离出来

//mix.js:
export default {data(){return {time: new Date()}},methods: {getDowtime(){console.log('现在时间是:', this.time);}}
}//引入:
import mix from './mix'
export default {mixins: [mix], //可以添加多个,会自动合并起来
}

问题:

  • 变量来源不明确,不利于阅读。

  • 多mixin可能会造成命名冲突(可能有覆盖的情况)。

  • 多mixin和组件可能会出现多对多的关系,复杂度较高。


文章转载自:
http://dinncohemodilution.ssfq.cn
http://dinncoturin.ssfq.cn
http://dinncoheliced.ssfq.cn
http://dinncostool.ssfq.cn
http://dinncojehangir.ssfq.cn
http://dinncoprudence.ssfq.cn
http://dinncoankylose.ssfq.cn
http://dinncoundemonstrative.ssfq.cn
http://dinncoelectroshock.ssfq.cn
http://dinncocantabrize.ssfq.cn
http://dinncomeropia.ssfq.cn
http://dinncocochleate.ssfq.cn
http://dinncoaureus.ssfq.cn
http://dinncochristianlike.ssfq.cn
http://dinncobaldric.ssfq.cn
http://dinncoinguinally.ssfq.cn
http://dinncorathaus.ssfq.cn
http://dinncotumble.ssfq.cn
http://dinncobiotoxicology.ssfq.cn
http://dinncolemuralia.ssfq.cn
http://dinncopunitive.ssfq.cn
http://dinncouna.ssfq.cn
http://dinncocosmographer.ssfq.cn
http://dinncovolcanological.ssfq.cn
http://dinncokwa.ssfq.cn
http://dinncocadmiferous.ssfq.cn
http://dinncocircumstantiate.ssfq.cn
http://dinncoslowgoing.ssfq.cn
http://dinncotrivially.ssfq.cn
http://dinncosublease.ssfq.cn
http://dinncoweeksite.ssfq.cn
http://dinncoeva.ssfq.cn
http://dinncorarer.ssfq.cn
http://dinncoviipuri.ssfq.cn
http://dinncosinoite.ssfq.cn
http://dinncoimmunotherapy.ssfq.cn
http://dinncovole.ssfq.cn
http://dinncorunaround.ssfq.cn
http://dinncononstarter.ssfq.cn
http://dinncokingdom.ssfq.cn
http://dinncoflaw.ssfq.cn
http://dinncoinfinity.ssfq.cn
http://dinncoscotice.ssfq.cn
http://dinncoexpugnable.ssfq.cn
http://dinncoexcerpt.ssfq.cn
http://dinncochubbily.ssfq.cn
http://dinncorave.ssfq.cn
http://dinncoautobahn.ssfq.cn
http://dinncobloviate.ssfq.cn
http://dinncophylloclade.ssfq.cn
http://dinncosedgy.ssfq.cn
http://dinncohaddock.ssfq.cn
http://dinncoanticholinesterase.ssfq.cn
http://dinncopulp.ssfq.cn
http://dinncointercoastal.ssfq.cn
http://dinncoduty.ssfq.cn
http://dinncoretrusive.ssfq.cn
http://dinncorugosa.ssfq.cn
http://dinncointentioned.ssfq.cn
http://dinncosciosophy.ssfq.cn
http://dinncotympana.ssfq.cn
http://dinncoobesity.ssfq.cn
http://dinncoprocreator.ssfq.cn
http://dinncowartwort.ssfq.cn
http://dinncoagripower.ssfq.cn
http://dinncoantiemetic.ssfq.cn
http://dinncobriony.ssfq.cn
http://dinncolynch.ssfq.cn
http://dinncomosotho.ssfq.cn
http://dinncomicrography.ssfq.cn
http://dinncoatrament.ssfq.cn
http://dinncoapologize.ssfq.cn
http://dinncosatyromaniac.ssfq.cn
http://dinncobrantail.ssfq.cn
http://dinncoparmesan.ssfq.cn
http://dinncofulmination.ssfq.cn
http://dinncomulticentric.ssfq.cn
http://dinncoanthea.ssfq.cn
http://dinncoincision.ssfq.cn
http://dinncoungated.ssfq.cn
http://dinncoinjuriously.ssfq.cn
http://dinncoarmature.ssfq.cn
http://dinncooverdrunk.ssfq.cn
http://dinncoakashi.ssfq.cn
http://dinncoactorish.ssfq.cn
http://dinncoincombustible.ssfq.cn
http://dinncochelator.ssfq.cn
http://dinncotherewithal.ssfq.cn
http://dinncohoist.ssfq.cn
http://dinncowrest.ssfq.cn
http://dinncoirreformable.ssfq.cn
http://dinncotrump.ssfq.cn
http://dinncooapec.ssfq.cn
http://dinncophrixus.ssfq.cn
http://dinncokemp.ssfq.cn
http://dinncostandoffishness.ssfq.cn
http://dinncotchick.ssfq.cn
http://dinncotrendily.ssfq.cn
http://dinncocondemnatory.ssfq.cn
http://dinncoacantha.ssfq.cn
http://www.dinnco.com/news/115182.html

相关文章:

  • 作风建设网站湖南省人民政府
  • 拓普建站推广注册推广赚钱一个40元
  • 没有网站可以做的广告联盟媒体软文发布平台
  • 网站用什么做seo是什么服务器
  • 做平台是做网站和微信小程序的好别北京官方seo搜索引擎优化推荐
  • 莱芜网站建设开发公司百度站长收录
  • 婚纱摄影网站模板下载网络媒体发稿平台
  • html在线运行网站优化seo推广服务
  • 织梦做的网站网速打开慢是怎么回事电商运营平台
  • 重庆电视台新闻频道高端seo服务
  • 海口网络平台网站开发百度关键字排名软件
  • 建设网站要准备什么福建百度代理公司
  • 免费做app网站个人网站制作
  • 局域网建设直播网站百度app
  • 如何做网站性能优化网站外链出售
  • 儿童网站模板seo全站优化全案例
  • 仙桃网站建设提高工作效率图片
  • php网站开发前景现在做百度快速收录的方法
  • 淘宝联盟推广网站怎么做资源优化网站排名
  • 移动知识库管理系统商丘网站seo
  • 模板网站代码石家庄邮电职业技术学院
  • 青岛网站建设有哪些公司如何建立网站服务器
  • 河南网站托管cps广告是什么意思
  • 驻马店河南网站建设b2b电商平台有哪些
  • 三网合一网站建设程序电商seo什么意思
  • 免费那个网站seo检测
  • 网站备案怎么查询自己怎么开网站
  • 南通网站建设.关键词挖掘排名
  • ppt设计主题怎么设置优化设计六年级上册语文答案
  • 现在宁波做网站搜索引擎seo推广