關(guān)于前端團隊化思考

這個題目是zlx出給我們的題目钦幔,但是如果僅僅當(dāng)作題目來做我覺得沒有多大的意義窃诉。這個問題很大豆胸,目前階段個人理解也很粗淺奥洼,只是簡單做一個歸納,當(dāng)作最近所學(xué)的總結(jié)配乱。

上次winter來鞋廠分享之后我也想了不少溉卓,雖然目前自己遠遠達不到這樣的高度皮迟,但是思考應(yīng)該是沒有問題的。團隊協(xié)作的問題要從至少兩個角度去考慮:

  1. 代碼問題
  2. 工程問題

工程問題看似和代碼問題平行桑寨,其實兩者相輔相成伏尼。

既然已經(jīng)討論團隊合作的范疇,那么我們假定這個項目已經(jīng)比較龐大并且適合用工程的問題去解決它尉尾。

代碼問題


代碼規(guī)范

首先爆阶,團隊合作的代碼需要規(guī)范,這是首要的沙咏。代碼規(guī)范是保證團隊合作里別人能方便得看懂你的代碼的前提辨图。

我認為代碼規(guī)范沒有好壞之說,只有合理性和習(xí)慣性上的區(qū)別肢藐。

有一些規(guī)范也許時人們的習(xí)慣俊戳,沒有什么道理,可能也是我不知道棱烂。但大部分規(guī)范是有意義的占遥。例如以前我不知道

body {
    //選擇符后有空格
}
body{ 
    //選擇符后無空格
}

之間的區(qū)別,后來小志告訴我說是因為:first-letter和:first-line中間的橫線在ie6下會因為沒有空格出問題痘煤,我還沒有自己去求證這個問題凑阶,但是我從中意識到大部分規(guī)范是有道理的。

例如Bootstrap的編碼規(guī)范:http://codeguide.bootcss.com/

好的編碼規(guī)范增加了可讀性和可維護性衷快,不管自己和別人讀起來都會比較爽宙橱。

所以在我看來團隊協(xié)作的話非常需要統(tǒng)一的編碼規(guī)范。

當(dāng)然有的人覺得我本來的寫法就很好蘸拔,我不想改變师郑,但是這是團隊的事情不是一個人的事情。

HTML結(jié)構(gòu)

HTML結(jié)構(gòu)方面離不開幾個話題都伪,標(biāo)簽的語義化呕乎,標(biāo)簽的選擇,類名怎么取陨晶,單類還是多類猬仁,結(jié)構(gòu)如何嵌套合理。

我把團隊合作密切相關(guān)的幾個重點討論一下先誉。

  • 標(biāo)簽的選擇
  • 模塊化
  • 可擴展性
  • 未來

標(biāo)簽的選擇


標(biāo)簽選擇上的問題我覺得見仁見智湿刽,例如之前從zlx那里學(xué)到的導(dǎo)航的寫法。

之前導(dǎo)航的結(jié)構(gòu)一直是nav>ul>li>a這樣的褐耳。但是其實直接div>a或者nav>a也可以诈闺。沒有必要非要用ul>li。

兩種方式表現(xiàn)上是一樣的铃芦,但是為什么主流網(wǎng)站都用了ul>li雅镊?我認為一個規(guī)范襟雷,一個是語義化。而且在團隊合作層面仁烹,可能隊友一看到這個結(jié)構(gòu)就能知道它是導(dǎo)航耸弄,但是div>a會讓人愣一下,雖然可能會給class="nav"之類的卓缰,但好像一個導(dǎo)航對應(yīng)一個列表這樣的方式已經(jīng)給人留下了很深的印象计呈,一種習(xí)慣。

<nav>
  <ul>
    <li><a href="#">
    <li><a href="#">
    <li><a href="#">
  </ul>
</nav>

<nav>
  <a href="#">
  <a href="#">
  <a href="#">
</nav>

都是可以的征唬。

這個方面我覺得不必要吹毛求疵捌显,還是結(jié)合需要來選擇。

我覺得衡量標(biāo)簽選擇的幾個標(biāo)準(zhǔn):

  • 語義化
  • 結(jié)構(gòu)清晰

模塊化


