久久精品五月,日韩不卡视频在线观看,国产精品videossex久久发布 ,久久av综合

站長(zhǎng)資訊網(wǎng)
最全最豐富的資訊網(wǎng)站

深入解析一下CSS架構(gòu)之ACSS

本篇文章給大家?guī)?lái)了關(guān)于css架構(gòu)ACSS的相關(guān)知識(shí),其中詳細(xì)介紹了ACSS的概念、優(yōu)勢(shì)以及怎樣選擇ACSS庫(kù),希望對(duì)大家有幫助。

深入解析一下CSS架構(gòu)之ACSS

前言

我們知道現(xiàn)在前端開(kāi)發(fā)模式,組件化是比較火的,那么 CSS 開(kāi)發(fā)模式比較火的是什么呢,沒(méi)錯(cuò)就是我們今天的主角 ACSS,我們先觀察下各大型網(wǎng)站的應(yīng)用:

Twitter 上的 HTML 是這樣的:

深入解析一下CSS架構(gòu)之ACSS

Facebook HTML 是這樣的::

深入解析一下CSS架構(gòu)之ACSS

最后看看 GitHub 的首頁(yè):

深入解析一下CSS架構(gòu)之ACSS

等等……

看到 Twitter、Facebook 的類名你可能會(huì)嚇一跳,但是那也是 ACSS 的一種,相對(duì)來(lái)講 GitHub ACSS 更加符合你的直觀,無(wú)論如何,這么多大公司都用到了 ACSS,說(shuō)明它確實(shí)有效,你應(yīng)該也要在項(xiàng)目多多嘗試嘗試。

接下來(lái)我們進(jìn)入 ACSS 的學(xué)習(xí)。

ACSS 的概念

ACSS 是 Atomic CSS 的簡(jiǎn)寫(xiě),它是 Thierry Koblenz 在 2013 年 10 月的文章 Challenging CSS Best Practices 中創(chuàng)造的。

首先,讓我們?yōu)?原子化 CSS (Atomic CSS) 給出適當(dāng)?shù)亩x:

John Polacek 在文章 Let’s Define Exactly What Atomic CSS is 中寫(xiě)道:

Atomic CSS is the approach to CSS architecture that favors small, single-purpose classes with names based on visual function.

譯文:原子化 CSS 是一種 CSS 的架構(gòu)方式,它傾向于小巧且用途單一的 class,并且會(huì)以視覺(jué)效果進(jìn)行命名。

除了叫 ACSS,你還可以稱它為函數(shù)式 CSS,或者 CSS 實(shí)用工具。

CSS 是一個(gè)不強(qiáng)調(diào)邏輯,而更側(cè)重表現(xiàn)的一門(mén)所見(jiàn)即所得的語(yǔ)言,當(dāng)樣式寫(xiě)多了,你就會(huì)發(fā)現(xiàn)常用樣式的來(lái)來(lái)去去也就那幾個(gè),無(wú)非就是調(diào)整一下他們的排列組合。每次寫(xiě)這些重復(fù)的樣式代碼我就感覺(jué)自己是在重復(fù)造輪子,自然而然就產(chǎn)生了想要縮寫(xiě)的需求,而 ACSS 做的一些事情很平常,無(wú)非就是把 CSS 屬性寫(xiě)成一個(gè)獨(dú)立的類名。

.m-0 {   margin: 0; } .text-red {   color: red; } /* ... */

ACSS 和 CSS-in-JS 為什么會(huì)火

前面我們明白了 ACSS 的概念,所以接下來(lái)我要講下 CSS-in-JS 的概念,然后才好解釋為什么它們會(huì)火。

CSS-in-JS 是很重要的概念,本來(lái)打算寫(xiě)篇文章介紹的,題目都取好了 「CSS 架構(gòu)之 CSS-in-JS」,整理資料發(fā)現(xiàn)阮一峰老師寫(xiě)過(guò)了,那我就直接拿過(guò)來(lái)吧 阮一峰——CSS in JS 簡(jiǎn)介,但是阮老師并沒(méi)有給出流行 CSS 的解決方案,現(xiàn)在都 21 年了,我們知道目前流行著好幾種解決方案,方案各有利弊,我們需要一篇文章來(lái)通透的理解它們,于是 @FateRiddle 同學(xué)的 React拾遺:從10種現(xiàn)在流行的 CSS 解決方案談?wù)勎业淖類?ài) (上) 這篇文章出現(xiàn)了。

你可以先不看上面的文章鏈接,我來(lái)給你梳理下:

