Web前端:11個讓你代碼整潔的原則

来源:http://www.cnblogs.com/qianduantuanzhang/archive/2017/10/31/7762887.html
-Advertisement-
Play Games

寫Web頁面就像我們建設房子一樣,地基牢固,房子才不會倒。同樣的,我們製作Web頁面也一樣,一個良好的HTML結構是製作一個美麗的網站的開始,同樣的,良好的CSS只存在同樣良好的HTML中,所以一個乾凈的,語義的HTML的優點很多,那麼平時製作中,我們做到了這一點嗎?我們一起來看一張圖片: 上圖展示 ...


寫Web頁面就像我們建設房子一樣,地基牢固,房子才不會倒。同樣的,我們製作Web頁面也一樣,一個良好的HTML結構是製作一個美麗的網站的開始,同樣的,良好的CSS只存在同樣良好的HTML中,所以一個乾凈的,語義的HTML的優點很多,那麼平時製作中,我們做到了這一點嗎?我們一起來看一張圖片:

  上圖展示了兩段代碼,我想大家都只會喜歡第一種,我們先不說其語義,至少他的結構讓我們看上去清爽,而第二種呢?一看就是糟糕的代碼的代碼,讓人討厭的代碼。那麼要怎麼樣才能寫出一個好的代碼,整潔的代碼呢?下麵我們就從以下十一個方面一起來學習,只要大家以後在寫代碼的時候能堅持下麵的十二個原則,保準你的代碼質量能上去,而且你寫的代碼會人見人愛。

  一、DOCTYPE的聲明

  如果我們想做好一件事情,首先要知道我們有哪些權利去做,就如“DOCTYPE”的聲明,我們沒有必要去討論是否使用HTML4.01或者XHTML1.0或者說現在的HTML5都提供了嚴格版本或者過渡版本,這些都能很好的支持我們寫的代碼:

  由於我們現在的佈局不需要table佈局也能做出很好的佈局,那麼我們就可以考慮不使用過渡型而使用嚴格型的“DOCTYPE”,為了向後相容,我建議使用HTML5的聲明模式:

<!DOCTYPE HTML>
<html lang="en-US"> 

  如果想瞭解更多這方面的知識,可以點擊:

  1. W3C: Recommended DTDs to use in your Web document
  2. Fix Your Site With the Right DOCTYPE!
  3. No more Transitional DOCTYPEs, please

      二、字元集和編碼字元

      在每個頁面的開始中,我們都在中設置了字元集,我們這裡都是使用“UTF-8” 

      而且我們在平時寫頁面中時,時常會碰到”&”這樣的符號,那麼我們不應該直接在頁面這樣寫“&”:


  我們應該在代碼中使用字元編碼來實現,比如說“&”我們在代碼中應該使用“&”來代替它。

  如果想瞭解更多這方面的知識,可以點擊:

  1. Wikipedia: UTF-8
  2. A tutorial on character code issues
  3. The Extended ASCII table

      三、正確的代碼縮進 
      在頁面編輯中,代碼的縮進有沒有正確,他不會影響你網站的任何功能,但要是你沒有一個規範的縮進原則,讓讀你代碼的人是非常的生氣,所以說正確的代碼縮進可以增強你的代碼可讀性。標準程式的縮進應該是一個製表符(或幾個空格),形像一點的我們來看下文章開頭那張圖,或者一起來看下麵展示的這張圖,你看後就知道以後自己的代碼要怎麼樣書寫才讓人看了爽:

  不用說,大家都喜歡下麵的那種代碼吧。這隻是一個人的習慣問題,不過建議從開始做好,利人利已。有關於這方面的介紹,大家還可以參考:Clean up your Web pages with HTML TIDY

  四、外鏈你的CSS樣式和Javascript腳本

  頁面中寫入CSS樣式有很多種方法,有些直接將樣式放入頁面的“”中,這將是一個很不好的習慣,因為這樣不僅會搞亂我們的標記,而且這些樣式只適合這一個HTML頁面。所以我們需要將CSS單獨提出,保存在外部,這樣後面的頁面也可以鏈接到這些樣式,如果你頁面需要修改,我們也只需要修改樣式文件就可以。正如下圖所示:

  上面我們所說的只是樣式,其實javascript腳本也和CSS樣式是同一樣的道理。圖文並說,我最終想表達的意思是“在製作web頁面中,儘量將你的CSS樣式和javascript腳本單獨放在一個文件中,然後通過鏈接的方式引用這些文件,這樣做的最大好處是,方便你的樣式和腳本的管理與修改。”

  五、正確的標簽嵌套

  我們在寫HTML時總是需要標簽的層級嵌套來幫我們完成HTML的書寫,但這些HTML的嵌套是有一定的規則的,如果要細說的話,我們可能要用幾個章節來描述,那麼我今天這裡要說的是,我們在寫HTML時不應該犯以下這樣的超級錯誤:

  上圖的結構我們是常見的,比如說首頁的標題,那麼我們就應該註意了,不能把“

