尤大在GitHub上发布了一个名为vue-lit的项目,这似乎预示着一个面向未来的下一代技术。vue-lit是一个验证性的尝试,基于@vue/reactivity和lit-html,可能是一个可以直接在浏览器中渲染Vue写法的Web Component实践。lit-html是一个HTML模板引擎,其底层无需编译即可在浏览器上运行,并且具有更强的扩展能力。在尤大给出的示例中,一个简单的Hello World应用直接在index.html中运行,无需任何编译打包工具,且生命周期函数mounted被触发。这展示了在浏览器中直接渲染Vue写法的Web Component的可能性。在了解lit-html和lit-element之前,我们先来了解一下这两个概念。lit-html是基于tagged template的HTML模板引擎,无需编译即可在浏览器上运行,与HTML模板结合使用时具有更强的扩展能力。而lit-element则是基于Web Components标准的一个基类,可以快速创建Web Component。lit-element基于Web Components标准,是一个类React的语法写法,通过定义一个类并继承lit-element基类,可以快速创建一个Web Component。示例代码中使用了lit-element来创建一个Button组件,并展示了其效果。虽然lit-html在性能上可能比React更好,但其基于相同模板的更新方式在渲染列表时可能存在问题,如删除列表中的某一项会导致整个列表更新。而Web Components浏览器原生能力已经足够强大,是否会在未来替代React等框架,有待时间验证。Web Components的主要功能包括自定义元素、生命周期函数、Shadow DOM和模板。自定义元素允许用户自定义HTML元素,而Shadow DOM则实现了结构、样式封装,解决样式隔离问题。模板功能则允许在组件内部添加动态HTML内容。尤大的vue-lit项目旨在将@vue/reactivity与lit-html结合,使得Vue和Web Components结合到一起。这表明Web Components可能成为未来的技术趋势,而不久的将来可能会看到更多关于Unbundled、ES Modules、Web Components、Custom Element和Shadow DOM等关键词的爆发。总的来说,尤大的vue-lit项目是一个面向未来的尝试,展示了将Vue与Web Components结合的可能性。随着技术的发展,Web Components浏览器原生能力的增强,未来是否会出现更多基于原生API或Web Components标准框架和库的开发方式,值得期待和关注。