成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

一份前端開(kāi)發(fā)人員的架構(gòu)樣式指南,請(qǐng)查收!

譯文
開(kāi)發(fā) 前端
當(dāng)你的前端項(xiàng)目開(kāi)始擴(kuò)展或新的前端工程師加入團(tuán)隊(duì)時(shí),理解如何在你的項(xiàng)目代碼庫(kù)中組織 CSS 是非常重要的。

【51CTO.com快譯】你曾經(jīng)開(kāi)發(fā)大型前端項(xiàng)目時(shí)是不是有這樣的經(jīng)歷,項(xiàng)目的 JavaScript 源文件結(jié)構(gòu)清晰,但想要對(duì) CSS 進(jìn)行更改時(shí),就會(huì)遇到一堆亂七八糟的非結(jié)構(gòu)化 CSS 。

雖然你知道添加或修改哪些 CSS 屬性,但是寫代碼時(shí)還是很小心謹(jǐn)慎,因?yàn)樵诤芏嗟胤接?CSS 屬性被覆蓋,在某些情況下,甚至還使用了 !important。由于擔(dān)心增加或者修改代碼會(huì)破壞現(xiàn)有樣式,所以你會(huì)創(chuàng)建一個(gè)新的規(guī)則,這會(huì)讓混亂的情況進(jìn)一步增加。

這是許多前端項(xiàng)目都面臨的問(wèn)題。

當(dāng)你的項(xiàng)目開(kāi)始擴(kuò)展或新的前端工程師加入團(tuán)隊(duì)時(shí),理解如何在你的項(xiàng)目代碼庫(kù)中組織 CSS 是非常重要的。本篇文章將通過(guò)不同的想法,幫助你創(chuàng)建更強(qiáng)大的CSS架構(gòu)。 

??

為什么我們需要強(qiáng)大的CSS架構(gòu)?

穩(wěn)固的 CSS 體系結(jié)構(gòu)基礎(chǔ)可以在項(xiàng)目開(kāi)始擴(kuò)展和發(fā)展時(shí)為其提供支持。如果基礎(chǔ)沒(méi)有經(jīng)過(guò)深思熟慮的思考和規(guī)劃,那么未來(lái),你的項(xiàng)目很可能會(huì)倒塌。

當(dāng)然,CSS不太可能像 JavaScript 錯(cuò)誤那樣破壞你的系統(tǒng),但它可以產(chǎn)生不同的問(wèn)題,使項(xiàng)目工作非常困難。如果你的團(tuán)隊(duì)對(duì)在項(xiàng)目中添加或更改 CSS 沒(méi)有信心,那么他們會(huì)添加 Bug,這些 Bug 會(huì)影響用戶的體驗(yàn),使項(xiàng)目受到影響。

因此,開(kāi)始一個(gè)項(xiàng)目時(shí),有一個(gè)可靠的 CSS 架構(gòu)是非常必要的,**畢竟編寫糟糕的CSS 要比刪除它更容易。**

在我的印象里,CSS在前端領(lǐng)域并沒(méi)有被廣泛的關(guān)注。我們花費(fèi)大量的時(shí)間學(xué)習(xí)最新的 JavaScript 框架,卻堅(jiān)持用淺顯的 CSS 理解湊合著構(gòu)建 Web 模塊。

我想這是我們都犯過(guò)的錯(cuò)誤,也是我想要改變的事情。

我們可以使用哪些CSS架構(gòu)?

當(dāng)我開(kāi)始研究這個(gè)主題時(shí),有許多CSS架構(gòu)脫穎而出:

  • OOCSS (Object-Oriented CSS)
  • SMACSS (Scalable and Modular Architecture for CSS)
  • ACSS(Atomic CSS)
  • BEM (Block Element Modifier)

這次我簡(jiǎn)要描述下每種方法。

什么是 BEM?

BEM代表塊元素修飾符,是一種構(gòu)建CSS的方法,推薦在創(chuàng)建樣式類時(shí)使用一致的命名約定。BEM推薦的命名約定是 block-name__element-name--modifier-name。

  • block-name:描述應(yīng)設(shè)置樣式的塊。例如:photo。
  • __element-name:描述該塊中應(yīng)設(shè)置樣式的元素。例如:photo_image。
  • --modifier-name:描述正在設(shè)置樣式的塊或元素的修改器。例如:photo__image--black-and-white。

