问题描述
我已经在一些项目中学习并使用“ Lit-element”。但是我之前没有“ React”的工作经验。研究React代码似乎更类似于“ Lit-Element”。有人可以解释“反应”和“发光元素”之间的主要区别是非常有帮助的。
解决方法
反应
(由Facebook开发到现在已有近十年的历史了),主要功能是其 虚拟 DOM。这意味着所有DOM元素都在内存中创建,React负责将它们传递到(真实) DOM 。这也意味着您可以不自己进行任何 DOM更新,或使用W3C标准事件系统。
(真实) DOM 中的所有内容均由React处理。
很棒,例如,像Facebook这样,您必须防止成千上万的开发人员在同一个DOM中混乱。 (没有慢速DOM,只有开发人员编写的慢速代码才能访问DOM )
W3C Web组件
(由:Apple,Mozilla,Google,Microsoft)
由3种不同的技术组成:
- 自定义元素API
- 模板:
<template>
- shadowDOM
每个都可以不使用而使用!
您可以在常规<div>
上附加shadowDOM以在类固醇上创建DIV,而无需使用自定义元素或模板。
发光元素
(由Google提供)。是在W3C Web组件技术的顶部上构建的库
!!!您不需要Lit即可开发Web组件!!!
Lit是工具
当您首先学习Lit时,您在学习的是工具而不是Web组件技术
Lit是语法糖(有点像jQuery一样),有很多选择:hyperHTML,uCE,Hybrids,Stencil等。
自定义元素API
W3C自定义元素API(版本V1在所有浏览器中均可用,但Edge自2018年以来已由浏览器制造商Apple,Google,Mozilla和Microsoft开发)。
他们所有人都必须同意,这导致制定标准的进展缓慢;但是 一次 是一种标准,只要在浏览器中运行JavaScript,就支持W3C标准。
Microsoft选择交换浏览器引擎,并让Edge(2020年1月)在Chromium上运行,现在所有现代浏览器都支持自定义元素API。
Custom Elements API是一种 API ,仅此而已,(但功能强大)
将其与框架进行比较就像将Set和Map与Redux或Vuex进行比较。
React的未来?
有趣的部分是React,由于其虚拟 DOM实现,仅支持 71%的W3C自定义元素API(请参见https://custom-elements-everywhere.com/)。 您需要为要使用的每个W3C组件创建一个 React包装器。
所有其他框架(Angular,Vue等)做到支持W3C标准100%
这带来了一个有趣的未来。
Facebook,而不是开发浏览器,几乎与浏览器的运行无关。
有人说React是新的Flash(EOL December 31,2020)
有人说FaceBook正在合并Instagram,WhatsApp和FaceBook,
然后将提供一个新的浏览器,全世界的每个人必须安装