”放在“”標簽中,換句話說,就是不能把塊元素放在行內(inline)元素中。上面只是一個例子,只是希望大家在平時的製作中不應該犯這樣的超級錯誤。(web前端學習交流群:328058344 禁止閑聊,非喜勿進!)

 

  六、刪除不必要的標簽

  首先我們一起來看一個實例的截圖:

  上圖明顯是一個導航菜單的製作,在上圖的實例中:有一個“div#topNav”包住了列表“ul#bigBarNavigation”,而“div”和“ul”列表都是塊元素,加上“div”此處用來包“ul”根本就沒有起到任何作用。雖然“div”的出現給我們製作web頁面帶來了極大的好處,但我們也沒有必要到處這樣的亂用,不知道大家平時有沒有註意這樣的細節呢?我是犯這樣的錯誤,如果你也有過這樣的經歷,那麼從今天開始,從現在開始,我們一起努力來改正這樣的錯誤。

  有關於如何正確的使用標簽,大家感興趣的話可以點擊:Divitis: what it is, and how to cure it.

  七、使用更好的命名

  這裡所說的命名就是給你的頁面中相關元素定義類名或者是ID名,很多同學都有這類的習慣,比如說有一個元素字體是紅色的,給他加上“red”,甚至佈局都寫“left-sidebar”等,但是你有沒有想過,如果這個元素定義了“red”後,過幾天客戶要求使用“藍色”呢?或者又說,那時的“left-sidebar”邊欄此時不想放在左邊了,而是想放在右邊,那麼這樣一來我們前面的命名可以說是一點意義都沒有了,正如下麵的一個圖所示:

  那麼定義一個好的名就很得要了,不但自己能看懂你的代碼,而且別人也能輕鬆讀懂你的代碼,比如說一個好的類名和ID名“mainNav”、“subNav”、“footer”等,他能描述所包含的事情。不好的呢,比如前面所說的。

  如果想瞭解更多這方面的知識,可以點擊:

  1. Standardizing CSS class and id names
  2. CSS Tip #2: Structural Naming Convention in CSS
  3. CSS coding: semantic approach in naming convention
  4. CSS Naming Conventions and Coding Style

      八、離開版本的CSS

      我們在設計菜單時,有時要求所有菜單選項的文本全部大寫,大家平時是不是直接在HTML標簽中就將他們設置成大寫狀態呢?如果是的話,我覺得不好,如果為了將來具有更好的擴展性,我們不應該在HTML就將他們設置為全部大寫,更好的解決方法是通過CSS來實現:

  九、定義的類名或ID名

  大家平時製作web頁面時不知道有沒有碰到這樣的問題,就是整站下來,使用了相同的佈局和結構,換句話說,你在頁面的佈局上使用了相同的結構,相同的類名,但是突然你的上級主管說應客戶的需求,有一個頁面的佈局需要邊欄和主內容對換一下。此時你又不想為了改變一下佈局而修改整個頁面的結構,此時有一個很好的解決辦法,就是在你的這個頁面中的“”中定義一個特殊的類名或ID名,這樣來你就可以輕鬆的達到你所要的需求。這樣的使用,不知道大家使用過沒有:

  給“”定義獨特的類和ID名稱是非常強大的,不僅僅是為了像上面一樣幫你改變佈局,最主要的是有時他能幫你實現頁面中的某一部分達到特殊效果,而又不影響其它頁面的效果。為什麼有這樣的功能,不用我說我想大家都是知道的。因為每個頁面的內容都是“”的後代元素。

  如果想瞭解更多這方面的知識,可以點擊: 
