iT邦幫忙

2021 iThome 鐵人賽

DAY 2
1
Modern Web

Web Component 網頁元件之路系列 第 2

[Day02] - 旅途開始前的行前解說

  • 分享至 

  • xImage
  •  

昨天提到了 Web Component , 今天先初步了解一下什麼是 WebComponent 跟他能做什麼吧 !


WebComponent 簡介

WebComponent 究竟有什麼特性呢 ?

這時我們可以先看一下 , 現成的 WebComponent - Wired Elements

在我們的 Web 中需要如何引用 ?

步驟一 > 將 Wired Elements 的 JS 檔在 Html 中引用

<script type="module" src="https://unpkg.com/wired-elements?module"></script>

步驟二 > 在我們的頁面中使用 wired-input . wired-button ...等 , 特別的 Html Tag 使用 Wired Elements 定義好的元件

<h3>Enter Your Nick Name:</h3>
<div>
  <wired-input placeholder="Enter name"></wired-input>
  <wired-button>確定</wired-button>
</div>
<button>進入遊戲</button>

這時我們可以觀察到 WebComponent 的第一個特性 : Custom Html Tag

在頁面中 , 我們多加設定 button 的 styling ,

<style>
button {
      background-color: #15aacb;
      border-radius: 4px;
      padding: 10px 25px;
      color: white;
      margin: 8px;
    }
</style>

我們可以觀察到 , 這並不會影響到 wired-button 這個元件的樣式

元件內外的樣式定義是分開的 , 這就是 WebComponent 的第二個特性 : Shadow Dom

這可以避免一些定義 button 樣式時 , 互相干擾的一些麻煩事

有時 , 我們需要在我們定義的 Html Tag 中使用到原生的 Html Tag

我們只需要將其放到我們的元件中即可

<wired-card elevation="4" fill="darkred" style="color: lightyellow;" class="wired-rendered">
<h4>Colored Card</h4>
<p>
  Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore
  magna aliqua.
  Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat.
</p>
</wired-card>

這就是 WebComponent 的第三個特性 : Slot

成果圖

如果想查看實際頁面 , 請到 import-wired-element.html 查看


下方整理一下 , 今天討論到的 WebComponent 三特性

專有名詞 說明
Custom Html Tag 產生自定義的 Tag 當作自身的元件使用 ex: <wired-button/>
Shadow Dom 將元件內外的樣式設定分隔開來 , 互不影響
Slot 將元件內可以加上一些原生的 Html Tag

上述這些 , 不知道學過 Vue 的邦友們有沒有種很熟悉的感覺 ?

聽說 Vue 的作者在製作 Vue 時 , 有參考那時的 WebComponent 定義去製作 Vue 的

參考資料 :


上一篇
[Day01] - 旅途開始前的茶室閒聊
下一篇
[Day03] - 第一個 WebComponent 元件
系列文
Web Component 網頁元件之路30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

1 則留言

0
小不釘
iT邦新手 2 級 ‧ 2022-03-24 23:47:33

超讚的解說文/images/emoticon/emoticon41.gif
我居然是第一個upvote,
只能說這算是個頗進階的主題了~

Tree iT邦新手 3 級 ‧ 2022-03-25 23:52:46 檢舉

感謝捧場 , 不過我自認文章沒寫好 , 特別是後期的文章 /images/emoticon/emoticon16.gif

我要留言

立即登入留言