我一直在阅读并尝试了几个可用于我的知识的Web组件实现,我不喜欢的是他们在Javascript / JSX / Typescript中为组件编写HTML代码。
我完成的框架/实施:
聚合物:聚合物1& 2感觉很好,因为他们使用HTML导入进行了所有定义,并将HTML分开并将JS代码分开。但是,对于Polymer 3,它们也像React一样在JS中编写HTML语法,我不喜欢。
Vanilla Web组件:令人惊讶的是,即使是vanilla Web组件规范也就像React在JS代码中使用HTML一样:https://www.webcomponents.org/introduction这是我不喜欢的东西。
模板:虽然这个工具看起来很有前途,但我仍然有同样的问题,我必须编写JS中组件所需的HTML,然后将其转换为vanilla JS。
X-Tag:同样的问题,JS中的HTML。
是否存在我们不在Javascript中编写HTML以使用Web组件的实现?
我背后的主要原因是关注点分离,我无法很好地解决这个问题,因为传统上网络似乎很好地将骨架,样式和DOM主要内容分离为HTML,CSS和JS文件而现在,我们将所有的东西组合在一起,让我觉得一团糟。
这是我不喜欢React的主要原因之一,我们在javascript中编写HTML-Like语法。
答案 0 :(得分:2)
使用vanilla Web Components,您可以决定将HTML,Javascript和CSS分离为不同的文件。这取决于你!
我开发了一些完整的应用程序,其中每个组件(自定义元素)都使用3个文件定义:HTML,JS和CSS。
HTML内容放在<template>
元素中,并克隆为在创建时插入自定义元素。
HTML文件可以在运行时通过HTML Imports或fetch()
或XMLHttpRequest
对象导入。
或者,它可以在构建时与Javascript和CSS合并(自动),只构成一个要下载的文件。
我不知道其他框架,但我认为对于其中一些框架来说也是可能的。