litelement 与 React 之间的主要区别

Main differences between lit-element & React

查看 React 代码,它似乎更类似于“Lit-Element”代码,两者都可用于创建 Web 组件。如果有人能解释一下“React”和“Lit-element”之间的主要区别,那将非常有帮助?

Frameworks create HTML, Web Components are HTML

反应

(Facebook 已将近十年),主要特点是其 虚拟 DOM。这意味着所有 DOM 元素都是在内存中创建的,React 负责将它们传递到(真实的)DOM。这也意味着您可以 NOTany DOM 更新自己,或使用 W3C 标准事件系统。
(真实)DOM中的所有内容都由 React 处理。
非常棒,就像 Facebook 一样,您必须防止成千上万的开发人员在同一个 DOM 中乱搞。 (没有慢DOM,只有开发者编写访问DOM的慢代码)

更新 2022 React R18 仍然没有提及自定义 Elements/native Web 组件

W3C 标准 网络组件

(作者:苹果、Mozilla、Google、微软)

由 3 种不同的技术组成:

  • 自定义元素API
  • 模板:<template>
  • 阴影DOM

一个可以单独使用!

您可以在常规 <div> 上附加阴影 DOM 以创建类固醇 DIV,而无需使用自定义元素或模板。

W3C Web Components 标准事实上 由浏览器制造商 Apple、Google、Mozilla 和 Microsoft 开发。

所有人都必须同意,这导致制定标准进展缓慢;但是 一旦成为 标准,只要 JavaScript 将 运行 在浏览器中支持 W3C 标准。

Web 组件历史(从 2010 年开始):

Microsoft 选择交换 Browser-engines 并在 Chromium 上制作 Edge(2020 年 1 月)运行,
现在所有现代浏览器都支持 Web 组件

Chrome,Safari 和 FireFox 支持的 Web 组件(版本 V1)自 2018 年以来
一些浏览器(部分)支持现已弃用的 V0 版本的时间更长。
所以对 Web Components 有很多经验。

自定义元素 API 是一个 API,仅此而已,(但强大的)
将其与框架进行比较就像将 Set 和 Map 与 Redux 或 Vuex 进行比较。

模板 很棒,但许多开发人员 copy/paste 博客示例使用 javascript 代码创建 <template> 而不是在 HTML

shadowDOM(以及 SLOT 和 :parts)值得拥有自己的长篇章,
许多开发人员不了解它是什么或如何使用它,但大多数人对此有坚定的看法。

点亮

(按 Google)。是一个基于 W3C Web 组件技术 构建的库

在版本 2.
之前调用了 Lit-Element & Lit-HTML 点亮之前,Google也有Polymer

!!!您不需要 Lit 来开发 Web 组件!!!

Lit 是一个工具它将加快开发进程。
当您首先学习 Lit 时,您学习的是 工具 而不是 Web 组件 技术

Lit 是 语法糖 (有点像 jQuery 是)

(就像早期 jQuery 天一样)有 50 多个 Lit 选项:

https://webcomponents.dev/blog/all-the-ways-to-make-a-web-component/

React 的未来?

有趣的部分是 React,由于其 virtual DOM 实现,仅支持 71 的 W3C 自定义元素 API %(参见 https://custom-elements-everywhere.com/)。
需要为您要使用的每个 W3C 组件创建一个 React 包装器。 (参见:https://reactjs.org/docs/web-components.html

React17 update(2020 年 10 月)甚至没有提到 Web 组件、自定义元素、影子DOM 或模板

[2021 年更新] 我不再阅读 React 更新。但是本尼·鲍尔斯做到了:https://dev.to/bennypowers/what-s-not-new-in-react-18-45c7

WHATWG

非常有趣的事实是 Facebook 没有浏览器,也不是 WHATWG 的核心成员。 自 2019 年以来,WHATWG(读作:Google、苹果、微软、Mozilla)控制着浏览器中的运行:https://techxplore.com/news/2019-06-w3c-whatwg-agreement-version-html.html

框架

全部其他框架(Angular、Vue、Svelte等)do100%支持W3C标准可以创建 Web组件

这创造了一个有趣的未来。

  • Facebook,不开发浏览器,几乎没有什么浏览器的利害关系运行。

  • WHATWG 是by-invitation-only; Google、Apple、Microsoft 和 Mozilla 会邀请 Facebook 吗?

  • 有人说 React 是 te 新 Flash (End Of Life: December 31, 2020)

  • 有人说FaceBook会合并Whatsapp、insTagram和Facebook,
    然后将提供一个新的浏览器 everyone in the world must install

关于框架和库

Disclaimer: I built my own motorbikes

框架和库就像您在超市购买的罐头和包装好的食材。

好的,您可以在 table 上用餐。
但是去买杂货,品尝香料,学习如何烘烤烤架,
你会成为一名厨师。

Libraries/Frameworks 的一个问题是:在引入新功能时,新版本中总会有 重大更改。或者当功能不再需要时,因为它们现在是本机的一部分,因此更快的标准(但语法不同)想想 jQuery 选择器和(后来实现的).querySelector

这绝不是 one-click 升级。并且由于您 most-likely 没有为所有这些新功能编写 TDD 测试,您必须再次检查和测试所有代码

或更糟,例如 Angular 1 到 Angular 2“升级”;你必须重写一切...

你可以选择专业Front-End你想成为的开发者