撰写时间:2020 年 10 月
构架CREATE HTML,
网络组件ARE HTML
React
(现在已经快十年了,由 Facebook/Meta 提供),主要特点是它virtualDOM。这意味着所有 DOM 元素都是在内存中创建的,React 负责将它们传递到(真实的)DOM。这也意味着您可以NOT do anyDOM 自行更新,或使用 W3C 标准事件系统。
中的一切 (real)DOM由 React 处理。
当您必须防止成千上万的开发人员在同一个 DOM 中乱搞时(例如 Facebook),这非常有用。 (没有慢速的 DOM,只有开发者编写访问 DOM 的慢速代码)
2022 年更新 反应R18 https://github.com/reactjs/rfcs/blob/react-18/text/0000-react-18.md仍然没有提到自定义元素/本机 Web 组件
W3C standard网络组件
(作者:苹果、Mozilla、谷歌、微软)
由 3 种不同的技术组成:
- 自定义元素 API
- 模板:
<template>
- 影子 DOM
每个都可以单独使用!
您可以将shadowDOM附加到常规上<div>
无需使用自定义元素或模板即可创建 DIV。
W3C Web 组件标准是defacto由浏览器制造商 Apple、Google、Mozilla 和 Microsoft 开发。
所有的人都必须达成一致,这使得制定标准的进展缓慢;但once只要 JavaScript 在浏览器中运行,W3C 标准就会受到支持。
Web Components 历史(从 2010 年开始):
-
必看: 视频:Web 组件:恰逢其时 https://www.youtube.com/watch?v=y-8Lmg5Gobw
-
应该看到: 构建 Web 组件这一年的实践经验教训 - Google I/O 2016 https://www.youtube.com/watch?v=zfQoleQEa4w
-
summary: https://dev.to/this-is-learning/web-components-101-history-2p24 https://dev.to/this-is-learning/web-components-101-history-2p24
微软选择更换浏览器引擎并使 Edge(2020 年 1 月)在 Chromium 上运行,
Web 组件支持现在所有现代浏览器.
Chrome、Safari 和 FireFox 支持 Web 组件(版本 V1)2018年以来.
某些浏览器(部分)支持现已弃用的 V0 版本的时间更长。
因此,我们对 Web 组件有丰富的经验。
-
The 自定义元素 API is an API,不多不少,(但很强大)
将它与框架进行比较就像将 Set 和 Map 与 Redux 或 Vuex 进行比较一样。
-
模板很棒,但是许多开发人员复制/粘贴博客示例来创建<template>
使用 javascript 代码而不是在 HTML 中定义它们
-
影子 DOM (and <slot>
s and :parts
)值得拥有一个长章,
许多开发人员不明白它是什么或如何使用它,
但大多数人对此都有坚定的看法。
Lit
(由谷歌提供)。是否建有图书馆on topW3C Web 组件技术
called 文学元素 & Lit-HTML版本 2 之前。
BeforeLit,谷歌也有Polymer
!!!您不需要 Lit 来开发 Web 组件!
点燃是一个tool它将加快开发进程。
当你首先学习文学时,你正在学习一门tool不是 Web 组件技术
Lit is 句法糖(有点像 jQuery)
(就像早期的 jQuery 时代一样)有60 多种点燃替代品:
https://webcomponents.dev/blog/all-the-ways-to-make-a-web-component/ https://webcomponents.dev/blog/all-the-ways-to-make-a-web-component/
React 的未来?
有趣的部分是 React,因为它virtualDOM 实现,仅支持 W3C 自定义元素 API71% (see https://custom-elements-everywhere.com/ https://custom-elements-everywhere.com/).
You需要创建一个 React 包装器对于每一个您想要使用的 W3C 组件。
https://reactjs.org/docs/web-components.html https://reactjs.org/docs/web-components.html)
The React17更新 https://reactjs.org/blog/2020/10/20/react-v17.html(2020 年 10 月)甚至没有提到 Web 组件、自定义元素、shadowDOM 或模板等词
[2021 年更新]
我不再阅读 React 更新。但本尼·鲍尔斯做到了:
https://dev.to/bennypowers/what-s-not-new-in-react-18-45c7 https://dev.to/bennypowers/what-s-not-new-in-react-18-45c7
WHATWG
非常有趣的事实是 Facebook/Meta 没有浏览器,也不是 WHATWG 的核心成员。和2019年以来,WHATWG(即:Google、Apple、Microsoft、Mozilla)控制着浏览器中运行的内容:
https://techxplore.com/news/2019-06-w3c-whatwg-agreement-version-html.html https://techxplore.com/news/2019-06-w3c-whatwg-agreement-version-html.html
构架
All其他框架(Angular、Vue、Svelte 等)do100%支持W3C标准and can create网络组件
这创造了一个有趣的未来。
-
Facebook/Meta 并不开发浏览器,因此与浏览器运行的内容几乎没有利益关系。
-
WHATWG 是仅限受邀者;谷歌、苹果、微软和 MozillainviteFacebook?
-
有人说 React 是新的 Flash(生命周期结束:2020 年 12 月 31 日 https://www.adobe.com/products/flashplayer/end-of-life.html)
-
有人说 Facebook/Meta 将合并WWhatsapp、insT阿格拉姆和Facebook,
然后会提供一个新的浏览器everyone在世界上must install
关于框架和库
免责声明:我自己制造了摩托车
框架和库就像您在超市购买的罐装和包装原料。
当然,你的餐桌上还有一顿饭。
但去买菜,taste香料,学习如何cut, bake and grill,
你将成为一名厨师。
库/框架的一个问题是:总会有重大变化在新版本中引入新功能时。或者当不再需要功能时,因为它们现在是本机的一部分,因此更快的标准(但语法不同)想想 jQuery 选择器和(稍后实现).querySelector
它绝不是一键式升级。而且因为您很可能没有为所有这些新功能编写 TDD 测试,你必须再次检查和测试你的所有代码
或者更糟,就像 Google Angular 1 到 Angular 2“升级”;你必须重写一切......
这是你的选择专业的你想成为的前端开发人员