由于HTML导入现在已在Chrome浏览器(https://www.chromestatus.com/feature/5144752345317376)中弃用,并且将其删除,因此我想知道还有哪些替代方法。
我目前正在使用HTML导入来导入HTML模板。到目前为止,我只看到两种选择:
是否存在一种新的导入HTML模板的原始方法? (通过“香草”,我基本上是指一种无需任何其他工具(如预编译器或打包程序)的方法)
答案 0 :(得分:1)
index.html:
<script type="module">
import { CustomHTMLElement } from './CustomHTMLElement.js'
customElements.define('custom-html-element', CustomHTMLElement)
</script>
<custom-html-element></custom-html-element>
CustomHTMLElement.js:
import { createTemplate } from './createTemplate.js'
const template = createTemplate(`
<template>
<style>
.box {
width: 2rem;
height: 2rem;
background-color: red;
}
</style>
<div class="box"></div>
</template>
`)
export class CustomHTMLElement extends HTMLElement {
constructor() {
super()
const templateContent = template.content
const shadowRoot = this.attachShadow({mode: 'closed'})
shadowRoot.appendChild(templateContent.cloneNode(true))
}
}
createTemplate.js:
import { createDOM } from './createDOM.js'
export function createTemplate(templateText) {
const dom = createDOM(templateText)
const template = dom.querySelector('template')
return template
}
createDOM.js:
export function createDOM(htmlText) {
return new DOMParser().parseFromString(htmlText, 'text/html')
}
请参阅 https://github.com/SanjoSolutions/web-components 以获取在 Unlicense 许可下许可的代码。