摘要:未來會使用來取代它,但是現(xiàn)在貌似還沒有取代的方案,在新版的中這個功能已經(jīng)被刪除了,并且在使用的時候會在中給出警告。
嘿!看看這幾年啊,Web 前端的發(fā)展可是真快??!四大 Web 組件標準想想幾年前,HTML 是前端開發(fā)者的基本技能,通過各式各樣的標簽就可以搭建一個可用的網(wǎng)站,基本交互也不是問題。如果再來點 CSS,嗯,金黃酥脆,美味可口。這時候再撒上幾把 JavaScript,簡直讓人欲罷不能。
隨著需求的增長,HTML 的結(jié)構(gòu)越來越復雜,大量重復的代碼使得頁面改動起來異常困難,這也就孵化了一批批模版工具,將公共的部分抽取出來變?yōu)楣步M件。再后來,隨著 JavaScript 的性能提升,JavaScript 的地位越來越高,不再只是配菜了,前端渲染的出現(xiàn)降低了服務(wù)端解析模版的壓力,服務(wù)端只要提供靜態(tài)文件和 API 接口就行了嘛。再然后,前端渲染工具又被搬回了服務(wù)端,后端渲染出現(xiàn)了(黑人問號???)
總之,組件化使得復雜的前端結(jié)構(gòu)變得清晰,各個部分獨立起來,高內(nèi)聚低耦合,使得維護成本大大降低。
那么,你有聽說過原生 HTML 組件嗎?
在說原生 HTML 組件之前,要先簡單介紹一下四大 Web 組件標準,四大 Web 組件標準分別為:HTML Template、Shadow DOM、Custom Elements 和 HTML Imports。實際上其中一個已經(jīng)被廢棄了,所以變成“三大”了。
HTML Template 相信很多人都有所耳聞,簡單的講也就是 HTML5 中的 標簽,正常情況下它無色無味,感知不到它的存在,甚至它下面的 img 都不會被下載,script 都不會被執(zhí)行。 就如它的名字一樣,它只是一個模版,只有到你用到它時,它才會變得有意義。
Shadow DOM 則是原生組件封裝的基本工具,它可以實現(xiàn)組件與組件之間的獨立性。
Custom Elements 是用來包裝原生組件的容器,通過它,你就只需要寫一個標簽,就能得到一個完整的組件。
HTML Imports 則是 HTML 中類似于 ES6 Module 的一個東西,你可以直接 import 另一個 html 文件,然后使用其中的 DOM 節(jié)點。但是,由于 HTML Imports 和 ES6 Module 實在是太像了,并且除了 Chrome 以外沒有瀏覽器愿意實現(xiàn)它,所以它已經(jīng)被廢棄并不推薦使用了。未來會使用 ES6 Module 來取代它,但是現(xiàn)在貌似還沒有取代的方案,在新版的 Chrome 中這個功能已經(jīng)被刪除了,并且在使用的時候會在 Console 中給出警告。警告中說使用 ES Modules 來取代,但是我測試在 Chrome 71 中 ES Module 會強制檢測文件的 MIME 類型必須為 JavaScript 類型,應該是暫時還沒有實現(xiàn)支持。
Shadow DOM要說原生 HTML 組件,就要先聊聊 Shadow DOM 到底是個什么東西。
大家對 DOM 都很熟悉了,在 HTML 中作為一個最基礎(chǔ)的骨架而存在,它是一個樹結(jié)構(gòu),樹上的每一個節(jié)點都是 HTML 中的一部分。DOM 作為一棵樹,它擁有著上下級的層級關(guān)系,我們通常使用“父節(jié)點”、“子節(jié)點”、“兄弟節(jié)點”等來進行描述(當然有人覺得這些稱謂強調(diào)性別,所以也創(chuàng)造了一些性別無關(guān)的稱謂)。子節(jié)點在一定程度上會繼承父節(jié)點的一些東西,也會因兄弟節(jié)點而產(chǎn)生一定的影響,比較明顯的是在應用 CSS Style 的時候,子節(jié)點會從父節(jié)點那里繼承一些樣式。
而 Shadow DOM,也是 DOM 的一種,所以它也是一顆樹,只不過它是長在 DOM 樹上的一棵特殊的紫薯
文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請注明本文地址:http://systransis.cn/yun/98462.html
閱讀 1777·2021-10-19 13:30
閱讀 1352·2021-10-14 09:48
閱讀 1544·2021-09-22 15:17
閱讀 2016·2019-08-30 15:52
閱讀 3283·2019-08-30 11:23
閱讀 1994·2019-08-29 15:27
閱讀 898·2019-08-29 13:55
閱讀 762·2019-08-26 14:05