首页 > 其他分享 >高级前端进阶(七)

高级前端进阶(七)

时间:2022-12-17 11:45:21浏览次数:36  
标签:Vue 进阶 前端 高级 self key data options methods

最近行程码下线了,核酸检测也取消了,但是新冠病毒仍然存在,加上也是流感爆发时期,大家注意防护!!!

阳性无症状,你可能并没有真的感染新冠,新冠病毒是比普通流感病毒要厉害的,会导致发烧的,而且传染性极强。

新冠病毒一旦入侵你的免疫系统,会疯狂繁殖,免疫系统会杀不过来的,那咋办?摆烂,启动终极保护系统(发烧),大家一起GG。长期发热,会对器官有些损伤的。

药物只能缓解症状,真正有效的是你的免疫系统。

一、页面变灰(CSS中滤镜的使用)

全局变灰很简单

filter: grayscale(1);
一行代码即可

部分内容变灰

1、在全局的基础上,给部分内容添加 filter: grayscale(0); 是没有效果的,因为它是滤镜。
2、在部分内容上再添加一层滤镜,逆转全局滤镜效果,方案可行,但暂时好像没有这方面现成的属性来用。里面涉及到图像算法,想逆转不是那么好实现的。
3、取消全局滤镜,遍历,然后给部分内容添加滤镜。虽然是笨方法,但方案可行。

二、Vue文件中为啥this既可以访问data里面的属性,也可以调用methods里面的方法?

其实呢,非常简单。
Vue里面的data是个函数,返回的是一个数据对象,为了组件复用,不共享数据。
Vue里面的methods是个对象,里面包含的全是方法。
所以需要分两类:(当然,还有其他的,prop、computed等等)
举个例子:我写的应该非常非常简化了,还看不懂,自己反思去

function Person(options) {
    const self = this;
    // 重写data,源码中对data还做了响应式处理,更复杂
    for (let key in options.data()) {
        self[key] = options.data()[key];
    }
    // 重写方法
    for (let key in options.methods) {
        self[key] = options.methods[key].bind(self);
    }
}
let p1 = new Person({
    data() {
        return {
            x: '123456'
        }
    },
    methods: {
        test(val) {
            console.log('test', val);
        }
    }
});
console.log(p1.x); // 123456
console.log(p1.test('456')); // test 456

你可能会疑问:我在Vue文件里面不是这样写的
添加生命周期的话,大家应该能更轻易地明白

function Person(options) {
    const self = this;
    // 重写data,源码中对data还做了响应式处理,更复杂
    for (let key in options.data()) {
        self[key] = options.data()[key];
    }
    // 重写方法
    for (let key in options.methods) {
        self[key] = options.methods[key].bind(self);
    }
    // 生命周期处理
    options.created.call(self);
}
new Person({
    data() {
        return {
            x: '123456'
        }
    },
    methods: {
        test(val) {
            console.log('test', val);
        }
    },
    created(){
        console.log(p1.x); // 123456
        console.log(p1.test('456')); // test 456
    }
});

选项式写法的原理
以及
this可以访问对象里面的各种属性及方法,大家应该明白了。

三、Vue的更新

setup方法

我们经常会遇到Vue组件中methods太多时,找方法比较累,难以维护,难以往下拓展,这也就导致了Vue框架无法胜任大型前端项目。
这种情况,可能有人会拆分组件,或者使用Minxin解决。但是呢,还是有着很多麻烦的地方。
1、拆分组件,必定会涉及到组件通信的问题,如果拆分得过多,反而等于是给自己添堵。
2、使用Minxin的话,而Minxin的本质是对象合并,如果名称重复的话,会覆盖,容易出现问题。

吸收了React中Hook的优点,setup诞生,主要就是解决这方面的问题,逻辑复用解决了,接着自然而然诞生了组合式写法。从而让Vue框架整体进了一大步,不再局限于只能建立小型网站了,完全可以胜任大型项目。

