今天早上打开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`
{const{value}=e.targetasHTMLInputElement;state.text=value;}}"/>