1. ID Your Body For Greater CSS Control and Specificity 
2. Case study: Re-using styles with a body class

  十、驗證你的代碼

  人不免會出錯,我們編寫代碼的時候也是一樣的,你有時候總會小寫或多寫,比如說忘了關閉你的元素標簽,不記得寫上元素必須的屬性,雖然有一些錯誤不會給你帶來什麼災難性的後果,但也不免會給你帶來你無法意估的錯誤。所以建議您寫完代碼的時候去驗證你一下你的代碼。驗證後的代碼總是比不驗證的代碼強: 

  為一有效的驗證你的代碼,我們可以使用相關的工具或者瀏覽器的插件來幫助我們完成。如果你的代碼沒有任何錯誤,W3C驗證工具會在你們面前呈現綠色的文字,這樣讓你是無比的激動人心,因為再次證明瞭你寫的代碼經得起W3C的標準。

  如果想瞭解更多這方面的知識,可以點擊:

  1. The W3C Markup Validation Service
  2. XHTML-CSS Validator
  3. Free Site Validator (checks entire site, not just one page)

      十一、邏輯順序

      這是一個很少見的錯誤情況,因為我想大家寫頁面都不會把邏輯順序打亂,換句話說,如果可能的話,讓你的網站具有一個先後邏輯順序是最好的,比如說先寫頁頭,在寫頁體,最後寫頁腳。當然有時也會碰到特殊情況,如何頁腳部分在於我們代碼的邊欄以上,這可能是因為它最適合你的網站設計需求,這樣或許是可以理解的,但是如果你有別的方式實現,我們都應該把頁腳是放在一個頁面的最後,然後在通過特定的技術讓它達到你的設計需求:

  上面我們一起討論了多個如何讓你開始寫一個整潔的HTML代碼。從一個項目的開始,這一切都是非常容易的,但是如果需要你去修複一個現有的代碼,那多少都會有一定的難度。上面說這麼多主要是告訴您將要如何學習編寫一個良好的、整潔的HTML代碼,並且一直堅持這樣的編寫。希望讀完這篇文章後,在你的下一個項目中,你能從頭開始,堅持寫一個整潔的HTML代碼。希望大家喜歡這樣的教程。如果你有什麼好的經驗,希望與我們一起分享。


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 實現效果: 實現原理: // 步驟 // 1. 獲取事件源以及相關元素 // 2. 複製第一張圖片所在的li,添加到ul的最後面 // 3. 給ol添加li,ul中的個數-1個,並點亮第一個按鈕 // 4. 滑鼠放到ol的li上切換圖片 // 5. 添加定時器 // 6. 左右切換圖片(滑鼠放上去隱 ...
  • 前端分頁的Table配置函數 根據每行數據的一個欄位的值來改變行的背景色(class好像只能調用他本來預設的那幾個,很久之前寫的忘記了是不是這樣的) 這個是根據每行數據的一個欄位的值來是否禁用選擇框(我在之前項目需要做結算,已結算的和未結算的在一起,因此需要這個),formatter還可以寫別的函數 ...
  • 自己整理了一些關於前端這個行業面試題,好多都不會好難過,I NEED AV……. HTML&CSS 常用那幾種瀏覽器測試?有哪些內核(Layout Engine)? (Q1) 瀏覽器:IE,Chrome,FireFox,Safari,Opera。 (Q2) 內核:Trident,Gecko,Pres ...
  • 數據後端分頁排序,其實就是sql語句中oeder by做一些限制。 之前在寫sql語句中的order by是寫死,既然要寫活,就要傳參數到後臺。 之前講到bootstrapTable的queryParams可以自定義參數,這裡就只需要找下點擊需要排序列的欄位名就行 this.sortName 是排序 ...
  • Charles版本:4.0.2 一、開始 連接方式 方法一:電腦和手機連接同一個wifi 方法二:電腦使用網線連接網路,手機通過USB連接電腦 二、過濾網路請求 1.簡單過濾 在Sequence模式下,就可以看到Filter,輸入要過濾的關鍵字即可。 2.長期特定的網路封包 路徑:Proxy Rec ...
  • Generator 函數是協程在 ES6 的實現,最大特點就是可以交出函數的執行權(即暫停執行)參考鏈接:http://www.ruanyifeng.com/blog/2015/04/generator.html{ // genertaor基本定義 有一個星號有一個yield let tell = ... ...
  • 前幾日聽到一句生猛與激勵並存,可怕與尷尬同在,最無奈也無解的話:“90後,你的中年危機已經殺到”。這令我很受觸動。顯然,這有些誇張了,但就目前這日復一日的庸碌下去,眨眼的功夫,那情形就會在這骨感的現實面前,悄然的被顯現。所以,越發體驗到,當必要有計劃的去做,去寫,去玩,去嗨,利用好這荷爾蒙分泌還算旺 ...
  • 主要看一下購物車的計算過程 實現後的基本樣式 # 具體代碼 主要看shops頁面, 前提:獲取基本的數據,由於數據太長,還請下載項目後查看,github地址:https://github.com/cxy-js/wechat-shop + shops頁面data數據 ``` data: { shops ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...