【Vite】2.0 Vite構(gòu)建Vue3項(xiàng)目闻书,CSS使用

vite創(chuàng)建項(xiàng)目名斟,Win+R,cmd:


image.png

輸入vite-vue3


image.png

這里我們選擇vue
image.png

教程建議選擇vue魄眉,后面會(huì)切換成vue-ts砰盐,這里我們偏不,就選vue-ts:


image.png

這樣坑律,我們項(xiàng)目創(chuàng)建完成岩梳。
通過(guò)vscode打開(kāi):
image.png

image.png

vite初始化運(yùn)行為按需加載。
在項(xiàng)目運(yùn)行時(shí)晃择,會(huì)檢測(cè)./index.html文件冀值,通過(guò)<script type="module" src="/src/main.ts"></script>加載ts、vue文件藕各。
vite.config.ts用于存放vite的配置的地方池摧。
目前只有vue3官方提供的plugin。

import { defineConfig } from 'vite'
import vue from '@vitejs/plugin-vue'

// https://vitejs.dev/config/
export default defineConfig({
    plugins: [vue()],
})

這里plugin-vue支持app.vue,但不支持app.jsx激况、app.tsx.如果需要,需要安裝vue3官方提供的一個(gè)插件plugin-vue-jsx

npm i安裝依賴庫(kù)膘魄。

image.png

image.png

運(yùn)行項(xiàng)目:
image.png

運(yùn)行項(xiàng)目地址:
image.png

安裝插件plugin-vue-jsx
npm install -d 就是 npm install --save-dev 安裝到開(kāi)發(fā)環(huán)境 例如 gulp 乌逐,babel,webpack 一般都是輔助工具

npm insatll -s 就是npm install --save 安裝到生產(chǎn)環(huán)境 如 vue ,react 等
這里我們用-D

npm install -D @vitejs/plugin-vue-jsx
image.png

修改vite.config.ts引入

import { defineConfig } from 'vite'
import vue from '@vitejs/plugin-vue'
import vueJsx from '@vitejs/plugin-vue-jsx'

// https://vitejs.dev/config/
export default defineConfig({
    plugins: [vue(), vueJsx()],
})

刪除src\App.vue创葡,新建src\App.tsx

import { defineComponent } from 'vue'

export default defineComponent({
  setup() {
    return () => {
      return <div>Hello Vue3 Tsx</div>
    }
  }
})

修改./main.ts

import { createApp } from 'vue'
import App from './App'

createApp(App).mount('#app')

這就改寫tsx文件模式了浙踢。

Vite中使用CSS

  • Vite支持原生最新的CSS——css variable
  • 集成了postcss。
  • @import alias
  • css-modules
  • css pre-processors
Vite支持原生最新的CSS——css variable

