O with occluded right edge to appear also as a C Web Widget 指南 文档 Toggle darkmode

深入: 使用插槽

通常情况下,一个 Web Widget 应用的内部 DOM 是完全封闭的,大部分情况下这是优点,但也带来一些不便。一方面是对搜索引擎不利,另一方面是难以和元素或者其他应用组合——应用插槽解决了这样的问题:既做到了 DOM 的封闭,也允许开放 DOM。

下述 Web Widget 应用提供了两个插槽:titlecontent

// app.widget.js
export default () => ({
  async mount({ container }) {
    container.innerHTML = `
      <h3><slot name="title">Default title</slot></h3>
      <div><slot name="content">Default content</slot></div>
    `;
  },

  async unmount({ container }) {
    container.innerHTML = '';
  }
});

我们可以通过容器来使用应用提供的插槽,将其他元素渲染在应用提供的插槽所在位置:

<web-widget src="./app.widget.js">
  <span slot="title">hello</span>
  <span slot="content">Let's have some different text!</span>
</web-widget>

Web Widget 的插槽就是 Web Components slot,更多插槽信息可以访问 https://developer.mozilla.org/en-US/docs/Web/Web_Components