1.
<style scoped>
@import '../../assets/css/home.css';
</style>
/*這樣寫的話import的css文件會被編譯為全局樣式,最后直接通過style標(biāo)簽加在頁面中*/
2.
<style src="../../assets/css/home.css" scoped>
</style>
/*這樣寫的css文件中的樣式只能在本組件中使用,而不會影響其他組件*/
后來,我找了一下關(guān)于css-loader和style-loader的資料,粗略了解它們的工作原理,有一種說法是css-loader對import的文件會當(dāng)做外部資源,那么我能理解為它是把import的css文件單獨(dú)提取出來,并沒有把其中的樣式放在<style scoped>中解析,而是最后把<style>中計算結(jié)果和import的css文件混合后,交由style-loader最后解析為style標(biāo)簽加載在頁面里嗎?
在<style>中import的css文件是怎么處理的,和<style>其他裸樣式的加載順序有什么不一樣嗎?(我在一個地方看到有一個說法是import的css文件會等到dom樹下載完才會被加載?)import的原理是什么?
嘗試了一下,你所說的第一種方式
<style scoped>
@import 'xxx';
</style>
所編譯的出來的CSS還是局部的樣式,以下例子
test.vue
<template>
<div id="test">
<h1>this is a test</h1>
</div>
</template>
<style scoped>
@import '../assets/test.css';
</style>
test.css
h1 {
color: #39baa7;
font: bold 24px/150% Microsoft Yahei;
}
編譯結(jié)果
下面驗(yàn)證他到底是不是局部,給test.vue
添加一個子路由testchild
,如下
test.vue
<template>
<div id="test">
<h1>this is a test</h1>
<router-link to="/test/child">
<span>vuejs</span>
</router-link>
<router-view></router-view>
</div>
</template>
<style scoped>
@import '../assets/test.css';
</style>
testchild.vue
<template>
<div id="testchild">
<h1>this is a test child</h1>
</div>
</template>
<style>
</style>
結(jié)果
可見,父路由的style并不會影響子路由的style。
綜上,在style scoped所@import的css文件編譯出來的還是擁有自己的作用域的,不會污染其他vue組件的樣式。
相關(guān)資料:
less @import can't work fine with scoped #235
北大青鳥APTECH成立于1999年。依托北京大學(xué)優(yōu)質(zhì)雄厚的教育資源和背景,秉承“教育改變生活”的發(fā)展理念,致力于培養(yǎng)中國IT技能型緊缺人才,是大數(shù)據(jù)專業(yè)的國家
北大青鳥中博軟件學(xué)院創(chuàng)立于2003年,作為華東區(qū)著名互聯(lián)網(wǎng)學(xué)院和江蘇省首批服務(wù)外包人才培訓(xùn)基地,中博成功培育了近30000名軟件工程師走向高薪崗位,合作企業(yè)超4
中公教育集團(tuán)創(chuàng)建于1999年,經(jīng)過二十年潛心發(fā)展,已由一家北大畢業(yè)生自主創(chuàng)業(yè)的信息技術(shù)與教育服務(wù)機(jī)構(gòu),發(fā)展為教育服務(wù)業(yè)的綜合性企業(yè)集團(tuán),成為集合面授教學(xué)培訓(xùn)、網(wǎng)
達(dá)內(nèi)教育集團(tuán)成立于2002年,是一家由留學(xué)海歸創(chuàng)辦的高端職業(yè)教育培訓(xùn)機(jī)構(gòu),是中國一站式人才培養(yǎng)平臺、一站式人才輸送平臺。2014年4月3日在美國成功上市,融資1
曾工作于聯(lián)想擔(dān)任系統(tǒng)開發(fā)工程師,曾在博彥科技股份有限公司擔(dān)任項(xiàng)目經(jīng)理從事移動互聯(lián)網(wǎng)管理及研發(fā)工作,曾創(chuàng)辦藍(lán)懿科技有限責(zé)任公司從事總經(jīng)理職務(wù)負(fù)責(zé)iOS教學(xué)及管理工作。
浪潮集團(tuán)項(xiàng)目經(jīng)理。精通Java與.NET 技術(shù), 熟練的跨平臺面向?qū)ο箝_發(fā)經(jīng)驗(yàn),技術(shù)功底深厚。 授課風(fēng)格 授課風(fēng)格清新自然、條理清晰、主次分明、重點(diǎn)難點(diǎn)突出、引人入勝。
精通HTML5和CSS3;Javascript及主流js庫,具有快速界面開發(fā)的能力,對瀏覽器兼容性、前端性能優(yōu)化等有深入理解。精通網(wǎng)頁制作和網(wǎng)頁游戲開發(fā)。
具有10 年的Java 企業(yè)應(yīng)用開發(fā)經(jīng)驗(yàn)。曾經(jīng)歷任德國Software AG 技術(shù)顧問,美國Dachieve 系統(tǒng)架構(gòu)師,美國AngelEngineers Inc. 系統(tǒng)架構(gòu)師。