Web Component

一種代碼封裝技術(shù)庆猫。微軟于21年發(fā)布了基于此的UI框架Fast
因為是原生API赠幕,性能方面要優(yōu)于三大框架退盯,virtual dom性能也不及shadow dom。不過寫法略原始铐殃。

定義component

customElements.define(compName, class extends HTMLElement {
  constructor() {
    super();
    ...
  }
})

組件內(nèi)容

shadow DOM

Web components 的一個重要屬性是封裝——可以將標記結(jié)構(gòu)、樣式和行為隱藏起來跨新,并與頁面上的其他代碼相隔離富腊,保證不同的部分不會混在一起,可使代碼更加干凈玻蝌、整潔。其中词疼,Shadow DOM 接口是關(guān)鍵所在俯树,它可以將一個隱藏的、獨立的 DOM 附加到一個元素上贰盗。

語法:

var shadow = this.attachShadow({ mode: 'closed' });
content...
shadow.appendChild(content);

mode表示該shadow DOM是否對外開放许饿,開放則外部document能通過.shadowRoot的方式獲取某個DOM下的shadow DOM,shadowRoot獲取的是內(nèi)部的document舵盈。開放的mode為'open'陋率。

template

如果想要在組件內(nèi)寫具體的元素球化,正常寫法就是原生的創(chuàng)建元素,填充內(nèi)容瓦糟,加進文檔筒愚。沒有jQuery甚至不想寫這些。
有兩種方法可以減少代碼量菩浙,一是template巢掺。

<template id="id">
  <div>...</div>
</template>
// component constructor
var content = document.getElementById('id').content.cloneNode(true);

這樣就可以用html寫結(jié)構(gòu),content就是template的文檔段劲蜻,不過數(shù)據(jù)填充還得js寫陆淀。

slot

用過Vue的應(yīng)該對這個東西很熟悉,功能和具名插槽基本一致先嬉。

<template>
  <style>
    .slot1 {
      color: salmon;
    }
    .slot2 {
      color: seagreen;
    }
  </style>
  <p class="slot1">
    <slot name="slot1"></slot>
  </p>
  <p class="slot2">
    <slot name="slot2"></slot>
  </p>
</template>

插槽聲明在template中轧苫,嵌在特定的HTML結(jié)構(gòu)中,插入不同的數(shù)據(jù)疫蔓,功能上和組件很像含懊,但是沒有生命周期,只有數(shù)據(jù)鳄袍,所以可以看做是微型組件绢要。
這里在p.slot1中聲明了名為slot1的插槽,p.slot2中聲明了名為slot2的插槽拗小。

<component>
  <span slot="slot1">slot1</span>
  <span slot="slot2">slot2</span>
</component>

使用插槽需要在標簽中加上slot屬性重罪,值為slot名。
插槽的實際表現(xiàn)與使用slot屬性的標簽以及slot本身的樣式有關(guān)哀九,而且貌似會疊加樣式剿配。
對照組如下:

<template>
  <h2 class="slot1">
    <slot name="slot1"></slot>
  </h2>
  <p class="slot2">
    <slot name="slot2"></slot>
  </p>
</template>
<component>
  <h1 slot="slot1">slot1</h1>
  <h1 slot="slot2">slot2</h1>
</component>
<component>
  <span slot="slot1">slot1</span>
  <span slot="slot2">slot2</span>
</component>

表現(xiàn)如下:


test

可以看出來,字體大小 h1>slot-h2 > h1>slot-p > span>slot-h2 > span>slot-p阅束。
具體什么疊加策略也看不出來呼胚,computed style里分別是 48 32 24 16 px。
感覺使用的時候外層還是不要隨意加樣式息裸,保持slot內(nèi)部樣式統(tǒng)一好點蝇更。