什么是OOCSS?

OOCSS代表面向?qū)ο蟮腃SS,它是一種設(shè)計(jì)CSS的方法,推薦使用抽象來(lái)分離結(jié)構(gòu)樣式和可視化樣式,同時(shí)消除CSS的重復(fù)。

下面這個(gè)例子:

.button {
padding: 10px 16px;
color: blue;
}
.h1 {
font-size: 2em;
color: blue;
}

OOCSS會(huì)更改成如下:

.button {
padding: 10px 16px;
}
.h1 {
font-size: 2em;
}
.primary {
color: blue;
}

通過(guò)我們的新抽象,我們可以將 primary 類分配給兩個(gè) button 和 h1 元素,并被賦予 blue 顏色。這有助于我們保持樣式表整潔,避免重復(fù)。

什么是 SMACSS?

SMACSS代表CSS的可擴(kuò)展和模塊化體系結(jié)構(gòu)。它要求在五種不同類別下構(gòu)建樣式:base,layout,module,state 和 theme。

  • Base 樣式應(yīng)保留你默認(rèn)的CSS樣式。這些樣式將用于網(wǎng)站或應(yīng)用程序的所有元素。
  • Layout 樣式應(yīng)該包含元素的樣式,這些元素的設(shè)計(jì)目的是將頁(yè)面分離為其結(jié)構(gòu)組件。頁(yè)眉、頁(yè)腳和網(wǎng)格等元素的樣式應(yīng)該在這里定義。
  • Module 樣式應(yīng)該包含跨網(wǎng)站或應(yīng)用程序的可重用元素的樣式。
  • State 樣式應(yīng)該定義你的網(wǎng)站或應(yīng)用程序中不同元素的不同狀態(tài)。諸如“is-active”、“is-disabled”和“is-success”之類的樣式。
  • Theme 樣式應(yīng)該決定元素的外觀。他們應(yīng)該超越基本的樣式,并開(kāi)始注入你的項(xiàng)目的風(fēng)格到網(wǎng)站或應(yīng)用程序。

什么是 ACSS?

ACSS代表 Atomic CSS,它專注于創(chuàng)建許多小型 CSS 實(shí)用工具類,供你在 HTML 中使用。與 OOCSS 相似的是,它們都建議將重復(fù)的屬性值分離到它們自己的規(guī)則中。ACSS可以被看作是OOCSS的一個(gè)更極端的版本,因?yàn)樗膭?lì)你在盡可能小的層次上創(chuàng)建樣式。

下面是使用Atomic CSS項(xiàng)目中的一些樣式規(guī)則示例:

/* Colours */
.color-primary { color: blue; }
.color-secondary { color: purple; }

/* Margins */
.mt-1 { margin-top: 5px; }
.mt-2 { margin-top: 10px; }
.mb-1 { margin-bottom: 5px; }
.mb-2 { margin-bottom: 10px; }

與OOCSS的不同是,ACSS 建議在 CSS 選擇器的命名約定中使用CSS屬性。比如在OOCSS中你可以定義一個(gè) .primary 類將元素的顏色更改為藍(lán)色。但在 ACSS 中你需要定義一個(gè) .color-primary的類。

應(yīng)該選擇哪種 CSS 架構(gòu)?

簡(jiǎn)單的說(shuō),選哪個(gè)都沒(méi)有關(guān)系。因?yàn)樯厦娴膸追N架構(gòu)都有優(yōu)點(diǎn)和缺點(diǎn)。不同的人在選擇上會(huì)有不同的看法。

最重要的是,在開(kāi)始編寫CSS之前,確保您的團(tuán)隊(duì)已經(jīng)同意使用一致的格式。這種格式可以是上面提到的架構(gòu)之一,或者是不同架構(gòu)的混合,或者是你自己想出來(lái)的東西。

