Web Components 是一组 Web 原生 API 的总称,允许开发人员创建可重用的自定义组件。

在 Vue 和 Web Components 大体上是互补的技术。Vue 能很好地解析和创建自定义元素。不论是在将自定义元素整合到已有的 Vue 应用中,还是使用 Vue 构建和分发自定义元素,你都能获得很好的支持。

在 Vue 中使用自定义元素

Vue 在 Custom Elements Everywhere 测试中获得了 100% 的完美分数。Vue 应用程序中解析出的自定义元素大体上和原生 HTML 元素相同,但需要牢记以下几点:

跳过组件的解析

默认情况下,Vue 会优先尝试将一个非原生的 HTML 标签解析为一个注册的 Vue 组件,如果失败则会将其渲染为自定义元素。这种行为会导致在开发模式下的 Vue 发出“failed to resolve component”的警告。如果你希望 Vue 能将某些确切的元素作为自定义元素处理并跳过组件解析,请指定 compilerOptions.isCustomElement 选项。

如果你正在构建步骤中使用 Vue,则此选项需要通过构建配置传递,因为这是一个编译时选项。

Vite 配置示例

// vite.config.js
import vue from '@vitejs/plugin-vue'export default {plugins: [vue({template: {compilerOptions: {// 将所有包含短横线的标签作为自定义元素处理isCustomElement: tag => tag.includes('-')}}})]
}

使用 Vue 构建自定义元素

自定义元素的一大好处就是它们可以与任何框架一起使用,甚至可以在没有框架的情况下使用。当你需要向可能使用不同前端技术栈的终端用户分发组件时,或者希望向最终应用程序隐藏其所用组件的实现细节时,使用自定义元素非常适合。

defineCustomElement

Vue 支持使用 defineCustomElement 方法创建自定义元素,并且使用与 Vue 组件完全一致的 API。该方法接受与 defineComponent 相同的参数,但是会返回一个扩展自 HTMLElement 的自定义元素构造函数。

<my-vue-element></my-vue-element>
import { defineCustomElement } from 'vue'const MyVueElement = defineCustomElement({// 在此提供正常的 Vue 组件选项props: {},emits: {},template: `...`,// defineCustomElement 独有特性: CSS 会被注入到隐式根 (shadow root) 中styles: [`/* inlined css */`]
})// 注册自定义元素
// 注册完成后,此页面上的所有的 `<my-vue-element>` 标签会被更新
customElements.define('my-vue-element', MyVueElement)// 你也可以编程式地实例化这个元素:
// (只能在注册后完成此操作)
document.body.appendChild(new MyVueElement({// initial props (optional)})
)

Vue 与 Web Components相关推荐

  1. Vue3官网-高级指南(十五)Vue 与 Web Components

    Vue3官网-高级指南(十五)Vue 与 Web Components 文章目录 Vue3官网-高级指南(十五)Vue 与 Web Components 1. Vue 与 Web Components ...

  2. 【译】 Web Components 的高级工具

    原文地址:Advanced Tooling for Web Components 原文作者:Caleb Williams 译文出自:掘金翻译计划 本文永久链接:github.com/xitu/gold ...

  3. Web Components 学习 01 认识 Web Components、一些组件库使用

    什么是 Web Components 开发项目的时候为什么不手写原生 JS,而是要用现如今非常流行的前端框架,原因有很多,例如: 良好的生态 数据驱动试图 模块化 组件化 等 Web Componen ...

  4. 【译】Web Components简介

    本文翻译自:css-tricks.com/an-introduc- 前端开发正在以惊人的速度发展.曾经的前端开发,技术栈都是很简单的,如今却越来越复杂.这一点从无数的文章.教程和Twitter上就可以 ...

  5. Web Components 简述

    要说最近几年来,前端开发最火的一个趋势或最火的前端开发框架是什么,第一想到的是,组件及推崇组件化开发的React框架.本文将介绍Web Components规范并就组件的几大特性进行讨论. 前言 在开 ...

  6. Fiori Fundamentals和SAP UI5 Web Components

    这周有位同事邀请我给团队讲一讲SAP技术的演进历史,所以我准备了下面几个主题来介绍. 其中SAP的技术回顾和演进,我的思路就是从前后台两方面分别介绍. 我画了一张非常简单的图: 去年5月我写过一篇文章 ...

  7. Web Components 上手指南

    现在的前端开发基本离不开 React.Vue 这两个框架的支撑,而这两个框架下面又衍生出了许多的自定义组件库: Element(Vue) Ant Design(React) 这些组件库的出现,让我们可 ...

  8. Web Components 入门

    组件是前端的发展方向,现在流行的 React 和 Vue 都是组件框架. 谷歌公司由于掌握了 Chrome 浏览器,一直在推动浏览器的原生组件,即 Web Components API.相比第三方框架 ...

  9. Web Components 系列(五)—— 详解 Slots

    前言 熟悉 Vue 的同学应该都知道"插槽(slot)"的概念,通过使用插槽可以让页面内容的组织更加灵活. 在 Web Components 体系中也有插槽的概念,今天我们就来具体 ...

最新文章

  1. 随笔——js中的this指向,apply()与 call()
  2. 文档协同编辑帮助企业迎接大数据时代
  3. 男高音,女高音,男中音,女中音,男低音,女低音
  4. 数据结构整理中。。。
  5. 前端学习(1735):前端系列javascript之TypeScript介绍
  6. 鼎利软件测试终端刷机,世纪鼎利pioneer连接移动平台进行volte测试操作说明.doc...
  7. Q2 Spring Boot自动配置原理(ok)
  8. ip纯真 mysql_纯真ip导入mysql
  9. 阿里云【云计算7天实践训练营】新人路线-class6学习笔记
  10. unity塔防游戏怪物转向_玩一玩这款塔防游戏?
  11. CF1383C 题解
  12. 蓝桥杯--历届真题 回文日期【第十一届】【省赛】【B组】
  13. java ajax 联动菜单_二级联动菜单代码(AJAX JAVA).
  14. 如何将您的智能手机用作Amazon Fire TV遥控器
  15. spring注册Bean的几种方式
  16. 哈工大pyltp安装和使用方法
  17. pat乙级 1072 开学寄语 (20 分)C
  18. Shiro的 rememberMe 功能使用指导(为什么rememberMe设置了没作用?)
  19. html旋转围绕的中心点,CSS3实现围绕任何点来旋转(二) | 睿客网
  20. hdu1172 猜数字(java)

热门文章

  1. 360数科张家兴:金融科技的本质是线上化和自动化
  2. 牛!发出中国第一封电子邮件,注册登记域名 CN,中国互联网之父传奇
  3. 泰坦尼克号上谁的生存几率更大?Kaggle 金牌得主 Python 数据挖掘框架发现真相...
  4. 新浪微博回应热搜被暂停更新一周;即刻 APP 下架一年后恢复上线;Android 11 Beta 版发布| 极客头条...
  5. 2019 年被“杀”死的那些技术!
  6. 天干物燥,给你写BUG的心来点甘露
  7. @程序员,这 TOP 11 物联网云平台速码!
  8. SQL 已死,但 SQL 将永存!
  9. Google 封杀我写的 Web 浏览器!
  10. 微信封杀下的互联网江湖