這里的“重構(gòu)”指的是將設(shè)計(jì)圖(比如PSD)轉(zhuǎn)換為html + css + js已维。
用這個(gè)標(biāo)題行嗤,是因?yàn)榍耙欢螘r(shí)間組里有一個(gè)開放式討論:怎樣才算一個(gè)好重構(gòu)?
其實(shí)垛耳,"好"與"壞"向來都是相對的栅屏,因?yàn)槊總€(gè)人眼中看待"好"與"壞"的標(biāo)準(zhǔn)不一樣,不如從自身的角度考慮一下:如何做一個(gè)好重構(gòu)艾扮?
先來看一個(gè)平時(shí)我們遇到的最多的兩欄布局:
很明顯在保持同樣html結(jié)構(gòu)的情況下既琴,實(shí)現(xiàn)兩欄布局可以有多種CSS方案實(shí)現(xiàn)(左欄定寬),主要方向是用浮動或不用浮動泡嘴,右欄定寬或者不定寬:
Qzone、朋友網(wǎng)逆济、Facebook都給左欄浮動酌予,唯一不同的是右欄的寫法,Qzone給右欄定寬并且浮動奖慌,而朋友網(wǎng)和Facebook則并沒有給右欄定寬也未浮動抛虫,而是利用了創(chuàng)建BFC并且為低版本IE觸發(fā)hasLayout的原理讓右欄自適應(yīng)寬度。
Yahoo和Google兩欄都未用浮動简僧,唯一不同的是Yahoo用了絕對定位的方法建椰,而谷歌用了inline-block,Google已經(jīng)宣布旗下一些產(chǎn)品放棄對IE8 的支持岛马,所以Google可以大膽的使用inline-block去實(shí)現(xiàn)布局棉姐,不用去為其他低版本瀏覽器寫一大堆的hack。
這其中有最好的方案么啦逆?上面每一種方案都有各自的優(yōu)劣伞矩,可能適合于某種項(xiàng)目背景,同樣選用的方案可能和用戶群體也有關(guān)系夏志。雖然無論選用哪一種方案乃坤,從用戶層面來講,無法感知到,但我們不能因此去隨意的使用一種方案湿诊。
為了項(xiàng)目后期的易維護(hù)性和易用性狱杰,必須要選擇一種最佳的方案,而我們?nèi)绻B基本的BFC厅须、hasLayout這些知識都不了解便會顯得力不從心仿畸。同時(shí)要明確自己的定位:我們不僅僅是一個(gè)"切圖仔"或"美工",我們不能忽視一些障礙用戶群體九杂,我們必須去使項(xiàng)目的代碼變得更優(yōu)雅颁湖、更易用。雖然重構(gòu)的基本崗位職責(zé)是:PSD轉(zhuǎn)html + css + js例隆,但要知道僅僅做到這些還不算一個(gè)好重構(gòu)甥捺,更好的溝通能力,更多的分享镀层、思考和總結(jié)镰禾,如何正確的去關(guān)注一些前端的動態(tài),這都是我們需要做的唱逢,當(dāng)然最重要的還需要我們有一個(gè)樂觀的態(tài)度和幸福的心態(tài)吴侦,下面本人將詳細(xì)闡述到底如何做一個(gè)好重構(gòu),當(dāng)然這只是鄙人的個(gè)人觀點(diǎn)坞古,還請各位拍磚备韧。
從專業(yè)角度:
明確的自身定位
目前國內(nèi)將前端分為重構(gòu)和JS開發(fā)的并不多,雖然PS是重構(gòu)必用的一個(gè)軟件痪枫,但要知道重構(gòu)不是"切圖仔"织堂,切圖只是重構(gòu)工作內(nèi)容的一部分。我們沒有理由因?yàn)樽约菏侵貥?gòu)奶陈,而不去學(xué)習(xí)其他技術(shù)易阳,因?yàn)槟阒滥悴粫梢惠呑拥闹貥?gòu),JS不能丟吃粒,同樣的對前端新技術(shù)要熟知潦俺。重構(gòu)頁面時(shí)應(yīng)該把大部分的時(shí)間花在頁面模塊的抽離、性能優(yōu)化徐勃、易維護(hù)性事示、易用性的探索上,而應(yīng)該花最少的時(shí)間去代碼實(shí)現(xiàn)疏旨。也許你寫出來的頁面有百萬級的用戶在使用很魂,這里可能有障礙用戶,所以你要考慮各種用戶的感受與體驗(yàn)檐涝,而不僅僅是局限于代碼的完成度上遏匆。
注重前端基礎(chǔ)技能
前端的基礎(chǔ)知識就像一個(gè)房子的地基法挨,如果地基打不好,一旦遇到一點(diǎn)地震可能就會倒幅聘。同時(shí)也像一個(gè)城堡的各扇門凡纳,哪邊的門造的不好,敵人的槍火就可以馬上攻破帝蒿,所以打好基礎(chǔ)是前端學(xué)習(xí)更多知識的基石荐糜。CSS屬性的特性、html標(biāo)簽的語義化葛超、JS的基礎(chǔ)知識暴氏、W3C的規(guī)范(塊格式化上下文、層疊上下文绣张、框模型等)答渔,這些可以多花點(diǎn)時(shí)間去學(xué)習(xí)和鞏固,做到能正確合理的使用某個(gè)前端技術(shù)方案侥涵。
正確對待前沿技術(shù)
互聯(lián)網(wǎng)發(fā)展日新月異沼撕,前端技術(shù)更新也很快,當(dāng)我們在學(xué)css2時(shí)芜飘,css3已經(jīng)風(fēng)靡全球务豺,當(dāng)我們在學(xué)css3時(shí),css4已經(jīng)被提上了日程嗦明。前端的路上永遠(yuǎn)學(xué)無止境笼沥,所以在某項(xiàng)新技術(shù)誕生時(shí),就需要我們正確的去審視娶牌。
在做好自己本職工作的同時(shí)敬拓,保持一顆學(xué)習(xí)的熱情,新技術(shù)可以嘗試使用裙戏,但請先一定了解為什么要用這個(gè)新技術(shù)?使用這個(gè)技術(shù)能為我們帶來什么改進(jìn)厕诡?在前端技術(shù)上累榜,永遠(yuǎn)沒有最好的技術(shù)方案,只有最合適的技術(shù)方案灵嫌。最新的不一定是最好的壹罚,舊的也不一定是差的,切忌盲目跟風(fēng)學(xué)習(xí)新技術(shù)寿羞,要知道自己正在學(xué)的是否能夠?qū)W以致用猖凛。(筆者注:其實(shí)更多的時(shí)候并不是某項(xiàng)新技術(shù),技術(shù)早就誕生绪穆,只是一個(gè)新的前端解決方案或標(biāo)準(zhǔn)被推動出來了辨泳,如CSS3其實(shí)在2003年就誕生了)
更好的溝通能力
我們每天可能要和開發(fā)虱岂、產(chǎn)品、設(shè)計(jì)菠红、交互第岖、測試等不同的人打交道,所以這就需要我們有一個(gè)更好的溝通協(xié)調(diào)能力试溯,注重一個(gè)更好的溝通技巧蔑滓,減少溝通上的成本。"一切以用戶的價(jià)值為依歸"遇绞,這也正是互聯(lián)網(wǎng)行業(yè)所需要的一種理念键袱,在與其他同事溝通時(shí)除了真誠待人以外,還需要多為用戶去考慮:我們真的需要這么做么摹闽?
有選擇的參加技術(shù)論壇
如果自己呆在一個(gè)小公司蹄咖,前端人也不是很多,沒有一個(gè)很好的氛圍钩骇,那么這時(shí)我們就只能通過兩種方式來拓寬人脈:網(wǎng)絡(luò)和論壇比藻。網(wǎng)絡(luò)如QQ群、藍(lán)色理想等倘屹,而面對面的論壇無疑是最真實(shí)的一種拓寬人脈的方式银亲。其實(shí)現(xiàn)在國內(nèi)大的環(huán)境下,前端類的技術(shù)論壇我自己都數(shù)不過來纽匙,這時(shí)有選擇的參加一個(gè)論壇顯得尤為重要务蝠,而不該不管自己懂不懂、免費(fèi)還是收費(fèi)什么論壇都去參加烛缔,其實(shí)適合自己的是最重要的馏段。
關(guān)注瀏覽器廠商
10年前,IE統(tǒng)治了大半個(gè)地球践瓷,如今院喜,其他的各大瀏覽器廠商已擠進(jìn)全球化份額爭奪戰(zhàn),最離不開前端的就是瀏覽器晕翠,關(guān)注瀏覽器廠商的動作與格局可以讓你擁有前瞻性的視角喷舀。一些瀏覽器廠商的開發(fā)者庫:微軟的MSDN,火狐的MDN淋肾,谷歌的開發(fā)者庫硫麻,歐朋(Opera)的開發(fā)者庫。另外可以關(guān)注下各瀏覽器廠商的推廣活動樊卓,火狐中國會在每一次推出新版本時(shí)有體驗(yàn)活動拿愧,微軟的最新的IE10推出時(shí)國內(nèi)也有推廣活動,可以了解這些新版本瀏覽器的特性以及對css3\html5的支持性如何碌尔。
更多的承擔(dān)和分享
在平時(shí)更多的去承擔(dān)一些額外的工作浇辜,譬如在重構(gòu)團(tuán)隊(duì)的協(xié)作規(guī)范券敌、編碼規(guī)范上提出自己的一些合理化建議,輸出一些利于其他同事更快奢赂、更高效提升的文檔陪白。平時(shí)在自己工作遇到了一些好的工作方法或者對一些新技術(shù)的研究可以拿出來和大家分享。重構(gòu)的團(tuán)隊(duì)氛圍很重要膳灶,誰都不希望呆在一個(gè)整天只管自己寫代碼的團(tuán)隊(duì)咱士,那樣不管對于個(gè)人還是團(tuán)隊(duì)都是不利的。
更多的思考與總結(jié)
思考指的是"意識流"轧钓,具體是我們在重構(gòu)過程中的想法和理念序厉,怎么想決定了我們怎么做。
作為重構(gòu)毕箍,很多人拿到設(shè)計(jì)稿之后就是開始埋頭切圖弛房,用各種"奇技淫巧"實(shí)現(xiàn)各種需求,我們甚至不會在拿到設(shè)計(jì)稿之后仔細(xì)的做一下分析:如何做一個(gè)合理的架構(gòu)而柑、如何抽取合適的模塊文捶、如何用更優(yōu)雅的方式和輕量的代碼實(shí)現(xiàn)頁面中的需求。
也許是目前大的環(huán)境下在催促著我們不斷的向前跑:各種前端論壇大多數(shù)都在講某個(gè)技術(shù)媒咳,糾結(jié)于某一技術(shù)細(xì)節(jié)的實(shí)現(xiàn)粹排,講爛掉的性能優(yōu)化,可很少有人去講該如何合理的選擇一個(gè)前端解決方案涩澡,如何解決重構(gòu)中遇到的一系列不同場景中的問題顽耳,以及最重要的我們自己的職業(yè)生涯思考:我們是準(zhǔn)備寫一輩子代碼么?
總結(jié)也叫"review"妙同,是復(fù)習(xí)射富、回顧的意思,review對于重構(gòu)來講粥帚,顯得尤為重要胰耗,定期的項(xiàng)目回顧能夠發(fā)現(xiàn)項(xiàng)目中存在的問題從而規(guī)避以后再次出現(xiàn)。
當(dāng)然項(xiàng)目回顧是一方面芒涡,更重要的是代碼層面的review宪郊,不定期的review可以促使我們在一些代碼的細(xì)節(jié)把控方面做的更優(yōu)雅,review除了可以提高代碼的品質(zhì)外拖陆,還能加強(qiáng)團(tuán)隊(duì)的協(xié)作精神,以及提高團(tuán)隊(duì)的整體技術(shù)能力懊亡。顯然這是一件非常有意義的事依啰。團(tuán)隊(duì)成員可以在一起review大家的代碼,發(fā)現(xiàn)每個(gè)人身上的不足和亮點(diǎn)店枣,不然我們真的是只管埋頭自己代碼的苦逼代碼仔了速警。
從生活角度:
保持閱讀的熱情
網(wǎng)絡(luò)的信息是碎片化的叹誉,在我們沒有很好的梳理碎片能力的時(shí)候,一本實(shí)物書籍對于慰藉我們的心靈顯得尤為重要闷旧。有時(shí)生活长豁、工作會讓人壓的喘不過氣來,這時(shí)忙灼,我們需要去尋找一種方式去釋放壓力匠襟,嗯,閱讀是一種很好的方式该园。
堅(jiān)持一項(xiàng)運(yùn)動愛好
平時(shí)工作太忙時(shí)酸舍,切記一定要改變自己的工作方法,梳理好需求的優(yōu)先級里初,預(yù)留出一定的時(shí)間來放松自己啃勉,這個(gè)放松一定要讓自己的筋骨活動開,可以是去打打羽毛球双妨,或者去跑步淮阐,再或者去健身。只有讓自己的身體變得強(qiáng)大起來刁品,才有更多的能量值去砍怪升級泣特。
保持樂觀的生活態(tài)度
善于捕捉生活中的一些細(xì)小的幸福顆粒,我們就會經(jīng)逞普铮活在快樂中群扶。上次在騰訊健康加油站聽了一次關(guān)于生活的分享,其中提到"生活就像燉雞湯镀裤,有時(shí)需要加點(diǎn)調(diào)料和沾料"竞阐,的確,這些沾料就是發(fā)現(xiàn)生活中的細(xì)小幸福暑劝,做一個(gè)樂觀骆莹、豁達(dá)、開朗的前端人士担猛。調(diào)節(jié)好工作和生活的平衡幕垦,讓自己不要再活的那么累。
嗯傅联,做個(gè)好重構(gòu)真的挺不容易的先改,無論是從專業(yè)角度還是從生活角度,缺一不可蒸走,保持一個(gè)樂觀仇奶、熱情、積極的心比驻,不斷學(xué)習(xí)该溯,讓自己活得簡單岛抄、快樂,此足矣狈茉。
其實(shí)夫椭,你不僅是在重構(gòu)代碼,也是在重構(gòu)人生氯庆!
學(xué)習(xí)前端的同學(xué)注意了2淝铩!点晴!
學(xué)習(xí)過程中遇到什么問題或者想獲取學(xué)習(xí)資源的話感凤,歡迎加入前端學(xué)習(xí)交流群461593224,我們一起學(xué)前端粒督!