類名怎么取总寒,單類還是多類扶歪,標(biāo)簽的語義化,結(jié)構(gòu)如何嵌套其實是結(jié)合在一起的摄闸,最終目前的最好的解決方案可能是模塊化击罪。隨著Web Component概念的普及,我覺得Web模塊是一個必然的事情贪薪。因為目前前端的語言相對年輕,可能走的路是其他一些傳統(tǒng)語言的老路眠副。例如之前的OOCSS画切,面向?qū)ο蟮腃SS。模塊化也是其他一些例如python之類的所運用的囱怕。模塊化的好處在于能夠?qū)⒋蠖蔚拇a復(fù)用霍弹,避免重復(fù)造輪子。之前跟大漠簡單聊了一下娃弓,發(fā)現(xiàn)這個如果結(jié)合前端工程的問題可以變的很厲害典格。這個之后再說。模塊化就涉及了類名的取名台丛,目前常用的3種CSS設(shè)計模式BEM,OOCSS,SMACSS耍缴。

BEM主要是命名技巧,簡單來說就是模塊名--元素名__狀態(tài)挽霉。

OOCSS沒有怎么看防嗡。

主要看了SMACSS,它主要是以元素的業(yè)務(wù)邏輯來劃分類名。具體不做詳細介紹侠坎。

但是我認為他們的中心思想都類似:

  1. 減少對HTML結(jié)構(gòu)依賴蚁趁,配合模塊化盡量少用子元素,后代实胸,標(biāo)簽選擇器他嫡。有利于代碼的復(fù)用番官。
  2. 增加class來提高復(fù)用性,降低標(biāo)簽耦合度钢属。

第二點就涉及到了單類和多類的問題徘熔。例如
HTML:

第一種:

    <a class="button-default">
    <a class="button-primary">

第二種

    <a class="button button-default">
    <a class="button button-primary">

CSS:

第一種:

    .button-default {
        width: 50px;
        background-color: blue;
    }
    .button-primary {
        width: 50px;
        background-color: red;
    }

第二種:

    .button {
        width: 50px;
    }
    .button-default {
        background-color: blue;
    }
    .button-primary {
        background-color: red;
    }

第二種看似多了一條CSS規(guī)則但是擴展的時候要更加靈活。

我認為單類和多類圍繞的核心問題是基于狀態(tài)的變化署咽。一般都是一個默認態(tài)近顷,通過多類來賦予不同的狀態(tài)。
還有HTML結(jié)構(gòu)嵌套的問題宁否,我認為盡量避免很深的嵌套窒升,對于CSS選擇器也是,等維護的時候會比較困難慕匠。
其實我認為有時候過分追求這里少一層嵌套或者少一個標(biāo)簽意義并不是很大饱须,需要做的是減少沒有意義的標(biāo)簽和過深的嵌套。

可擴展性


可擴展性其實取決于模塊化的程度台谊。還有其他一些因素蓉媳,比如之前練習(xí)里給一些狀態(tài)把:beforeafter都用了,那么你以后想加其他的狀態(tài)可能沒那么方便锅铅。

未來

前端的整體結(jié)構(gòu)我認為會往MVC的模式去靠酪呻,目前的Angular.js,React.js等,都是基于MVC盐须、MVVM之類玩荠。前端可以做一些后端的事情,后端只要負責(zé)業(yè)務(wù)和數(shù)據(jù)處理贼邓。
基于Node前端可以發(fā)生好多的變化阶冈,前端可以變的無比簡介,比如Jade模版之類塑径。

工程問題

其實我認為團隊化更多的在工程問題上女坑,主要討論一下我目前想到的幾點:

Code Review


前端普遍沒有code review我認為這是有危險的,代碼質(zhì)量無法保證统舀,整個平臺沒有統(tǒng)一的代碼匆骗,不利于今后的擴展和維護,很可能原來寫代碼的這個人走了誉简,那么其他的人要花很大時間和精力去看他的代碼才能維護绰筛。

模塊測試


團隊合作的過程當(dāng)中可能每個人負責(zé)一個模塊,那么對于獨立模塊的測試就很重要描融。每個模塊的質(zhì)量決定了總體的質(zhì)量铝噩。目前好像對于前端代碼的測試都是交給開發(fā)去做,有問題再反饋。我覺得這是前端自己的問題骏庸,除了邏輯上的問題可能自己看不出來毛甲,一些表現(xiàn)上和兼容性的問題還是應(yīng)該自己去解決的。不能完全依賴測試具被。目前的前端自己的測試僅僅限于極限情況的考慮和跨瀏覽器兼容性下的表現(xiàn)玻募。我覺得遠遠不夠。

前端自動化


