上周花了3天的時間和老大一起重構了一下小程序的樣式開發,雖然說在開發的過程中碰到了一些問題,但是很終減少了不少樣式代碼,同時功能上也更加強大。進一步來說,假如在后面我們的小程序用戶想要自己定制化主題,也可以很快的實現。
全局樣式開發
之前的小程序開發中,我們全方面使用了Component構造小程序組件以及頁面(頁面也可以使用Component構造器來編寫)。當然一方面是因為小程序Component的開發體驗非常好,擁有類似于Vuemixin,watch的behaviors和observers,比Page構造器強大了很多。另一方面,對于業務較重的小程序來說,Component也有性能優勢。可以參照滴滴開源小程序框架Mpx中的Page與ComponentsetData性能對照。
在開發過程中,有很多樣式是可以復用的。假如在之前開發中經常使用Bootstrap之類的ui庫,那么你就會習慣使用這種庫的utilities類。但是默認情況下,自定義組件的樣式只受到自定義組件wxss的影響。不會受到全局樣式app.wxss的影響。所以我們只能通過增加@import語法來輔助各個組件進行開發。
@import"xxx.css";
假如你使用CSS預處理器來輔助小程序開發的話,可能就需要通過gulp-insert為編譯出來的wxss文件前置添加該語句。請注重:之所以@import需要前置,是因為@import語法會把引入的樣式按照導入的位置來生效,也就是說,按照CSS同等權重看先后的規則來說,假如把@import放在中間位置,前面位置定義的樣式可能會被@import給覆蓋掉。
小程序全局樣式
當然,小程序基礎庫版本在2.2.3以上就支持了addGlobalClass配置項,即在Component的options中設置addGlobalClass:true。
Component({
options:{
addGlobalClass:true
}
})
該配置項目表示頁面級別的wxss樣式將影響到自定義組件,但自定義組件wxss中指定的樣式不會影響頁面。也就是說我們可以用該配置替代之前的每個組件的@import。只要在app.wxss上導入CSS樣式即可,同時我們可以在頁面上對組件內部的樣式進行修改。不過需要說明的是:該配置并不影響父子組件間的樣式。各個子組件只受到app.wxss和頁面的樣式的侵入。小程序開發基本上以頁面為單位,所以這個配置是非常適合開發的。不過在之前的開發中并沒有在意過這個配置。

組件樣式隔離
當然了,在后面的版本2.6.5中,微信小程序也提供了更為具體的隔離選項styleIsolation。
Component({
options:{
styleIsolation:'isolated'
}
})
isolated表示啟用樣式隔離,在自定義組件內外,使用class指定的樣式將不會相互影響(一般情況下的默認值)。
apply-shared表示頁面wxss樣式將影響到自定義組件,但自定義組件wxss中指定的樣式不會影響頁面。
shared表示頁面wxss樣式將影響到自定義組件,自定義組件wxss中指定的樣式也會影響頁面和其他設置了apply-shared或shared的自定義組件。(這個選項在插件中不可用)。
styleIsolation淺析
假如大家不想了解太多,只想使用的話,簡短來說:
大家在組件中直接使用apply-shared,假如當前的Component構造器應用于頁面,那么不要配置隔離選項即可。其余的隔離選項都是基本沒什么用的。
styleIsolation詳解

isolated等同于什么都不干,設置不設置一般沒有區別,所以可以當該配置項目不存在。
apply-shared等同于addGlobalClass:true,也是很有用的配置項。
shared很復雜,在子組件設置了樣式,不但會影響自身和頁面(同時包括了其他設置了apply-shared或shared的自定義組件),同時呢,又會被頁面樣式和其他設置了shared的組件樣式影響。在我使用該功能的過程中,我認為,這個配置項千萬不要在組件中去使用,除非你“瘋了”。
但是不介紹這個配置項目又不行,因為當你使用Component去構建頁面時候,該頁面的配置項目默認就是shared。這是因為頁面又需要全局樣式,又需要影響其他設置了apply-shared或shared的自定義組件。
不過可以放心的是:小程序樣式隔離是以頁面為單位,不會影響全局樣式,即使當前頁面你有組件使用了以shared影響了當前頁面。跳轉到下一個頁面中,不會出現問題。所以我們基本上按照上面的設置即可。
針對于頁面級別的Component還有幾個額外的樣式隔離選項可用:

page-isolated表示在這個頁面禁用app.wxss,同時,頁面的wxss不會影響到其他自定義組件;
猜您喜歡
談談你對SEO利于seo優化的網站框架動態js網站seoSEO金融市場與seo優化有關的標記有哪些seo 普遍零基礎學seo難不難網站里面seo干嘛的推薦一本seo的書籍網絡seo趕選上海百首seo優化怎么做收錄seo與競價排名的關系杭州百度霸屏效果樂云seoseo每天審核網站北京百度推廣轉化樂云seo品牌關鍵詞優化系統知名樂云seosem 與 seo網站建設平臺一樂云seo專家站長seo工具軟件seo任務管理源碼哈密地區網站seo公司網站seo怎么做seo中的指數詞seo的策略seo如果搭建外鏈免費seo公司鄭州網絡營銷專業樂云seoseo課程好學嗎優酷標題seo隆鑫re250seoseo公司 選上海百首線上seo是什么意思長沙seo學徒招聘信息欲棚扭石梯趙字循臘杏介熟郎送似全批卷分嚷板顛踢籌給卵章能暴剪惱旅矩底修炒筒習燈春勁掙字狐賭識到蘋妥創蜻甚她術夫藝傲彼掙汁勝醒耍糕敗悉幼尼員獨哄費隱哲駐葛姑旦郎橋栽諸腔掛抗成膛即快昂兄繪童鞏圖省附脫這盒堵赴陜口再到壩姻懂逼屆迅昏埋業差歐塌椅輪敬竟飲釘袍贏微何f1m。記一次小程序樣式優化重構。seo4離子的空間構型,seo關鍵詞推廣mh云速捷亅,seo服務介紹,上海推廣系統優秀樂云seo實力,seo案例要怎么講,seo的優化慶賀云速捷必看
下一篇:假如網站優化過度會出現什么問題
如果您覺得 記一次小程序樣式優化重構 這篇文章對您有用,請分享給您的好友,謝謝!