事关我周六参加Vue线下活动的收获

354 阅读3分钟

“这是我参与8月更文挑战的第5天,活动详情查看:8月更文挑战

写在前面: 来到深圳工作之后的第一个周六,跟掘金上认识的大佬相约参加了一个Vue线下交流活动,有一些所学所得,以及衍生的一些知识点,现记录下来,与君共勉.

事关我周六参加Vue Shenzhen线下活动的收获

活动总共是一个半小时,分为了上下两部分,上半部分是关于TS的,下半部分是关于Vue2升级Vue3的.
详情见下文:

线上交流

第一部分是字节大佬讲述的关于TS体操(是的,体操)实践,个人听不太懂,主要记得的内容是关于TS(静态语言)和JS(动态语言)的一个区别 --> 函数重载

先放一下大佬的PPT内容,因为我比较菜,所以我是不明觉厉的状态.

1111e14755fa88ec122c239f61368ee5227.png

11117b406513de147e49152685398f2972.png

总结

19b368a8ce93a2461f22ac206fec4046.png

函数重载

首先呢,JavaScript中没有真正意义上的函数重载,因为js是动态语言,在JavaScript中,同一个作用域,出现两个名字一样的函数,后面的会覆盖前面的,所以JavaScript没有真正意义的重载。但TS是JS的超集,并且它是一个静态语言,因此是可以有函数重载的。

所谓函数重载,就是指函数名相同,函数的参数列表不同(包括参数个数和参数类型),根据参数的不同去执行不同的操作。(简单理解就是,同一个函数,穿的参数不一样,执行的逻辑也不一样.)

function overload(a){
    console.log('一个参数')
}

function overload(a,b){
    console.log('两个参数')
}

// 在支持重载的编程语言中,比如 java
overload(1);         //一个参数
overload(1,2);    //两个参数


// 在 JavaScript 中
overload(1);         //两个参数
overload(1,2);    //两个参数

线下交流

第二部分是华为大佬,axios代码贡献者线下讲述的,关于Vue2项目升级为Vue3项目的实践,而且是在现场演示了Vue官方发布是升级插件(vue-compat),以及由大佬封装的插件(原谅我忘了叫什么)现场演示,并且现场讲解了其底层原理实现,究竟是怎么样进行Vue2到Vue3的迁移的 --> AST解析以及template解析

AST解析

也是,先贴大佬的讲解

22277afcf31a2665a76cc8dbc36ce93b0c.jpg

2ff8cb9aa124afd9e55b47b18c67912b.jpg

20156259788217871e796c6ae98552d7.jpg

关于Babel对ES6代码解析为ES5代码

为了转换我们的代码, babel 做了三件事:

  • Parser 解析我们的代码转换为 AST。

  • Transformer 利用我们配置好的 plugins/presets 把 Parser 生成的 AST 转变为 新的 AST。

  • Generator 把转换后的 AST 生成新的代码

总结

所以的话,关于Vue2项目升级Vue3项目的插件运行原理,其实和ES6优雅降级编译成ES5代码的原理,以及虚拟Dom的原理大致相同,同一个关键词就是AST树,也就是把js代码变成Json格式,进行处理之后再编译回来.

End