基本css使用:
新建`src\style\index.css

.root {
    color: red;
}

修改src\App.tsx

import { defineComponent } from 'vue'
import '@/style/index.css'
export default defineComponent({
    setup() {
        return () => {
            return <div class="root">Hello Vue3 Tsx</div>
        }
    },
})
image.png

css variables讓我們可以在CSS中使用變量灿渴。
在頂級(jí)自定義了變量嘀韧,變量名前一定要有兩個(gè)-悬钳,否則不生效播演;然后使用var()方式來(lái)獲取變量值。

:root {
  --my-color: red;
}

.container {
  /* --my-color: blue; */
  color: var(--my-color);
}

.child {
  color: var(--my-color);
}

變量可以被覆蓋缚窿,如果在低層級(jí)重新賦值則會(huì)覆蓋樣式。

還可以設(shè)置默認(rèn)值焰扳,比如var(--invalid-color, red)倦零,如果變量不存在,則會(huì)使用第二個(gè)參數(shù)

const child = document.querySelector('.child')

console.log(getComputedStyle(child).getPropertyValue('--my-color'))

child.style.setProperty('--my-color', 'purple')

還可以通過(guò)js獲取和設(shè)置css varible的值
瀏覽器支持方面:IE全不支持吨悍。

修改src\style\index.css

:root {
    --main-bg-color: brown;
}
.root {
    color: var(--main-bg-color);
}

:root是一個(gè)命名空間扫茅。

image.png
集成了postcss

Postcss 是一個(gè)使用js插件來(lái)轉(zhuǎn)換樣式的工具,Postcss 的插件會(huì)檢查你的css育瓜。
postcss 一種對(duì)css編譯的工具葫隙,類似babel對(duì)js的處理,

1 . 使用下一代css語(yǔ)法

2 . 自動(dòng)補(bǔ)全瀏覽器前綴

3 . 自動(dòng)把px代為轉(zhuǎn)換成rem

4 . css 代碼壓縮等等

postcss 只是一個(gè)工具躏仇,本身不會(huì)對(duì)css一頓操作停蕉,它通過(guò)插件實(shí)現(xiàn)功能,autoprefixer 就是其一钙态。

與 less sass 的區(qū)別

less sass 是預(yù)處理器慧起,用來(lái)支持?jǐn)U充css語(yǔ)法。

postcss 既不是 預(yù)處理器也不是 后處理器册倒,其功能比較廣泛蚓挤,而且重要的一點(diǎn)是,postcss可以和less/sass結(jié)合使用
使用:
新建./postcss.config.js

module.exports = {
    //讓編譯css時(shí)進(jìn)行輸出
    plugins: [require('@postcss-plugins/console')],
}

修改src\style\index.css

:root {
    --main-bg-color: blue;
}
/* 進(jìn)入root這個(gè)class時(shí)進(jìn)行輸出 */
.root {
    @console.error Here comes
    color: var(--main-bg-color);
}

未知原因?qū)е屡渲貌粓?bào)錯(cuò)驻子,但沒(méi)有生效灿意。

@import alias

為防止出現(xiàn)無(wú)數(shù)的路徑指引長(zhǎng)度〕绾牵可以配置修改vite.config.ts如下:

import { defineConfig, loadEnv } from 'vite'
import vue from '@vitejs/plugin-vue'
import vueJsx from '@vitejs/plugin-vue-jsx'

// import postcssImport from "postcss-import"
// import autoprefixer from 'autoprefixer'
// import tailwindcss from 'tailwindcss'
// https://vitejs.dev/config/
export default defineConfig({
    plugins: [vue(), vueJsx()],
    resolve: {
        alias: {
            '@': '/src',
            '@style': '/src/style',
        },
    },
    //樣式表插件
    css: {
        postcss: {
            plugins: [
                // postcssImport,
                // autoprefixer,
                // tailwindcss
            ],
        },
    },
})

這樣缤剧,在src\App.tsx中就可以修改如下:

import { defineComponent } from 'vue'
import '@style/index.css'
export default defineComponent({
    setup() {
        return () => {
            return <div class="root">Hello Vue3 Tsx</div>
        }
    },
})

此規(guī)則也可以使用到css文件中。
比如新建src\style\other.css

div {
    background-color: green;
}

可以在src\style\index.css引入:

@import url('@style/other.css');
:root {
    --main-bg-color: blue;
}
/* 進(jìn)入root這個(gè)class時(shí)進(jìn)行輸出 */
.root {
    color: var(--main-bg-color);
}
image.png
css-modules

所有的 class 的名稱和動(dòng)畫的名稱默認(rèn)屬于本地作用域的 CSS 文件域慷。所以 CSS Modules 不是一個(gè)官方的規(guī)范荒辕,也不是瀏覽器的一種機(jī)制,它是一種構(gòu)建步驟中的一個(gè)進(jìn)程犹褒。(構(gòu)建通常需要 webpack 或者 browserify 的幫助)抵窒。通過(guò)構(gòu)建工具的幫助,可以將 class 的名字或者選擇器的名字作用域化叠骑。(類似命名空間化)李皇。

css modules優(yōu)勢(shì)
  • 解決全局命名沖突問(wèn)題 css modules只關(guān)心組件本身 命名唯一
  • 模塊化 可以使用composes來(lái)引入自身模塊中的樣式以及另一個(gè)模塊的樣式
  • 解決嵌套層次過(guò)深的問(wèn)題 使用扁平化的類名

vite用法:只需要申明xxx.module.css即可識(shí)別為css-module。
src\style\test.module.css

.moduleClass {
    color: yellow;
}

修改src\App.tsx

import { defineComponent } from 'vue'
import '@style/index.css'
import classes from '@style/test.module.css'
export default defineComponent({
    setup() {
        return () => {
            return (
                <div class={`root  ${classes.moduleClass}`}>Hello Vue3 Tsx</div>
            )
        }
    },
})

image.png
css pre-processors

比方我們需要使用scss:

npm install -D sass
image.png

新增src\style\test.scss

$bgColor: red;
.root {
    background-color: $bgColor;
}

修改src\App.tsx

import { defineComponent } from 'vue'
import '@style/test.scss'
import classes from '@style/test.module.css'
export default defineComponent({
    setup() {
        return () => {
            return (
                <div class={`root  ${classes.moduleClass}`}>Hello Vue3 Tsx</div>
            )
        }
    },
})

image.png
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末宙枷,一起剝皮案震驚了整個(gè)濱河市掉房,隨后出現(xiàn)的幾起案子茧跋,更是在濱河造成了極大的恐慌,老刑警劉巖卓囚,帶你破解...
    沈念sama閱讀 218,755評(píng)論 6 507
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件瘾杭,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡捍岳,警方通過(guò)查閱死者的電腦和手機(jī)富寿,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,305評(píng)論 3 395
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)锣夹,“玉大人页徐,你說(shuō)我怎么就攤上這事∫迹” “怎么了变勇?”我有些...
    開(kāi)封第一講書人閱讀 165,138評(píng)論 0 355
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)贴唇。 經(jīng)常有香客問(wèn)我搀绣,道長(zhǎng),這世上最難降的妖魔是什么戳气? 我笑而不...
    開(kāi)封第一講書人閱讀 58,791評(píng)論 1 295
  • 正文 為了忘掉前任链患,我火速辦了婚禮,結(jié)果婚禮上瓶您,老公的妹妹穿的比我還像新娘麻捻。我一直安慰自己,他們只是感情好呀袱,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,794評(píng)論 6 392
  • 文/花漫 我一把揭開(kāi)白布贸毕。 她就那樣靜靜地躺著,像睡著了一般夜赵。 火紅的嫁衣襯著肌膚如雪明棍。 梳的紋絲不亂的頭發(fā)上,一...
    開(kāi)封第一講書人閱讀 51,631評(píng)論 1 305
  • 那天寇僧,我揣著相機(jī)與錄音摊腋,去河邊找鬼。 笑死婉宰,一個(gè)胖子當(dāng)著我的面吹牛歌豺,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播心包,決...
    沈念sama閱讀 40,362評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼馒铃!你這毒婦竟也來(lái)了蟹腾?” 一聲冷哼從身側(cè)響起痕惋,我...
    開(kāi)封第一講書人閱讀 39,264評(píng)論 0 276
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎娃殖,沒(méi)想到半個(gè)月后值戳,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,724評(píng)論 1 315
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡炉爆,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,900評(píng)論 3 336
  • 正文 我和宋清朗相戀三年堕虹,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片芬首。...
    茶點(diǎn)故事閱讀 40,040評(píng)論 1 350
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡赴捞,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出郁稍,到底是詐尸還是另有隱情赦政,我是刑警寧澤,帶...
    沈念sama閱讀 35,742評(píng)論 5 346
  • 正文 年R本政府宣布耀怜,位于F島的核電站恢着,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏财破。R本人自食惡果不足惜掰派,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,364評(píng)論 3 330
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望左痢。 院中可真熱鬧靡羡,春花似錦、人聲如沸抖锥。這莊子的主人今日做“春日...
    開(kāi)封第一講書人閱讀 31,944評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)磅废。三九已至纳像,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間拯勉,已是汗流浹背竟趾。 一陣腳步聲響...
    開(kāi)封第一講書人閱讀 33,060評(píng)論 1 270
  • 我被黑心中介騙來(lái)泰國(guó)打工, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留宫峦,地道東北人岔帽。 一個(gè)月前我還...
    沈念sama閱讀 48,247評(píng)論 3 371
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像导绷,于是被迫代替她去往敵國(guó)和親犀勒。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,979評(píng)論 2 355