很久以前,前端項(xiàng)目比較小,HTML、CSS、JS 都耦合在一起,后來(lái)隨著項(xiàng)目越來(lái)越大,為了便于維護(hù),代碼不允許在耦合,要求各個(gè)技術(shù)只負(fù)責(zé)自己的領(lǐng)域。

在后來(lái),伴隨著 React 出現(xiàn),前端組織代碼的方式變了,組件成為組織代碼主流方法,而組件的核心原則就是代碼完全不依賴外部,表現(xiàn)在 React 中就是 HTML、CSS、JS 強(qiáng)強(qiáng)耦合,這樣就避免了影響其他組件,對(duì)于 CSS 我們也寫(xiě)在了 JS 中,這就要 CSS in JS,其實(shí)就是寫(xiě)行內(nèi)樣式。

但行內(nèi)樣式不支持偽類、媒體查詢,于是出現(xiàn)了 React-JSS 這種庫(kù),對(duì)行內(nèi)樣式進(jìn)行擴(kuò)展;有人又不能忍受 React-JSS 這種樣式駝峰的寫(xiě)法;出現(xiàn)了 styled-components,遵循 CSS 寫(xiě)法規(guī)范的庫(kù);有人比較喜歡不耦合的寫(xiě)法,于是 Css Module 出現(xiàn)了;還有人覺(jué)得 Vue 的解決辦法比較優(yōu)雅,然后就出現(xiàn)了 styled-jsx。

我來(lái)總結(jié)下:

CSS-in-JS 本質(zhì)就是行內(nèi)樣式,之所以會(huì)火就是因?yàn)榻M件化時(shí)代的到來(lái)。

看明白 CSS in JS 火的原理,你肯定猜到 ACSS 會(huì)火的原因——那就是組件化時(shí)代的到來(lái),你甚至可以理解為 ACSS 就是 CSS 架構(gòu)下得 CSS 組件化。

在沒(méi)有組件化的傳統(tǒng)網(wǎng)頁(yè)開(kāi)發(fā)時(shí)代,如果你通過(guò) ACSS 來(lái)確定樣式,例如下面代碼的形式,合作的小伙伴肯定以為你瘋了:

<button class="bg-blue-500 hover:bg-blue-700 text-white font-bold py-2 px-4 rounded">按鈕</button>

因?yàn)?button 的復(fù)用率很高,你項(xiàng)目到處充斥著這種 button,一旦 button 要修改某些樣式,你可去哭娘去吧,這哪有直接給個(gè) .btn 類名方便,要修改直接改類名就行了,例如下面:

<button class="btn">按鈕</button>

但是在組件化時(shí)代就不一樣了,例如使用 React 封裝一個(gè) Button:

const Button = ({ children, color }) => (     <button class=`bg-blue-500 hover:bg-blue-700 text-white font-bold py-2 px-4 rounded ${color}`>{children}</button> )

使用如下:

<Button color="pink"> 注冊(cè) </Button>

如果樣式有修改,我只要插拔 ACSS 就行了,而且對(duì)比使用 .btn 實(shí)現(xiàn),樣式的重用性會(huì)極大提高,理解也很容易。

ACSS 優(yōu)劣

使用 ACSS 的好處:

  • 你的 CSS 停止增長(zhǎng)。使用傳統(tǒng)方法,每次添加新功能時(shí),您的 CSS 文件都會(huì)變大。使用實(shí)用程序,一切都是可重用的,因此您很少需要編寫(xiě)新的 CSS,一套樣式全局通用。

  • 你不是在浪費(fèi)精力發(fā)明類名。不再添加愚蠢的類名,例如 sidebar-inner-wrapper 只是為了能夠設(shè)置樣式,也不再為真正只是一個(gè) flex 容器的東西的完美抽象名稱而苦惱。

  • 靈活,易讀。CSS 是全球性的,當(dāng)你做出改變時(shí),你永遠(yuǎn)不知道你破壞了什么。HTML 中的類是本地的,因此您可以 插拔式改變樣式 而不必?fù)?dān)心其他問(wèn)題,CSS 樣式很多縮寫(xiě)更加符合大腦的記憶。

  • 永遠(yuǎn)不用擔(dān)心命名沖突,永遠(yuǎn)不用擔(dān)心樣式覆蓋。

使用 ACSS 劣處:

  • 毫無(wú)疑問(wèn),ACSS 會(huì)增加HTML 的體積,但是借助 Gzip 這個(gè)就不是大問(wèn)題。

  • 熟悉命名 ACSS 命名會(huì)有一定成本。

ACSS 劣處是非常小的,而好處有非常大,沒(méi)有理由在項(xiàng)目中不適用,強(qiáng)烈建議你每個(gè)前端項(xiàng)目都是用 ACSS。

