在线观看www成人影院-在线观看www日本免费网站-在线观看www视频-在线观看操-欧美18在线-欧美1级

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

研發都應該了解的如何在vite中接入現代化css工程化方案

京東云 ? 來源:jf_75140285 ? 2024-10-25 17:25 ? 次閱讀

作者:京東物流 劉微微

背景

好的css工程化方案可以增強我們項目的可維護性、提高樣式的復用性、進行自動化處理等,在提高頁面加載速度和性能的同時,我們可以有更多的精力進行js邏輯的處理。

添加全局樣式文件

使用場景: 有一個scss/less文件,此文件中定義了一些全局變量,需要在其他的樣式文件中使用,此時需要將這些變量放在全局

// vite.config.ts
// 全局 scss 文件的路徑
const variablePath = path.resolve("./src/variable.scss");

export default defineConfig({
  // css 相關的配置
  css: {
    preprocessorOptions: {
      scss: {
        // additionalData 的內容會在每個 scss 文件的開頭自動注入
        additionalData: `@import "${variablePath}";`
      }
    }
  }
})

CSS Modules

CSS Modules 在 Vite 也是一個開箱即用的能力,Vite 會對后綴帶有.module的樣式文件自動應用 CSS Modules。接下來我們通過一個簡單的例子來使用這個功能。

首先,將 Header 組件中的index.scss更名為index.module.scss,然后稍微改動一下index.tsx的內容,如下:

// index.tsx
import styles './index.module.scss';
export function Header() {
  return This is Header
};

PostCSS自動添加css兼容前綴

一般你可以通過 postcss.config.js 來進行 postcss 的配置,不過在 Vite 配置文件中已經提供了 PostCSS 的配置入口,我們可以直接在 Vite 配置文件中進行操作。

首先,我們來安裝一個常用的 PostCSS 插件——autoprefixer:

pnpm i autoprefixer -D

這個插件主要用來自動為不同的目標瀏覽器添加樣式前綴,解決的是瀏覽器兼容性的問題。接下來讓我們在 Vite 中接入這個插件:

// vite.config.ts 增加如下的配置

export default {
  css: {
    // 進行 PostCSS 配置
    postcss: {
      plugins: [
        autoprefixer({
          // 指定目標瀏覽器
          overrideBrowserslist: ['Chrome > 40', 'ff > 31', 'ie 11']
        })
      ]
    }
  }
}

CSS 原子化框架

在目前的社區當中,CSS 原子化框架主要包括Tailwind CSS 和 Windi CSS。Windi CSS 作為前者的替換方案,實現了按需生成 CSS 類名的功能,開發環境下的 CSS 產物體積大大減少,速度上比Tailwind CSS v2快 20~100 倍!當然,Tailwind CSS 在 v3 版本也引入 JIT(即時編譯) 的功能,解決了開發環境下 CSS 產物體積龐大的問題,但這也是后來的事情了。接下來我們還是選擇 Windi CSS 作為 CSS 原子化框架來接入到 Vite 中。

首先安裝 windicss 及對應的 Vite 插件:

pnpm i windicss vite-plugin-windicss -D

隨后我們在配置文件中來使用它:

// vite.config.ts
import windi from "vite-plugin-windicss";

export default {
  plugins: [
    // 省略其它插件
    windi()
  ]
}

接著要注意在src/main.tsx中引入一個必需的 import 語句:

// main.tsx
// 用來注入 Windi CSS 所需的樣式,一定要加上!
import "virtual:windi.css";

這樣我們就完成了 Windi CSS 在 Vite 中的接入,接下來我們在 Header 組件中來測試,組件代碼修改如下:

// src/components/Header/index.tsx
import { devDependencies } from "../../../package.json";

export function Header() {
  return (
    
vite version: {devDependencies.vite}
); }

windicss的 attributify 和 shortcuts

除了本身的原子化 CSS 能力,Windi CSS 還有一些非常好用的高級功能,在此我給大家推薦自己常用的兩個能力: attributify 和 shortcuts。

要開啟這兩個功能,我們需要在項目根目錄新建windi.config.ts,配置如下:

import { defineConfig } from "vite-plugin-windicss";

export default defineConfig({
  // 開啟 attributify
  attributify: true,
});

首先我們來看看attributify,翻譯過來就是屬性化,也就是說我們可以用 props 的方式去定義樣式屬性,如下所示:


  Button

這樣的開發方式不僅可以省去了繁瑣的 className 內容,而且還加強了語義化,代碼更容易維護,可以說大大提升了開發體驗。

shortcuts 用來封裝一系列的原子化能力,尤其是一些常見的類名集合,我們在 windi.config.ts來配置它:

//windi.config.ts
import { defineConfig } from "vite-plugin-windicss";

export default defineConfig({
  attributify: true,
  shortcuts: {
    "flex-c": "flex justify-center items-center",
  }
});

比如這里封裝了flex-c的類名,接下來我們可以在業務代碼直接使用這個類名:


聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • 文件
    +關注

    關注

    1

    文章

    566

    瀏覽量

    24744
  • CSS
    CSS
    +關注

    關注

    0

    文章

    109

    瀏覽量

    14374
  • 全局變量
    +關注

    關注

    1

    文章

    28

    瀏覽量

    8969