現(xiàn)在很多項目開始時都是在重復(fù)造輪子一姿,其實這樣很浪費時間七咧。不管是Gulp還是Grunt宗旨都是用代碼來進行自動化的工作流。比如文件的建立叮叹,模塊的引用艾栋,代碼的壓縮,Sprite合圖蛉顽。這樣的工作流結(jié)合響應(yīng)式蝗砾,模塊化和Sass之類的CSS預(yù)編譯語言,可以很大的提高開發(fā)效率携冤。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末悼粮,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子曾棕,更是在濱河造成了極大的恐慌扣猫,老刑警劉巖,帶你破解...
    沈念sama閱讀 216,651評論 6 501
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件翘地,死亡現(xiàn)場離奇詭異苞笨,居然都是意外死亡,警方通過查閱死者的電腦和手機子眶,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,468評論 3 392
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來序芦,“玉大人臭杰,你說我怎么就攤上這事⊙柚校” “怎么了渴杆?”我有些...
    開封第一講書人閱讀 162,931評論 0 353
  • 文/不壞的土叔 我叫張陵,是天一觀的道長宪塔。 經(jīng)常有香客問我磁奖,道長,這世上最難降的妖魔是什么某筐? 我笑而不...
    開封第一講書人閱讀 58,218評論 1 292
  • 正文 為了忘掉前任比搭,我火速辦了婚禮,結(jié)果婚禮上南誊,老公的妹妹穿的比我還像新娘身诺。我一直安慰自己蜜托,他們只是感情好,可當(dāng)我...
    茶點故事閱讀 67,234評論 6 388
  • 文/花漫 我一把揭開白布霉赡。 她就那樣靜靜地躺著橄务,像睡著了一般。 火紅的嫁衣襯著肌膚如雪穴亏。 梳的紋絲不亂的頭發(fā)上蜂挪,一...
    開封第一講書人閱讀 51,198評論 1 299
  • 那天,我揣著相機與錄音嗓化,去河邊找鬼棠涮。 笑死,一個胖子當(dāng)著我的面吹牛蟆湖,可吹牛的內(nèi)容都是我干的故爵。 我是一名探鬼主播,決...
    沈念sama閱讀 40,084評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼隅津,長吁一口氣:“原來是場噩夢啊……” “哼诬垂!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起伦仍,我...
    開封第一講書人閱讀 38,926評論 0 274
  • 序言:老撾萬榮一對情侶失蹤结窘,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后充蓝,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體隧枫,經(jīng)...
    沈念sama閱讀 45,341評論 1 311
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,563評論 2 333
  • 正文 我和宋清朗相戀三年谓苟,在試婚紗的時候發(fā)現(xiàn)自己被綠了官脓。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 39,731評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡涝焙,死狀恐怖卑笨,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情仑撞,我是刑警寧澤赤兴,帶...
    沈念sama閱讀 35,430評論 5 343
  • 正文 年R本政府宣布,位于F島的核電站隧哮,受9級特大地震影響桶良,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜沮翔,卻給世界環(huán)境...
    茶點故事閱讀 41,036評論 3 326
  • 文/蒙蒙 一陨帆、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧,春花似錦歧譬、人聲如沸岸浑。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,676評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽矢洲。三九已至,卻和暖如春缩焦,著一層夾襖步出監(jiān)牢的瞬間读虏,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 32,829評論 1 269
  • 我被黑心中介騙來泰國打工袁滥, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留盖桥,地道東北人。 一個月前我還...
    沈念sama閱讀 47,743評論 2 368
  • 正文 我出身青樓题翻,卻偏偏與公主長得像揩徊,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子嵌赠,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 44,629評論 2 354

推薦閱讀更多精彩內(nèi)容

  • Android 自定義View的各種姿勢1 Activity的顯示之ViewRootImpl詳解 Activity...
    passiontim閱讀 172,081評論 25 707
  • 一.黃油糖粉混合搓至發(fā)白加入蛋液塑荒,糖粉40,黃油65姜挺,蛋液15 二.加入剩余的干性原料齿税,低筋粉100,細鹽1.5 ...
    雅絲顏閱讀 239評論 0 1
  • 經(jīng)常我們拿到一本書牵舱,讀完一章,再來回想前面講的內(nèi)容缺虐,發(fā)現(xiàn)前面閱讀的內(nèi)容已經(jīng)忘記得差不多了芜壁,這是我們經(jīng)常會遇到的問題...
    栩沐閱讀 364評論 2 4
  • 通過自傳形式展現(xiàn)了梵高的生命歷程,還原百年前的故事志笼。 這是一本梵高指南,述說了諸多作品的確切背景把篓; 這是一本樸素日...
    大狗說閱讀 1,218評論 2 10