说句比较现实的话,很多人知道它,但不太会用这玩意儿或者滥用。。。

Suspense组件

我们知道Vue中的生命周期,是不会阻塞组件执行顺序的,它们只是钩子函数。
而Suspense跟setup搭配使用,可以阻塞组件的渲染的。
现在前端中大量存在异步,虽然Suspense还在试验阶段,但这个还是很值得看好的。
很适合组装异步组件以及一些逻辑问题。

能很多人都不知道这玩意儿,压根儿并不知道页面阻塞问题。。。

Teleport组件

在此出现之前,所有的元素都是在app元素容器里面的,想把某些元素放在这个容器之外,有点麻烦,有了Teleport这个组件,会解决很多这方面问题。

四、最后

最近一段时间可以说是极其极其地危险。流感病毒、新冠病毒,好像又出来了个骆驼病毒等。大家注意防护!
但还是不小心感染了,那只能凉拌了。。。但也别灰心,大概一周,就能康复,而且会几个月内不会再此感染。

标签:Vue,进阶,前端,高级,self,key,data,options,methods
From: https://www.cnblogs.com/ywjbokeyuan/p/16986737.html

相关文章

  • 前端布局之浅谈BFC
    大家好,我是CoderBin1.文档流在介绍BFC之前,需要先给大家介绍一下文档流。我们常说的文档流其实分为定位流、浮动流、普通流三种。2.绝对定位(Absolutepositioning)......
  • 前端报错踩坑
    Componenttemplateshouldcontainexactlyonerootelement.Ifyouareusingv-ifonmultipleelements,usev-else-iftochaintheminstead.<template> <!--......
  • #yyds干货盘点#前端性能优化
    浏览器渲染流程解析HTML文件,构建DOM树,同时浏览器主进程负责下载CSS文件CSS文件下载完成,解析CSS文件成树形的数据结构,然后结合DOM树合并成RenderObject树布局R......
  • hualinux 进阶 vue 5.0:vue UI组件介绍及Element UI
    目录​​ 一、vue流行的UI介绍​​​​1.1un-app所有前端框架​​​​1.2pc浏览器​​​​1.3 小程序mpvue​​​​1.4移动端​​​​1.5 桌面端(客户端)Electron ​​......
  • 【高级开发必掌握SQL】SQL优化篇
    前言虚竹哥最近在写数据库方面的技术专栏,想输出好的技术知识时,也需要不断地输入,给人一瓢水,底下是一桶水。今天来聊一聊SQL的性能优化,然后分享一个关于SQL的开源项目。在分......
  • 推荐几个精致的web UI框架及常用前端UI框架
    以下是几个精致的webUI框架1.AliceuiAliceui是支付宝的样式解决方案,是一套精选的基于spm生态圈的样式模块集合,是Arale的子集,也是一套模块化的样式命名和组织规范,是......
  • C#高级--Expression详解
    C#高级–Expression详解零、文章目录一、Expression是什么1、如何定义Expression<Func<TSource,bool>>就是表达式目录树Expression不能带有大括号,只能有一行代码2、和委托......
  • 激光炸弹【算法竞赛进阶指南, HNOI2003】
    激光炸弹地图上有\(N\)个目标,用整数\(Xi,Yi\)表示目标在地图上的位置,每个目标都有一个价值\(Wi\)。注意:不同目标可能在同一位置。现在有一种新型的激光炸弹,可以摧毁......
  • 分享一些前端优质的掘金小册,学完技术感觉已经超神了
    大家好,本期内容给大家推荐一些优质的前端掘金小册,基本每个都是专栏小册的形式,比较适合初学者及工作几年的前端小伙伴,里面的内容讲解的比较详细,作者也是一线的大厂工作者。有......
  • 前端面试题【js动态创建节点、怎么阻止冒泡事件、怎么阻止默认事件、什么是深拷贝,什么
    前端的那些基本标签​​......