如何選擇 ACSS 庫(kù)

市面上有不少成熟的 CSS 框架,如 Tailwind CSS,Windi CSS 以及 Tachyons 等。

同時(shí)有些 UI 庫(kù)也會(huì)附帶一些 CSS 工具類作為框架的補(bǔ)充,如 Bootstrap 和 Chakra UI。

甚至還有一些人根據(jù)項(xiàng)目總結(jié)出來(lái)自己的 ACSS,例如 atom.css、SACSS: Static Atomic CSS 等。

ACSS 庫(kù)大致就分為這三類了。

把它們整合到我們的項(xiàng)目,那我們選擇的標(biāo)準(zhǔn)是什么呢?

按需生成,比如我們使用 class="m-1" 來(lái)設(shè)置 margin,那么 m-x,x 到底是多大呢,x 但不管 x 是多大,當(dāng)增加 x 的時(shí)候,margin 不同方向,比如 mt 代表 margin-top,mb 代表 margin-bottom 等,也得增加,如果加上 :hover 和 :focus 這樣的偽類時(shí),體積還會(huì)得更變大,原子類太多了,應(yīng)該提供按需生成只加載我們用過(guò)的。

動(dòng)態(tài)化,原子類不應(yīng)該是完全靜態(tài)化的,比如我要使用 class="m-100" ,我應(yīng)該可以是直接使用,而不是設(shè)置完之后,發(fā)現(xiàn)樣式?jīng)]生效,然后通過(guò)框架的配置文件,去增加對(duì) m-100 的支持,原子類要把可插拔做到極致。

除了上面兩個(gè)是非常重要的標(biāo)準(zhǔn),我認(rèn)為 自動(dòng)值推導(dǎo) 和 屬性化模式 也是提升了開(kāi)發(fā)體驗(yàn)要考慮的部分。

我們來(lái)看看我們最終會(huì)選擇哪個(gè) ACSS 庫(kù),首先原子 CSS 一定要純凈,所以 UI 框架附帶的 ACSS 就不能采用了,根據(jù)項(xiàng)目總結(jié)的 ACSS,它的原子 CSS 太過(guò)靜態(tài),不能隨想隨用,不符合原子類不應(yīng)該是完全靜態(tài)化的標(biāo)準(zhǔn),Tailwind CSS 本來(lái)是沒(méi)有按需生成的,后來(lái)增加了,但是 Windi CSS 速度更快還兼容 Tailwind CSS,所以我們很自然就必須必的選擇了 Windi CSS 。

總結(jié)

我們先通過(guò)舉例子,了解了 ACSS 的使用,然后介紹了 ACSS 的概念,通過(guò)對(duì)比 CSS-in-JS 來(lái)剖析 ACSS 借助前端組件化浪潮開(kāi)始起飛的過(guò)程,最后如何在項(xiàng)目中選擇自己的 ACSS 庫(kù),我們通過(guò)一些硬性標(biāo)準(zhǔn),分析了三類 ACSS 庫(kù),幫你選擇了 Windi CSS

(學(xué)習(xí)視頻分享:css視頻教程)

