当前位置: 首页 > Web前端 > HTML5

Reacthooks+Vue+WebComponents是什么感觉?

时间:2023-04-05 20:32:38 HTML5

今天早上打开github,发现游大信开了一个仓库,叫vue-lit。我打开它看了看。大概主要思路是利用vue响应式核心来驱动lit-html的更新机制。lit-html是Google的网络组件框架。classbase的API风格不是很难用。其实和现在主流的Reacthooks开发体验不太一样。这里也想吐槽一下vue3的compositionapi。昨天闲着没事看element-plus的源码。当时,我真的惊呆了。让我们看一下道具的定义:'vertical'].indexOf(val)!==-1},},contentPosition:{type:String,default:'center',validator(val:string):boolean{return['left','center','right'].indexOf(val)!==-1},},},})这个。..运行时类型检查?typescript的静态类型检查不是很好吗?三言两语就能搞定的事情,需要这么堆起来。..然后我的血压就各种升高。好吧,就算最后用预编译去掉了这些类型检查,也不知道在开发的时候写这些定义会是什么感觉。这绝对不是一种很舒服的代码编写方式。离家更近。WebComponents是一种浏览器原生支持的组件化解决方案。事实上,它的组件与原生输入没有什么不同。其实包括input在内的原生dom元素的内部实现也是shadowdom。什么?你看不到它,没关系。打开f12,点击右上角的小齿轮,勾选Showuseragentshadowdom。(什么浏览器?当然是awesomeedge,chrome应该也差不多)web-components我就不多说了。他们无处不在。总的来说,它能让你写的组件真的是一个符合web标准的运行时组件,这一点很重要。有了标准,一切都好办。再来说说Hooks。其实大家现在都认可ReactHooks的开发经验,但其实Hooks也有一些隐藏的坑,也就是游达一直说的精神负担,但总的来说这些负担并不是Hooks设计直接带来的,但是Immutable和Closures放在一起。React开发者习以为常的闭包陷阱也是困扰我很长一段时间的陷阱。这个已经讨论得很烂了,这里不再赘述。然后社区有两种人,一种说你都放redux,一种说redux傻。但实际上,他们并没有从根本上解决问题。一成不变是最大的精神负担。那么问题来了:为什么不把Hooks和Proxy结合起来使用呢?一份幸福加上一份幸福,再结合web-components去面对未来,不就是三份幸福吗?是不是很美?然后有人告诉我:做吧,做吧,我会把这么开心的事情留给你。其实不用你告诉我,我已经开始练习了,文档也快全齐了驰骋。废话不多说,直接上代码。//这个拉屎的网站怎么填入iframe...Sandboximport{render,html,component,useState,useEffect,useStyle,css,ReactiveElement}from"@gallop/gallop";component("sand-box",function(this:ReactiveElement,{color="red"}:{color:string}){const[state]=useState({tick:0,text:"hello!"});useEffect(()=>{console.log(`${this.localName}'sstatetickwaschangedto${state.tick}`);},[state.tick]);useStyle(()=>css`div{color:${state.tick%2?"red":"blue"};}`,[state.tick,color]);returnhtml`state.tick++}">tick+1

${state.tick}

{const{value}=e.targetasHTMLInputElement;state.text=value;}}"/>
${state.text}
`;});render(html``);那么这个驰骋的东西除了3喜还有什么用呢?其实大部分都在文档中提到了。其实这个框架不能算框架。它只是从下到上提供了一些API,让你自己组合发挥。如果你只是写网页,那么你可能只会用到10个左右。如果你想扩大它,那么你可能需要20个左右。如果你想玩出各种秀操作,那么这些API可以让你开发得舒心、舒心。另外,你其实我写的是原生的ts/Js,没有神奇的预编译,没有那么多乱七八糟的调度机制,没有太多奇葩的模板语法。相信基础扎实的你,几个小时就能搞定。如果你已经开发了ReactHooks,那么我认为这不会花费10分钟。目前Gallop已经开始解决笔者所在公司部分业务组件的跨框架技术栈问题,但不能完全保证无bug,但开发效率绝对酸爽,希望能多出bug在这里找到。在实践的磨练下,才能浮出水面。说了这么多,还是希望未来的web越来越方便。开发者会掉的头发少,KPI少,做的事情多有趣。最后,感谢我的猫猫陪我写完这个“框架”。如果你对Gallop感兴趣,也可以在Github上交流,欢迎各种Pr/Issues或扩展到Gallop。顺便附上Gallop和各种框架的性能/体积对比===>Portal其实是很久以前的版本,随便拍张图玩玩。