Web Components

来源:http://www.cnblogs.com/zqzjs/archive/2017/08/14/7360664.html
-Advertisement-
Play Games

Web Components是什麼 Web Components是一個聚集html,css,js的一個可復用組件。 這樣開發者就可以在網路上通過插件或組件的形式分享自己的代碼片段(具有獨立的功能),也可以理解成web組件或插件。 Web Components的組成要素 自定義元素 html模版 sh ...


Web Components是什麼


Web Components是一個聚集html,css,js的一個可復用組件。
這樣開發者就可以在網路上通過插件或組件的形式分享自己的代碼片段(具有獨立的功能),也可以理解成web組件或插件。

Web Components的組成要素


  • 自定義元素
  • html模版
  • shadowDOM
  • HTML(組件)導入

shadowDOM是什麼


定義:瀏覽器將模板、樣式表、屬性、JavaScript代碼等,封裝成一個獨立的DOM元素。外部的設置無法影響到其內部,而內部的設置也不會影響到外部,與瀏覽器處理原生網頁元素(比如<video>元素)的方式很像

<!DOCTYPE html>
<html>
  <head>
     <title>Shadow DOM</title>
  
     <style>
       button {
          font: 18px Century Schoolbook;
          border: thin solid gray;
          background: rgba(200, 200, 200, 0.5);
          padding: 10px;
       }
     </style>
  </head>
  
  <body>
       
    <div class="container"></div>
 
    <script>
      var host = document.querySelector('.container');
      var root = host.createShadowRoot();
      root.innerHTML = '<p>How <em>you</em> doin?</p>'
    </script>
  </body>
</html>

獨立的組件


組件有兩種形式

  • 非shadowDOM組件
  • shadowDOM組件

非shadowDOM組件

temp.html

<script>
  var proto = Object.create(HTMLElement.prototype);
 
  proto.createdCallback = function() {
    var name = this.getAttribute('name');
    this.innerHTML = '歡迎來到web組件, <b>' +
                     (name || '?') + '</b>';
  };
 
  document.registerElement('say-hi', {prototype: proto});
</script>

shadowDOM組件

temp2.html

<template id="t">
  <style>
    ::content > * {
      color: red;
    }
  </style>
  <span>I'm a shadow-element using Shadow DOM!</span>
  <content></content>
</template>
 
<script>
  (function() {
    // 指向被載入的網頁
    var importDoc = document.currentScript.ownerDocument;
 
    // 定義並登記<shadow-element>
    var proto2 = Object.create(HTMLElement.prototype);
 
    proto2.createdCallback = function() {
      var template = importDoc.querySelector('#t');
      var clone = document.importNode(template.content, true);
      var root = this.createShadowRoot();
      root.appendChild(clone);
    };
 
    document.registerElement('shadow-element', {prototype: proto2});
  })();
</script>

知識點

  • HTMLElement.prototype:為自定義註冊的元素指定原型
  • createdCallback:是實例生成時觸發的hook
  • registerElement:註冊自定義組件

組件引入


shadow.html

<link rel="import" href="temp.html"/>
<link rel="import" href="temp1.html"/>

直接通過link的方式引入


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 1.jQuery 語法 Tips: 通過 CDN(內容分髮網絡)引用JQuery:(link的引用最好放在script的引用之前) 獲取CDN網址:http://cdn.code.baidu.com/ jQuery 語法是為 HTML 元素的選取編製的,可以對元素執行某些操作。 基礎語法是:$(se ...
  • 在實際開發開發中我們會用到各種瀏覽器、HTML、JS等提供的原生的組件/介面,但是這樣並不一定滿足我們的要求,所以我們需要自己寫一些我們需要的組件。 平常我們會經常用`select` 標簽做下拉選項,不過這個只能選擇不能手動輸入,當然網上也有很強大的select2插件,如果只要輸入和選擇兩個功能的話 ...
  • 原文鏈接 http://www.cnblogs.com/ouyangping/p/6439939.html jQuery對象與DOM對象是不一樣的 通過一個簡單的例子,簡單區分下jQuery對象與DOM對象: 通過一個簡單的例子,簡單區分下jQuery對象與DOM對象: <p id=”imooc”> ...
  • 關於Egret模塊化開發 vip系統 目錄 關於Egret模塊化開發 vip系統... 1 前言... 1 一,搭建界面... 1 二,建立數據模型... 3 1)數據模型的搭建: 3 2)數據的建立... 4 3)數據的增刪改查... 7 三.做交互, 7 結束... 8 前言 做游戲就是做數據, ...
  • import javax.persistence.criteria.CriteriaBuilder; import javax.persistence.criteria.CriteriaQuery; import javax.persistence.criteria.Join; import jav... ...
  • 閉包不是魔法 這篇文章使用一些簡單的代碼例子來解釋JavaScript閉包的概念,即使新手也可以輕鬆參透閉包的含義。 其實只要理解了核心概念,閉包並不是那麼的難於理解。但是,網上充斥了太多學術性的文章,對於新手來說,看完這些文章可能會更加一頭霧水。 這篇文章面向的是使用主流開發語言的程式員,如果你能 ...
  • p:first-child { background-color: pink; width: 150px; line-height: 28px; font-size: 20px; overflow: hidden; text-overflow: ellipsis; white-space: nowr ...
  • 對於CSS 3.0,它對於我們Web設計人員來說不只是新奇的技術,更重要的是這些全新概念的Web應用給我們的設計開發提高了效率以及更多的無限可能性,我們將不必再依賴圖片或者 Javascript 去完成圓角、塊/文字陰影、漸變、透明度等提高Web設計質量的特色應用。 由於CSS3的新特性較多,所以w ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...