贊(0)
分享到: 更多 (0)
?
網(wǎng)站地圖   滬ICP備18035694號(hào)-2    滬公網(wǎng)安備31011702889846號(hào)
久久精品五月,日韩不卡视频在线观看,国产精品videossex久久发布 ,久久av综合
每日更新成人在线视频| 久久黄色影院| 日韩精品欧美| 中文一区一区三区高中清不卡免费| 日韩精品a在线观看91| 日韩一区二区三区高清在线观看| 久久亚洲影院| 日韩中文欧美在线| 亚洲欧美日本视频在线观看| 国产模特精品视频久久久久| 亚洲开心激情| 国产探花在线精品一区二区| 国产情侣一区| 日韩综合精品| 羞羞答答国产精品www一本| 亚洲精品在线二区| 麻豆精品少妇| 午夜精品成人av| 国产免费播放一区二区| 国产成人精品福利| 午夜影院欧美| 日韩三级视频| 免费视频一区二区三区在线观看| 精品美女视频| 久久一区二区三区喷水| 免费日韩av| 国产精品久久乐| 久久国产电影| 国产精品一区高清| 日韩激情一区| 亚洲精品影视| 久久久久久美女精品| 日韩av三区| 色婷婷狠狠五月综合天色拍| 午夜在线视频观看日韩17c| 欧美91在线| 久久一二三区| 欧美综合另类| 免费在线观看视频一区| 日韩精品欧美激情一区二区| 在线视频观看日韩| 精品国产中文字幕第一页| 日韩免费福利视频| 日本视频一区二区| 日韩精品一级中文字幕精品视频免费观看| 国产欧美亚洲一区| 人人精品人人爱| 亚洲韩日在线| 久久毛片亚洲| 成人台湾亚洲精品一区二区 | 国产精品白丝久久av网站| 美女毛片一区二区三区四区| 久久久久九九精品影院| 欧美一区在线观看视频| 亚洲精品动态| 日韩精品视频网站| 日韩专区视频网站| 日韩一区二区三区在线看| 日韩影院免费视频| 好看的av在线不卡观看| 日韩精品首页| 蜜桃tv一区二区三区| 激情综合自拍| 免费国产自久久久久三四区久久| 99视频精品全部免费在线视频| 另类欧美日韩国产在线| 国产精品久久久亚洲一区| 国产亚洲高清一区| 老司机精品视频网| 国产一区三区在线播放| 国产日韩电影| 不卡一区综合视频| 蜜桃久久av| 国产精品最新| 日韩av免费大片| 亚州av乱码久久精品蜜桃| 蜜桃视频在线观看一区二区| 婷婷亚洲精品| 精品国产欧美日韩| 欧美日韩激情| 天堂va欧美ⅴa亚洲va一国产| 国产精品一区二区精品视频观看 | 日韩亚洲一区在线| 欧美a级片一区| 日韩成人一级| 日韩国产激情| 蜜臀a∨国产成人精品| 国产精品男女| 日韩免费看片| 亚洲精品在线a| 美女福利一区二区三区| 亚洲va久久| 日韩一区电影| 国产午夜一区| 日韩精品一二三| 国内精品麻豆美女在线播放视频| 日韩午夜一区| 久久久久久久欧美精品| 国产亚洲亚洲| 国产高潮在线| 日本中文字幕不卡| 欧美jjzz| 人人草在线视频| 四虎精品一区二区免费| 亚洲国产福利| 国产精品任我爽爆在线播放| 免费不卡中文字幕在线| 久久免费福利| 日本一区免费网站| 蜜臀av性久久久久蜜臀aⅴ四虎 | 不卡一区2区| 国产精品久久久久久久久妇女| 婷婷亚洲成人| 亚洲欧洲日韩| 亚洲永久精品唐人导航网址| 999国产精品永久免费视频app| 久久国产精品免费精品3p| 91久久在线| 亚洲激情中文| 激情五月综合网| 亚洲成人精选| 不卡av一区二区| 欧美另类综合| 野花国产精品入口| 亚洲精华国产欧美| 午夜在线视频观看日韩17c| 欧美日韩国产一区精品一区| 婷婷国产精品| 日韩午夜一区| 亚洲免费观看高清完整版在线观| 久久香蕉国产| 最新日韩欧美| 亚洲色诱最新| 中文不卡在线| 日韩av一级片| 国产精品嫩草影院在线看| 国产乱论精品| 久久男人av| 三级小说欧洲区亚洲区| 香蕉精品久久| 亚洲视频播放| 日韩精品一区二区三区免费视频 | 97精品97| 日韩国产一区| 亚洲免费在线| 日本午夜精品| 亚洲永久av| 在线视频亚洲| 91成人福利| 美腿丝袜亚洲三区| 欧美成人午夜| 国产日韩视频在线| 国产suv精品一区| 丝瓜av网站精品一区二区| 日本成人在线一区| 91精品韩国| 亚洲精品影视| 日韩免费看片| 亚洲日产av中文字幕| 国产一区2区在线观看| 亚洲一区二区成人| 免费看久久久| 日韩精品一二区| 日韩啪啪电影网| 青草国产精品| 日韩高清成人| 日韩精品免费一区二区夜夜嗨 | 久久久久久久久丰满| 日本亚洲三级在线| 久久国产日韩| 国际精品欧美精品| 免费久久99精品国产| 在线日韩中文| 久久三级视频| 国产日韩电影| a天堂资源在线| 免费在线观看一区| 久久精品99国产精品日本| 久久国产精品毛片| 日本欧美不卡| 国产一区二区三区国产精品| 国产精品视频3p| 88久久精品| 日本va欧美va欧美va精品| 日本欧美在线看| 免费看精品久久片| 一区久久精品| 日韩网站在线| 免费欧美在线视频| 蜜桃传媒麻豆第一区在线观看 | 国产91欧美| 精品国产午夜肉伦伦影院| 精品一区二区三区在线观看视频| 久久精品99国产国产精| 日本久久二区| 国产精品亚洲产品| 精品美女视频 | 日韩精品亚洲aⅴ在线影院| 亚洲精品无吗| 日韩高清在线一区|