收藏 人收藏

    評論

    相關推薦

    形式方法的工程化

    形式化工程方法,是以軟件形式方法理論為基礎,以系統工程方法引導工業界工程人員構建高質量的軟件模型,用以引導后續的代碼編寫和相關測試分析
    的頭像 發表于 03-24 11:01 ?1484次閱讀
    形式<b class='flag-5'>化</b>方法的<b class='flag-5'>工程化</b>

    [原創]逐漸智能現代化公安裝備

    各個不同開展實際需要,提出了很多加強公安裝備的方案,通過科學的概念,科技的手段來提高公安的辦案能力。也使公安的裝備逐漸智能現代化。   堅持公安裝備現代化建設不動搖  早在上世紀80年代
    發表于 12-26 12:21

    基于RFID的現代化奶牛場管理應用

    0 引言 信息與自動現代管理技術在畜牧業發展的地位越來越重要,基于無線射頻原理的奶牛自動識別系統,是現代化奶牛場管理 不可或缺的一部
    發表于 07-17 08:31

    怎么強化現代化IC的設計環境?

    數字設計及驗證技術演進的概觀現代化IC設計環境必須強化的方法
    發表于 04-09 06:17

    在醫院現代化建設中部署無線局域網是否安全?

    無線局域網技術在醫院現代化建設中有哪些作用?國內外無線局域網在醫院應用的安全性研究是什么?
    發表于 05-17 06:56

    嵌入式系統工程化設計的相關資料分享

    了行業的飛速發展,可以說這個行業在風口上。但是,也發現我們的行業的不足,基礎嚴重依賴國外,企業設計能力參差不齊,從業人員培訓費時費力,導致產品可靠性低下,項目遭受重大損失。解決這一問題,需要提升我國嵌入式計算機工程化設計能力。什么是工程化首先什么是
    發表于 11-09 06:37

    求一種現代化網絡的完全響應式設計方案

    現代化的網絡可以完全響應,并且每天都有更多的設計師意識到這一點。 但是,在響應式設計方面存在一個艱巨的挑戰: 嵌入式內容 。從YouTube到Vimeo的每個視頻網站都具有固定為特定大小的默認嵌入
    發表于 12-23 08:04

    監控系統控制軟件的工程化設計與實現

    主要探討微機監控系統控制軟件的工程化設計方法,介紹了模塊程序設計和結構程序設計的基本原理,具體分析了在電鍋爐微機控制系統,采用模塊
    發表于 03-18 10:33 ?21次下載

    CSS工程化實踐成果分析

    CSS技術的演進 CSS是Web開發不可或缺的一部分,在前端工程化不斷進步的今天,一方面CSS特性隨著規范的升級越來越豐富,另一方面,
    發表于 09-27 15:10 ?0次下載

    硬件工程都應該掌握防反接電路,你都Get到了嗎?

    硬件工程都應該掌握的防反接電路,你都Get到了嗎?
    的頭像 發表于 02-03 15:05 ?4564次閱讀

    專業的人士都應該且能夠記住這二十個基本模擬電路

    初級層次是熟練記住這二十個電路,清楚這二十個電路的作用。只要是電子愛好者,只要是學習自動、電子等電控類專業的人士都應該且能夠記住這二十個基本模擬電路。
    的頭像 發表于 11-30 10:09 ?6315次閱讀

    基于工程化參數優化的遙測伺服系統

    基于工程化參數優化的遙測伺服系統
    發表于 06-30 15:57 ?6次下載

    存儲體系結構的現代化

    電子發燒友網站提供《存儲體系結構的現代化.pdf》資料免費下載
    發表于 08-30 16:58 ?0次下載
    存儲體系結構的<b class='flag-5'>現代化</b>

    喜報丨軟通動力應用現代化平臺工程產品及服務解決方案榮獲“2023年應用現代化典型案例”稱號

    在數字經濟時代,應用現代化正在成為一個共識。 近日,中國軟件行業協會首屆“應用現代化產業實踐優秀案例”評選結果揭曉, 軟通動力應用現代化研究中心打造的應用現代化平臺
    的頭像 發表于 11-13 19:30 ?736次閱讀
    喜報丨軟通動力應用<b class='flag-5'>現代化</b>平臺<b class='flag-5'>工程</b>產品及服務解決<b class='flag-5'>方案</b>榮獲“2023年應用<b class='flag-5'>現代化</b>典型案例”稱號

    軟通動力應用現代化平臺工程產品及服務解決方案榮獲“2023年應用現代化典型案例”稱號

    的應用現代化平臺工程產品及服務解決方案榮獲“2023年應用現代化典型案例”稱號。該評選旨在加快推動應用現代化發展與推廣應用,形成行業應用帶動
    的頭像 發表于 11-14 16:50 ?640次閱讀
    軟通動力應用<b class='flag-5'>現代化</b>平臺<b class='flag-5'>工程</b>產品及服務解決<b class='flag-5'>方案</b>榮獲“2023年應用<b class='flag-5'>現代化</b>典型案例”稱號
    主站蜘蛛池模板: 精品乱码一区二区三区四区| 国产午夜精品久久久久免费视小说 | 在线观看国产一级强片| 天天操天天干天搞天天射| 奇米影视四色7777久久精品| 国产天天操| 久久精品在| 美女张开大腿让男人桶| 天天噜天天干| 欧美一区二区三区视频在线观看| 日本黄色高清视频| 偷偷鲁影院手机在线观看| jizz 大全欧美| 日韩欧美成人乱码一在线| 18女毛片| 一本到卡二卡三卡四卡| 奇米色影院| 天堂在线最新版资源www| 视频在线高清完整免费观看| 日本不卡视频在线观看| 午夜看大片| 成色视频| 久久国产免费| 亚洲欧美国产高清va在线播放| 国产一级做a爱免费视频| 国产精品福利久久2020| 免费看黄视频网站| 三级网站免费| 天天看天天碰| 超刺激gay腐文h文| 欧美一区二区三区黄色| 奇米4色| 亚洲无线视频| a天堂资源在线观看| 国产精品久久久久久久久免费| 亚洲国产精品乱码在线观看97| www.操你啦| 日韩欧美亚洲一区| 黄色视屏免费看| 美女被曹| 四级毛片在线播放|