香草卷筒纸组件

2023-11-07 16:31
文章标签 组件 香草 卷筒纸

本文主要是介绍香草卷筒纸组件,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

什么是Web组件? (What are Web Components?)

Web components are custom, reusable web elements which encapsulate functionality, markup structure and styling by using vanilla javascript/HTML/CSS along with native Web APIs.

Web组件是可重用的自定义Web元素,它们通过使用原始javascript / HTML / CSS以及本机Web API来封装功能,标记结构和样式。

Custom elements teach the browser new tricks while preserving the benefits of HTML

自定义元素在保持HTML优势的同时,教给浏览器新技巧

Eric Bidelman

埃里克·比德尔曼 ( Eric Bidelman)

They can be used in the template like common HTML elements (e.g.<p> or <span> ).

它们可以像通用HTML元素(例如<p><span> )一样在模板中使用。

<body>
<p>a simple paragraph</p> <script type="module" src="my-custom-element.js"></script>
<my-custom-element></my-custom-element>
</body>

They build upon ECMAScript 2015 class syntax by extending the HTMLElement interface, that ships useful APIs for manipulating the element or responding to events.

它们通过扩展HTMLElement接口建立在ECMAScript 2015类语法的基础上,该接口提供了用于操纵元素或响应事件的有用API 。

class MyCustomElement extends HTMLElement {}

You can also extend existing HTML elements like HTMLInputElement, HTMLButtonElement, or HTMLParagraphElement to inherit their properties and methods. Thereby you’re able to create your own implementations of common HTML elements.

