javascript - 无需在 Javascript 中编写 HTML 的 Web 组件
问题描述
我一直在阅读并尝试了一些据我所知可用的 Web 组件实现,但我不喜欢它们为 Javascript/JSX/Typescript 中的组件编写 HTML 代码。
我经历的框架/实现:
Polymer:Polymer 1 和 2 感觉很好,因为他们使用 HTML 导入进行所有定义,并且将 HTML 和 JS 代码分开。但是,对于 Polymer 3,他们也将使用类似 React 的语法在 JS 中编写 HTML,这是我不喜欢的。
Vanilla Webcomponents:令人惊讶的是,即使是 vanilla Web 组件规范也像 React 在 JS 代码中包含 HTML:又是https://www.webcomponents.org/introduction,这是我不喜欢的。
Stencil:虽然这个工具看起来很有前途,但我仍然有同样的问题,我必须在 JS 中编写组件所需的 HTML,然后将其转换为 vanilla JS。
X-Tag:同样的问题,JS 中的 HTML。
有没有我们不在 Javascript 中编写 HTML 来使用 Web 组件的实现?
我背后的主要原因是关注点分离,我不能很好地适应它,因为传统上网络似乎很好地将骨架、样式和 DOM 主程序分离为 HTML、CSS 和 JS 文件,现在,我们将所有东西结合在一起,感觉对我来说很乱。
这也是我不喜欢 React 的主要原因之一,因为我们在 javascript 中编写 HTML-Like 语法。
解决方案
使用 vanilla Web Components,您可以决定将 HTML、Javascript 和 CSS 分成不同的文件。由你决定!
我开发了一些完整的应用程序,其中每个组件(自定义元素)都用 3 个文件定义:HTML、JS 和 CSS。
HTML 内容被放置在一个<template>
元素中,并在创建自定义元素时被克隆以插入到自定义元素中。
HTML 文件可以在运行时通过 HTML Imports 或 withfetch()
或XMLHttpRequest
object 导入。或者,它可以在构建时(自动)与 Javascript 和 CSS 合并,仅构成一个要下载的文件。
我不知道其他框架,但我认为其中一些框架也是可能的。
推荐阅读
- javascript - 使用变量作为 jquery 函数的参数来查找它时,找不到带有 jquery id 选择器的 html 元素
- angular - 如何在同级组件中单击(或更改)时执行多个功能?
- javascript - (香草)Js 搜索中的“找不到”消息
- clojure - 有没有一种更优雅的方法可以将地图作为来自 Clojure 中标准输入的对列表输入?
- xamarin.forms - Xamarin Forms:未呈现空标签
- php - 404 文件未找到,即使它 100% 存在
- linux - openssl、ssh-keygen 和 cfssl 之间的区别
- javascript - 为什么我不能更新 chartjs 图表中的 aspectRatio?
- javascript - Firestore Uncaught (in promise) TypeError: Cannot read property 'appendChild' of null
- go - Google Cloud Datastore 中的日期区域设置