当前位置: 首页 > Web前端 > vue.js

告别无聊的undefined判断,让老vue-cli3支持?“ES2020”特性如“可选链”

时间:2023-03-31 22:54:47 vue.js

我可以从这篇文章中学到什么?让老项目(基于vue-cli)支持ES新语法(实验阶段),比如“optionalchain”。了解目前处于实验阶段的其他ES新语法。可选链最近见多了群里大家都在说“可选链”,所以我也为单位的老项目打开了“可选链”功能。用了一个月,感觉是:再也不用写那么长的“undefined”判断了,可选链“真香”。constobj={foo:{bar:{baz:42,},},};consta=obj?.a;//undefined,如果没有“?”,会报错//等同于//consta=(null===obj||undefined===obj)?未定义:obj.a;constbaz=obj?.foo?.bar?.baz;//42constbaz=obj?.['foo']?.bar?.baz//42注意:最近发布的vue-cli3已经默认支持“optionalchain”,你可以试试看之前是否支持安装它。使用ts的朋友,如果你使用的是3.7以后的版本,“optionalchaining”也是默认支持的。安装“ES新特性”需要vue-cli3第一步yarnadd-D@babel/plugin-proposal-optional-chaining第二步在项目根目录下找到“babel.config.js”文件,修改“presets"field:module.exports={presets:['@vue/cli-plugin-babel/preset'],plugins:[//可选链插件,其他babel插件也同样安装"@babel/plugin-proposal-optional-chaining"]}其他可玩的ES新特性(实验阶段)通过babel官网可以看到《babelFeature支持的ES新特性》参考:https://babeljs.io/docs/en/pl...挑几个有意思的解释,其他的可以看官网说明:@babel/plugin-proposal-nullish-coalescing-operator》Notundefinedandnotnull”判断varobject1={}varfoo=object1.foo??"default";//"default"varnl=null;varres=nl??1//2@babel/plugin-proposal-logical-assignment-operatorsshort-circuitoperator判断后赋值的简写.leta=false;a||=1;//1编译后的代码是这样的:vara=false;a||(a=1);@babel/plugin-proposal-function-bind使用“::”符号代替“bind”、“call”语法。obj::func//等同于func.bind(obj)::obj.func//等同于obj。func.bind(obj)obj::func(val)//等价的func.call(obj,val)::obj.func(val)//等价的obj.func.call(obj,val)$('.some-link').on('click',::view.reset);//等价于$('.some-link').on('click',view.reset.bind(view));复杂的例子:const{map,filter}=Array.prototype;letsslUrls=document.querySelectorAll('a')::map(node=>node.href)::filter(href=>href.substring(0,5)==='https');@babel/plugin-proposal-partial-applicationfunctionCurryfunctionadd(x,y){returnx+y;}constaddOne=add(1,?);//返回函数addOneaddOne(2);//3@babel/plugin-proposal-private-methods私有属性关键字"#"classCounterextendsHTMLElement{#xValue=0;得到#x(){返回这个。#xValue;}set#x(value){this.#xValue=value;window.requestAnimationFrame(this.#render.bind(this));}#clicked(){这个。#x++;}}其他特性其他特性在业务代码中可能不常用(大佬们可能经常用到,但是大佬们不需要看我的文章来学习吗?)这里就不介绍了,有兴趣的你可以看看bebal的实验特性。综上所述,这里最实用的就是“可选链”功能。让我们快速开始使用它,让老项目的代码更加优雅。快点?。?Typescript系列课程基础教程从这里开始第一课,体验TypeScript第二课,基础类型与入门高级类型第三课,泛型第四课,高级类型解读第五课,有什么特别的命名空间,在vue3中学过?源代码打字稿?-《is》第6课,什么是声明文件(declare)??新手前端别慌!给你10根救命稻草?真的。1px边框,?支持任意数量的边和圆角,1灵丹妙药?揭秘vue/react组件库中作者没有做的5个轮子》vue/react的UI库用了多少DOMAPI?阅读,有问题可以加我微信,我拉你进微信群(因为腾讯微信群限制100人,超过100人后必须由群员拉入)