摘要:如果你運(yùn)用好視圖的封裝模式,會(huì)幫你解決好很多的問(wèn)題。通過(guò)在組件的元數(shù)據(jù)上設(shè)置視圖封裝模式,你可以分別控制每個(gè)組件的封裝模式。
Angular2 控制視圖的封裝模式
為什么我想要分享控制視圖的封裝模式呢?主要是我們angular的項(xiàng)目大多數(shù)都會(huì)去引入一個(gè)UI組件,但往往因?yàn)樾枨蠛完P(guān)系我們會(huì)去修改UI組件的樣式。這時(shí),因?yàn)橛行┤瞬皇呛芰私釼iew encapsulation里面的屬性,往往會(huì)直接在全局的style.js里面添加全局樣式,等項(xiàng)目越來(lái)越大,就會(huì)出現(xiàn)一些不知名的bug和維護(hù)起來(lái)變得困難。如果你運(yùn)用好視圖的封裝模式,會(huì)幫你解決好很多的問(wèn)題。
一般來(lái)說(shuō)組件的 CSS 樣式被封裝進(jìn)了自己的視圖中,而不會(huì)影響到應(yīng)用程序的其它部分。通過(guò)在組件的元數(shù)據(jù)上設(shè)置視圖封裝模式,你可以分別控制每個(gè)組件的封裝模式。Angular2有三種樣式封裝模式:
ViewEncapsulation.Native - 使用原生的Shadow Dom。
ViewEncapsulation.Emulated - angular2的默認(rèn)值,通過(guò)預(yù)處理(并改名)CSS 代碼來(lái)模擬 Shadow DOM 的行為,在標(biāo)簽上增加標(biāo)識(shí),來(lái)固定樣式的作用域,以達(dá)到把 CSS 樣式局限在組件視圖中的目的。
ViewEncapsulation.None - 沒(méi)有Shadow Dom,樣式?jīng)]有封裝, Angular 會(huì)把 CSS 添加到全局樣式中。而不會(huì)應(yīng)用上前面討論過(guò)的那些作用域規(guī)則、隔離和保護(hù)等。 從本質(zhì)上來(lái)說(shuō),這跟把組件的樣式直接放進(jìn) HTML 是一樣的。
在 ViewEncapsulation.Emulated下 的 Angular 應(yīng)用的 DOM 樹(shù)中,每個(gè) DOM 元素都被加上了一些額外的屬性。Mister Fantastic
生成出的屬性分為兩種: 1、一個(gè)元素在原生封裝方式下可能是 Shadow DOM 的宿主,在這里被自動(dòng)添加上一個(gè) _nghost 屬性。 這是組件宿主元素的典型情況。 2、組件視圖中的每一個(gè)元素,都有一個(gè) _ngcontent 屬性,它會(huì)標(biāo)記出該元素是哪個(gè)宿主的模擬 Shadow DOM。 Team
用法如下:
import { Component, OnInit, ViewEncapsulation } from "@angular/core"; @Component({ selector: "app-factor_analysi", templateUrl: "./factor_analysis.component.html", styleUrls: ["./factor_analysis.component.scss"], providers: [factor_analysis_api], encapsulation: ViewEncapsulation.None })
文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請(qǐng)注明本文地址:http://specialneedsforspecialkids.com/yun/117145.html
摘要:的特性和性能是的超集,用于幫助的開(kāi)發(fā)。注解提供了連接元數(shù)據(jù)和功能的工具。通過(guò)在庫(kù)中提供基本信息可以調(diào)用函數(shù)或創(chuàng)建類(lèi)的實(shí)例來(lái)檢查相關(guān)元數(shù)據(jù),從而簡(jiǎn)化了對(duì)象實(shí)例的構(gòu)建。停用它會(huì)響應(yīng)跳出舊控制器的成功事件。 showImg(https://segmentfault.com/img/bVSqTU?w=850&h=460); 在Web應(yīng)用開(kāi)發(fā)領(lǐng)域,Angular被認(rèn)為是最好的開(kāi)源JavaScri...
摘要:為了簡(jiǎn)單起見(jiàn),在本文中將會(huì)使用。已經(jīng)實(shí)例化了并且將它的模板載入到了元素中。中的依賴注入發(fā)生在該類(lèi)的構(gòu)造函數(shù)中,因此我們將在構(gòu)造函數(shù)中注入。 國(guó)內(nèi) Angular2 資料比較少,這里看到一篇不錯(cuò)的入門(mén)文章就分享過(guò)來(lái)了 —— Angular 2 快速上手,這里面還有很多有關(guān)于 Angular2 的文章,感興趣的朋友可以去看一看 目前angular2已經(jīng)來(lái)到了beta版,這意味著它已經(jīng)做好了...
摘要:策略減少檢測(cè)次數(shù)當(dāng)輸入屬性不變時(shí),可以跳過(guò)整個(gè)變更檢測(cè)子樹(shù)。現(xiàn)在當(dāng)執(zhí)行更改檢測(cè)時(shí),它將從上到下進(jìn)行。并且一旦更改檢測(cè)運(yùn)行結(jié)束,它將恢復(fù)整個(gè)樹(shù)的狀態(tài)。 Angular 2.x+ 臟檢查機(jī)制理解 目前幾種主流的前端框架都已經(jīng)實(shí)現(xiàn)雙向綁定特性,但實(shí)現(xiàn)的方法各有不同: 發(fā)布者-訂閱者模式(backbone.js) 臟值檢查(angular.js) 數(shù)據(jù)劫持 + 發(fā)布者-訂閱者模式(vue.j...
流行框架 簡(jiǎn)介 angularjs是一款非常優(yōu)秀的前端高級(jí)JS框架,由谷歌團(tuán)隊(duì)開(kāi)發(fā)維護(hù),能夠快速構(gòu)建單頁(yè)web應(yīng)用,化繁為簡(jiǎn) 無(wú)論是angularjs還是jQuery都是用原生JS封裝的 庫(kù):對(duì)代碼進(jìn)行封裝,調(diào)用封裝的方法,簡(jiǎn)化操作 傳統(tǒng)方式是用get方式獲取元素,然后點(diǎn)方法 jQuery庫(kù)實(shí)現(xiàn)了對(duì)獲取方式的封裝,對(duì)方法的封裝 框架:提供代碼書(shū)寫(xiě)規(guī)則,按照規(guī)則去寫(xiě)代碼,框架會(huì)幫我們實(shí)現(xiàn)響應(yīng)的功能...
摘要:當(dāng)開(kāi)始使用來(lái)提供真正的跨平臺(tái)應(yīng)用時(shí),他發(fā)現(xiàn)對(duì)的緊耦合的依賴性在用開(kāi)發(fā)應(yīng)用創(chuàng)建映射時(shí)呈現(xiàn)的問(wèn)題。的重點(diǎn)放在高性能的渲染和執(zhí)行上,你可以很輕松的創(chuàng)建高性能的跨平臺(tái)應(yīng)用,這些應(yīng)用可以在相同的代碼庫(kù)上運(yùn)行并且隨意使用特點(diǎn)平臺(tái)的組件。 showImg(https://segmentfault.com/img/bVJi8d?w=980&h=400); 在開(kāi)發(fā)階段,跨平臺(tái)開(kāi)發(fā)App面臨一個(gè)很重要的決...
閱讀 3221·2021-11-11 16:55
閱讀 2456·2021-10-13 09:39
閱讀 2392·2021-09-13 10:27
閱讀 2155·2019-08-30 15:55
閱讀 3082·2019-08-30 15:54
閱讀 3126·2019-08-29 16:34
閱讀 1819·2019-08-29 12:41
閱讀 1064·2019-08-29 11:33