前端感悟 ---入門級

來源:互聯網
上載者:User

標籤:style   blog   color   使用   os   width   

這幾周,看了各種各樣的代碼,經過一堆代碼review,也有了一些基本上的碼農感覺。打算記錄下來,這樣以後忘記了還能回來看看。本來上個星期就想寫這篇文章的,結果星期天晚上被叫回去修bug了。。

下面分css和js來記錄。

css:

在傳統意義上,css的書寫,只要能夠將效果表現出來,同時前面的selector不要太長就好。這樣在項目比較小的時候,修改起來就十分方便。但是,當整個項目開始極度膨脹以後,css就會變得極其龐大。1000+行的css輕輕鬆鬆就能寫到。

在review過程中,可以發現,大部分的css都是無法重用的。一個button樣式,基本都只能是在當前頁用用,而無法用於整個網站button的基類。所以,在這裡,就有一個概念,就是頁面中的元素style,是通過一堆class拼湊出來的,每個class都是有自己的樣式,比如:

部落格園編輯文章下面的發布按鈕,它的樣式是這樣的:

input.Button {    float: left;    background: #6B86B3;    border: 1px solid #333333;    text-transform: uppercase;    margin-right: 15px;    color: #FFFFFF;    font-size: 12px;    font-weight: bold;    width: 70px;    text-align: center;    cursor: pointer;    height: 26px;    line-height: 22px;}

這就是我們平時書寫css的習慣,一溜樣式寫下來,效果有了,就可以回家洗洗睡了。但是,這些樣式,就基本只能用在下面三個按鈕上,其餘的button就無法使用這些style了。

當然,我們可以把裡面的css抽離出來,讓它大部分代碼可以在整個網站使用。如下:

.leftFloat {    float: left;}.button {    border: 1px solid #333;    text-transform: uppercase;    font-weight: bold;    margin-right: 15px;    text-align: center;    cursor: pointer;}.largetButton {    width: 70px;    height: 26px;    line-height: 22px;}.smallFont{    font-size: 12px;}.whiteFont{    color: #fff;}.darkBlueBackground {    background:  #6B86B3;}

 這樣做以後,代碼總行數好像變多了,但是它的可重用性大大提升。對於smallFont,whiteFont,leftFloat,darkBlueBackground等,這些類在使用中就可以不拘束在這個button中了,對於所有的字型,我都可以使用smallFont,whiteFont。這樣,原來的input.Button就會由一些列類組裝來顯示按鈕效果,如下:

<input type="submit" class="leftFloat button largetButton smallFont whiteFont darkBlueBackground" name="Editor$Edit$lkbPost" value="發布" onclick="return CheckInput();" id="Editor_Edit_lkbPost">

當然,對於規模較小,樣式簡單的網站,這樣做是沒有意義的。在那些已經有了自己的顯示規範,樣式複雜,規模較大的網站,這樣做在後期的時候,只要在html裡進行class組裝,再定製一下當前頁簡短的css,就可以快速的完成一個頁面的開發了。

js

js方面,是被罵了無數遍以後才醒悟的。以前總喜歡寫看起來高大上的代碼,而且據說效率還很高,比那些傳統的代碼還看又好用多了。但是,這樣的代碼,完全是寫給機器看的。在多人團隊中,代碼不僅僅是要寫給機器看,更重要的是寫給人看。在這方面,甚至可以犧牲一小部分的效能,來做出易讀的代碼。(注意是一小部分!比如多寫幾句var之類的)

這裡要說一個關於傳參數的東西。一般在js中,我們寫函數時,參數的使用主要有兩大派,如下:

//一溜型function a(a1,a2,a3,a4,a5,a6,a7,a8){    //......}//一堆型//options = {a1: ‘‘,a2: ‘‘,a3: ‘‘,a4: ‘‘,a5: ‘‘,a6: ‘‘,a7: ‘‘,a8: ‘‘}function a(options){}

參數一溜排開的方式,有一個優點,那就是很清楚的讓別人知道,你需要的input是什麼,要你的程式跑起來需要給你什麼。這樣在後來人接手的時候方便理解。不過一長串參數吊在函數後面,實在是有礙觀賞。而且如果想多加一個參數,還要在後面再加一個名字。總感覺不是很優雅。

參數堆在options裡面的方式,讓人感覺很賞心悅目。這樣的寫法感覺很簡介大方。但是如果是在這樣的情況下:

function a(options){balabala;b(options);};

function b(options){balabala;};

這樣的話,想要知道options裡面要有什麼,就必須找到b裡面為止。這還是簡單的情況,如果有個5,6層的調用呢,簡直要讓人抓狂。

有人說可以用注釋,在第一次寫代碼的時候,我們會去乖乖注釋。但是,後來人修改你的代碼的時候,哪有空改注釋,這樣反倒形成一個坑了。

現在我的做法一般是這樣:

function a(options){    //input start    options = options || {};    var a1 = options.a1;    var a2 = options.a2;    var a3 = options.a3;    var a4 = options.a4;    var a5 = options.a5;    var a6 = options.a6;    var a7 = options.a7;    var a8 = options.a8;    //input end    //processing    //output start    return {        a1: a1,a2: a2,a3: a3,a4: a4,a5: a5,a6: a6,a7: a7,a8: a8    };    //output end}

在函數開始的時候,清楚的寫明我要的是什麼,在出去的時候,寫明傳出去的是哪些值。options只在input設定中用,後面的函數體中就不再調用了。這樣,函數雖然長了,但是在團隊開發中,更有利於別人理解你的代碼。而在你的具體processing中,別人可以當做一個黑盒,只在input中添加語句,processing後面添加幾句,就可以完成修改了。這樣更加節省開發成本。

小tips:

我們經常擔心傳進來的objec或者function是undefined。這樣很容易在後期報錯。不過有一招,讓你不用擔心這個:

function a(options){    options = options || {};    var testFunc = options.noFunc || function(){return {};};    //...}

這樣,即使沒有options,沒有options.noFunc,在後面的調用中,調用options.balabala和執行testFunc都不會出錯。當然,在testFunc中,後面的預設函數的傳回值的類型,最好和原來的noFunc傳回型別一致,這樣可以更好的增強程式穩定性。

 

好像不小心在部落格園的部落格上噴了部落格園的css,希望不會被幹掉。。。。

 

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.