參考:
https://www.cnblogs.com/Andy1982/p/16222577.html
http://www.ruanyifeng.com/blog/2019/08/web_components.html?ivk_sa=1024320u

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市呼盆,隨后出現(xiàn)的幾起案子年扩,更是在濱河造成了極大的恐慌,老刑警劉巖访圃,帶你破解...
    沈念sama閱讀 207,248評論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件厨幻,死亡現(xiàn)場離奇詭異,居然都是意外死亡,警方通過查閱死者的電腦和手機况脆,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,681評論 2 381
  • 文/潘曉璐 我一進店門饭宾,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人格了,你說我怎么就攤上這事看铆。” “怎么了笆搓?”我有些...
    開封第一講書人閱讀 153,443評論 0 344
  • 文/不壞的土叔 我叫張陵性湿,是天一觀的道長。 經(jīng)常有香客問我满败,道長肤频,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 55,475評論 1 279
  • 正文 為了忘掉前任算墨,我火速辦了婚禮宵荒,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘净嘀。我一直安慰自己报咳,他們只是感情好,可當我...
    茶點故事閱讀 64,458評論 5 374
  • 文/花漫 我一把揭開白布挖藏。 她就那樣靜靜地躺著暑刃,像睡著了一般。 火紅的嫁衣襯著肌膚如雪膜眠。 梳的紋絲不亂的頭發(fā)上岩臣,一...
    開封第一講書人閱讀 49,185評論 1 284
  • 那天,我揣著相機與錄音宵膨,去河邊找鬼架谎。 笑死,一個胖子當著我的面吹牛辟躏,可吹牛的內(nèi)容都是我干的谷扣。 我是一名探鬼主播,決...
    沈念sama閱讀 38,451評論 3 401
  • 文/蒼蘭香墨 我猛地睜開眼捎琐,長吁一口氣:“原來是場噩夢啊……” “哼会涎!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起瑞凑,我...
    開封第一講書人閱讀 37,112評論 0 261
  • 序言:老撾萬榮一對情侶失蹤末秃,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后拨黔,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體蛔溃,經(jīng)...
    沈念sama閱讀 43,609評論 1 300
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 36,083評論 2 325
  • 正文 我和宋清朗相戀三年篱蝇,在試婚紗的時候發(fā)現(xiàn)自己被綠了贺待。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 38,163評論 1 334
  • 序言:一個原本活蹦亂跳的男人離奇死亡零截,死狀恐怖麸塞,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情涧衙,我是刑警寧澤哪工,帶...
    沈念sama閱讀 33,803評論 4 323
  • 正文 年R本政府宣布,位于F島的核電站弧哎,受9級特大地震影響雁比,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜撤嫩,卻給世界環(huán)境...
    茶點故事閱讀 39,357評論 3 307
  • 文/蒙蒙 一偎捎、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧序攘,春花似錦茴她、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,357評論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至瞄沙,卻和暖如春己沛,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背帕识。 一陣腳步聲響...
    開封第一講書人閱讀 31,590評論 1 261
  • 我被黑心中介騙來泰國打工泛粹, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人肮疗。 一個月前我還...
    沈念sama閱讀 45,636評論 2 355
  • 正文 我出身青樓晶姊,卻偏偏與公主長得像,于是被迫代替她去往敵國和親伪货。 傳聞我的和親對象是個殘疾皇子们衙,可洞房花燭夜當晚...
    茶點故事閱讀 42,925評論 2 344

推薦閱讀更多精彩內(nèi)容

  • 前言 哈嘍,大家好碱呼,我是海怪蒙挑。 最近不是寫了一篇關(guān)于京東微前端框架的文章嘛 《初探 MicroApp,一個極致簡潔...
    寫代碼的海怪閱讀 442評論 0 1
  • 參考鏈接:https://www.robinwieruch.de/web-components-tutorial ...
    tency小七閱讀 526評論 0 1
  • 組件化是前端工程化重要的一環(huán)愚臀,UI 和 交互(或邏輯)的復(fù)用極大的提高開發(fā)效率以及減少代碼冗余忆蚀。 目前開源的組件庫...
    一蓑煙雨任平生_cui閱讀 4,490評論 0 4
  • 前言:這周完成了兩場技術(shù)分享會,下周還有一場,就完成了這階段的一個重大任務(wù)馋袜。分享會是關(guān)于 TS 的男旗,我這兩場分享會...
    CondorHero閱讀 973評論 0 2
  • 前端目前比較主流的框架有react,vuejs欣鳖,angular等察皇。 我們通常去搭建組件庫的時候都是基于某一種框架去...
    fe_lucifer閱讀 1,578評論 1 3