負(fù)責(zé)該項(xiàng)目的工程團(tuán)隊(duì)?wèi)?yīng)該理解這種結(jié)構(gòu),以便編寫的任何新CSS都遵循選擇的樣式。最好是在文檔中解釋體系結(jié)構(gòu),這樣新加入團(tuán)隊(duì)的工程師也能夠快速、輕松地了解項(xiàng)目所選擇的體系結(jié)構(gòu)。

總結(jié)

無(wú)論你選擇如何構(gòu)建項(xiàng)目,都必須確保不要忘記 CSS,并嘗試維護(hù) CSS 代碼保持一致樣式,使新工程師更容易上手,讓他們能夠自信地進(jìn)行更改。確保這些規(guī)則被記錄和執(zhí)行,最好以自動(dòng)化的方式。

如果在項(xiàng)目開(kāi)始階段不花時(shí)間創(chuàng)建一套強(qiáng)大的規(guī)則來(lái)管理 CSS 的編寫方式,那么長(zhǎng)遠(yuǎn)來(lái)看,遇到問(wèn)題時(shí)花費(fèi)的時(shí)間將會(huì)更多。所以,為了后續(xù)更高效的編寫代碼,前期的規(guī)則制定很有必要。 

【51CTO譯稿,合作站點(diǎn)轉(zhuǎn)載請(qǐng)注明原文譯者和出處為51CTO.com】


責(zé)任編輯:黃顯東
相關(guān)推薦

2022-02-28 11:26:40

模型深度學(xué)習(xí)谷歌

2022-04-13 18:12:37

TypeScriptPython開(kāi)發(fā)

2025-02-08 11:02:57

2009-08-27 12:00:40

ibmdwJava

2022-04-20 10:56:06

JavaJVM參數(shù)

2022-05-16 13:58:52

開(kāi)發(fā)區(qū)塊鏈Web3

2020-06-09 07:57:47

前端開(kāi)發(fā)代碼

2020-05-11 09:54:33

JavaScript開(kāi)發(fā)技術(shù)

2022-06-06 10:30:23

容器鏡像

2021-10-27 10:43:24

開(kāi)發(fā)技能代碼

2020-03-30 11:32:49

IT技術(shù)面試

2013-09-25 09:20:39

iOS開(kāi)發(fā)iOS7iPhone5s

2018-11-26 09:55:07

MySQL誤刪數(shù)據(jù)數(shù)據(jù)庫(kù)

2010-08-09 16:09:25

2012-05-30 15:15:42

ibmdw

2023-03-15 07:12:53

企業(yè)開(kāi)發(fā)人員提供商

2009-11-23 20:07:51

ibmdw開(kāi)發(fā)

2021-02-19 09:33:01

kubernetesJAVA服務(wù)

2009-12-11 14:50:14

Visual Basi

2021-11-16 19:19:07

API接口前端開(kāi)發(fā)
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)

主站蜘蛛池模板: 国产91综合| 国产色| 中文字幕亚洲视频 | 一区二区视屏 | 黄色毛片免费看 | 国产精品久久久久久婷婷天堂 | 欧美日韩在线免费 | 色99视频 | 国产精品免费看 | 一区二区三区小视频 | 欧美成人免费电影 | 奇米在线| 一区二区在线不卡 | 日韩免费一区 | 日本一区二区高清不卡 | 国产精品一区在线观看 | 国产色爽 | 91精品中文字幕一区二区三区 | av在线免费网站 | 蜜桃免费一区二区三区 | 91av在线免费看 | 亚洲精品福利在线 | 久久er99热精品一区二区 | 两性午夜视频 | 成人精品一区亚洲午夜久久久 | 91精品久久久久久久 | 国产精品不卡视频 | 伊人久久综合 | 国产视频一区在线观看 | 欧美在线视频网 | 中文字幕亚洲一区 | 99久久婷婷国产亚洲终合精品 | 久久激情av| 欧美一区永久视频免费观看 | 欧洲亚洲视频 | 欧美成人精品一区二区三区 | 久久国际精品 | 伊人网综合在线观看 | 国产精品免费av | 久草免费在线视频 | 亚洲综合视频一区 |