您还可以扩展现有HTML元素(如HTMLInputElementHTMLButtonElementHTMLParagraphElement以继承其属性和方法。 因此,您可以创建自己的通用HTML元素实现。

生命周期挂钩 (Life Cycle Hooks)

There are a few predefined callback functions you can use for reacting to specific life cycle events, like

您可以使用一些预定义的回调函数来响应特定的生命周期事件,例如

  • connectedCallback — this callback is called whenever your element is inserted into the DOM

    connectedCallback每当您的元素插入DOM时,都会调用此回调

  • disconnectedCallback — is called whenever the element is removed from the DOM tree

    disconnectedCallback每当从DOM树中删除元素时调用

These callbacks are useful for safely fetching/accessing data or running some clean up code.

这些回调对于安全地获取/访问数据或运行一些清理代码很有用。

影子DOM (Shadow DOM)

The encapsulation of the styling and markup structure is achieved by attaching a so called Shadow DOM to your web component, which creates a hidden DOM tree beneath your custom HTML element.

样式和标记结构的封装是通过将所谓的Shadow DOM附加到您的Web组件来实现的,该组件在您的自定义HTML元素下创建了一个隐藏的DOM树。

Shadow DOM in rendered HTML
Shadow DOM visible Chrome DevTools elements tab
Shadow DOM可见的Chrome DevTools元素选项卡

The Shadow DOM is useful when the components markup and style should remain unaffected by global style definitions.

当组件标记和样式应不受全局样式定义的影响时,Shadow DOM很有用。

浏览器支持 (Browser Support)

Web components are supported by all modern browsers like Chrome, Firefox and Opera (for Edge, Safari and IE11 you can use polyfills).

所有现代浏览器(例如Chrome,Firefox和Opera)都支持Web组件(对于Edge,Safari和IE11,您可以使用polyfills )。

构架 (Frameworks)

There are a few frameworks, which will accelerate your web component development, like Polymer or Hybrids. Before adding the framework of your choice to your project try to evaluate whether you’ll really need this additional dependency.

有一些框架可以加速您的Web组件开发,例如PolymerHybrids 。 在将选择的框架添加到项目中之前,请尝试评估您是否真的需要此附加依赖项。

In case you want to create just a few simple components and not an entire component library, you should take the no-framework-path.

如果只想创建几个简单的组件而不是整个组件库,则应采用no-framework-path。

实施Web组件 (Implementing a Web Component)

After clarifying all the necessary fundamentals let’s get our hands dirty and implement a vanilla web component. The goal is to create a basic web component, which contains encapsulated styles/markup and which can be easily extended.

弄清所有必要的基础知识之后,让我们动手做一个简单的Web组件。 目标是创建一个基本的Web组件,其中包含封装的样式/标记,并且可以轻松地对其进行扩展。

At the end of this article you’ll also find a link to my simple web component template repository.

在本文的结尾,您还将找到一个指向我的简单Web组件模板存储库的链接。

建立 (Setup)

For the purpose of demonstration we’ll create a simple web page where our custom web element will be used.

为了进行演示,我们将创建一个简单的网页,其中将使用我们的自定义Web元素。

To check whether our custom element works as expected, I’ll use the tool serve to host our simple web page.

要检查我们的自定义元素是否按预期工作,我将使用该工具用来承载我们简单的网页。

With serve you’ll just have to run the serve . command in the directory where your simple web page resides to boot up a web server, that hosts it on localhost:5000.

使用发球区,您只需运行serve . 简单网页所在目录中的命令来启动Web服务器,该服务器将其托管在localhost:5000

基金会 (The Foundation)

First we’ll extend the HMTMLElement interface to get the required APIs and to register our class as a custom element, so we can use it in our example HTML page.

首先,我们将扩展HMTMLElement接口以获取所需的API并将类注册为自定义元素,因此可以在示例HTML页面中使用它。

Now you can already add it to the web page by importing the javascript file and by inserting the html tag, which we’ve defined in the customElements.define()call as the first argument.

现在,您已经可以通过导入javascript文件并插入html标签(将我们在customElements.define()调用中定义为第一个参数customElements.define()将其添加到网页中。

Do not forget to import the javascript file as type="module" otherwise it won’t get loaded.

不要忘记将javascript文件导入为type="module"否则将不会被加载。

Now we’ve already fulfilled the required steps for utilizing our own web component. Of course, our custom element doesn’t have any content yet but we’re going to change that in the next section.

现在,我们已经完成了利用我们自己的Web组件的必要步骤。 当然,我们的custom元素还没有任何内容,但是我们将在下一部分中对其进行更改。

With this solid foundation we’ll continue and add encapsulated markup structure and styles to our custom element by using the Shadow DOM APIs.

在这个坚实的基础上,我们将继续使用Shadow DOM API将封装的标记结构和样式添加到我们的自定义元素中。

使用影子DOM (Using the Shadow DOM)

As already mentioned the Shadow DOM is a hidden DOM tree, which is attached to your custom element. This ensures that the styles of our custom element aren’t affected by global or another elements styles.

如前所述,Shadow DOM是一个隐藏的DOM树,它附加到您的自定义元素上。 这样可以确保我们的自定义元素的样式不受全局或其他元素样式的影响。

Let’s attach a Shadow DOM to our custom element. We’ll do that in the constructor and choose open as our desired encapsulation mode.

让我们将Shadow DOM附加到我们的自定义元素上。 我们将在constructor执行此操作,然后选择open作为所需的封装模式。

When setting the encapsulation mode to open we’re making sure that our Shadow DOM child elements are accessible via javascript.

将封装模式设置为open我们确保可以通过JavaScript访问Shadow DOM子元素。

Next we should add a template and some styles to our custom element.

接下来,我们应该向我们的自定义元素添加一个模板和一些样式。

Notice that our markup structure resides in a<template> HTML element, which won’t get displayed on the rendered web page.

请注意,我们的标记结构位于<template> HTML元素中,该元素不会显示在呈现的网页上。

The web page should now display the custom element.

网页现在应显示自定义元素。

Image for post

Now, to prove that our custom styles are encapsulated and not affected by the global styles, we add global styles and a simple heading element to our index.html file.

现在,为了证明我们的自定义样式已封装并且不受全局样式的影响,我们向index.html文件中添加了全局样式和一个简单的heading元素。

The web page renders the two headings but with different styles.

网页呈现两个标题,但样式不同。

Image for post

You’ve just created a simple, custom web element with encapsulated style by using just vanilla javascript. Use it as a starting point and extend it to your preferences to create your own unique web elements.

您刚刚使用香草JavaScript创建了一个具有封装样式的简单自定义Web元素。 使用它作为起点并将其扩展到您的首选项,以创建自己的独特Web元素。

You can find the whole example here:

您可以在此处找到整个示例:

翻译自: https://medium.com/@jansommer993/vanilla-web-components-caa1bd83ed86


http://www.taodudu.cc/news/show-8178398.html

相关文章:

  • 香草世界
  • 桌游香草之路
  • Java 买机票
  • 查看电脑重启次数、原因
  • 【Android Exception】android.content.pm.PackageManager$NameNotFoundException
  • php中获取文件夹目录大小写,批量替换目录下面的文件为大写或小写
  • 我不是驴子
  • MVP的一些小知识
  • 驴的一天
  • 【产品学习】从技术转型到产品的一些心得和建议
  • 【Andoid Studio升级】Android Studio new project 或者打开SDK Manager没反应
  • 证据对抗、证据链标准 z
  • python读取crl吊销列表
  • python发送https请求并验证服务端证书
  • 第五讲 其他设置(5)
  • 使用openssl生成根证书以及签发服务器证书
  • 解决An error occurred while calling None.org.apache.spark.api.java.JavaSparkContext. : java.lang.Illeg
  • Linux 之加密类型,CA,Openssl,Openssh
  • RH413企业安全加固 第12章 安装 CA 中心
  • 证书格式与读取
  • ut5311通信接口单元_总线接口与计算机通信(五)CAN总线
  • openssl之带你走CA认证
  • 单元测试之单元测试实战运用、xml运用、csv运用
  • Linux:openssl创建CA及颁发证书
  • 【前端项目资源网站】—— 你想要的都有
  • 鸟叔linux笔记003
  • 鸟叔linux笔记004
  • linux目录含义(摘自-鸟叔linux)
  • 鸟叔的Linux私房菜基础篇-学习笔记(七)
  • 鸟叔菜谱之Linux磁盘管理
  • 这篇关于香草卷筒纸组件的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



    http://www.chinasem.cn/article/364878

    相关文章

    JS常用组件收集

    收集了一些平时遇到的前端比较优秀的组件,方便以后开发的时候查找!!! 函数工具: Lodash 页面固定: stickUp、jQuery.Pin 轮播: unslider、swiper 开关: switch 复选框: icheck 气泡: grumble 隐藏元素: Headroom

    如何在页面调用utility bar并传递参数至lwc组件

    1.在app的utility item中添加lwc组件: 2.调用utility bar api的方式有两种: 方法一,通过lwc调用: import {LightningElement,api ,wire } from 'lwc';import { publish, MessageContext } from 'lightning/messageService';import Ca

    vue2 组件通信

    props + emits props:用于接收父组件传递给子组件的数据。可以定义期望从父组件接收的数据结构和类型。‘子组件不可更改该数据’emits:用于定义组件可以向父组件发出的事件。这允许父组件监听子组件的事件并作出响应。(比如数据更新) props检查属性 属性名类型描述默认值typeFunction指定 prop 应该是什么类型,如 String, Number, Boolean,

    kubelet组件的启动流程源码分析

    概述 摘要: 本文将总结kubelet的作用以及原理,在有一定基础认识的前提下,通过阅读kubelet源码,对kubelet组件的启动流程进行分析。 正文 kubelet的作用 这里对kubelet的作用做一个简单总结。 节点管理 节点的注册 节点状态更新 容器管理(pod生命周期管理) 监听apiserver的容器事件 容器的创建、删除(CRI) 容器的网络的创建与删除

    火语言RPA流程组件介绍--浏览网页

    🚩【组件功能】:浏览器打开指定网址或本地html文件 配置预览 配置说明 网址URL 支持T或# 默认FLOW输入项 输入需要打开的网址URL 超时时间 支持T或# 打开网页超时时间 执行后后等待时间(ms) 支持T或# 当前组件执行完成后继续等待的时间 UserAgent 支持T或# User Agent中文名为用户代理,简称 UA,它是一个特殊字符串头,使得服务器

    vue 父组件调用子组件的方法报错,“TypeError: Cannot read property ‘subDialogRef‘ of undefined“

    vue 父组件调用子组件的方法报错,“TypeError: Cannot read property ‘subDialogRef’ of undefined” 最近用vue做的一个界面,引入了一个子组件,在父组件中调用子组件的方法时,报错提示: [Vue warn]: Error in v-on handler: “TypeError: Cannot read property ‘methods

    JavaEE应用的组件

    1、表现层组件:主要负责收集用户输入数据,或者向客户显示系统状态。最常用的表现层技术是JSP,但JSP并不是唯一的表现层技术。 2、控制器组件:对于JavaEE的MVC框架而言,框架提供一个前端核心控制器,而核心控制器负责拦截用户请求,并将用户请求转发给用户实现的控制器组件。而这些用户实现的控制器则负责处理调用业务逻辑方法,处理用户请求。 3、业务逻辑组件:是系统的核心组件,实现系统的业务逻辑

    17 通过ref代替DOM用来获取元素和组件的引用

    重点 ref :官网给出的解释是: ref: 用于注册对元素或子组件的引用。引用将在父组件的$refs 对象下注册。如果在普通DOM元素上使用,则引用将是该元素;如果在子组件上使用,则引用将是组件实例: <!-- vm.$refs.p will be the DOM node --><p ref="p">hello</p><!-- vm.$refs.child will be the c

    16 子组件和父组件之间传值

    划重点 子组件 / 父组件 定义组件中:props 的使用组件中:data 的使用(有 return 返回值) ; 区别:Vue中的data (没有返回值);组件方法中 emit 的使用:emit:英文原意是:触发、发射 的意思components :直接在Vue的方法中声明和绑定要使用的组件 小炒肉:温馨可口 <!DOCTYPE html><html lang="en"><head><

    15 组件的切换和对组件的data的使用

    划重点 a 标签的使用事件修饰符组件的定义组件的切换:登录 / 注册 泡椒鱼头 :微辣 <!DOCTYPE html><html lang="en"><head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta http-equiv="X-UA-