十位大牛做出的web前端開發規範總結

来源:https://www.cnblogs.com/lyy-1/archive/2020/06/30/13214319.html
-Advertisement-
Play Games

Web前端作為開發團隊中不可或缺的一部分,需要按照相關規定進行合理編寫(一部分不良習慣可能給自己和他人造成不必要的麻煩)。不同公司不同團隊具有不同的規範和文檔。下麵是根據不同企業和團隊的要求進行全面詳細的整理結果。備註:實際開發請以本公司的規範為標準。 A.基本原則 符合web標準(UTF-8,HT ...


Web前端作為開發團隊中不可或缺的一部分,需要按照相關規定進行合理編寫(一部分不良習慣可能給自己和他人造成不必要的麻煩)。不同公司不同團隊具有不同的規範和文檔。下麵是根據不同企業和團隊的要求進行全面詳細的整理結果。備註:實際開發請以本公司的規範為標準。

A.基本原則

符合web標準(UTF-8,HTML5),語義化html(HTML5新增要求,減少div和span等無特定語義的標簽使用),結構表現行為分離(HTML-CSS-JS代碼分離,不同行為代碼高內聚低耦合),相容性優良(早期版本瀏覽器相容,移動端和PC端設備相容).頁面性能方面(減少請求次數,例如使用精靈圖和sass語法),代碼要求簡潔明瞭有序,儘可能的減小伺服器負載,保證最快的解析速度(減小repaint和reflow).

B.文件命名規範

1、html,css,js,lib,images文件均存放至項目的目錄中。如果使用相關前端框架,根據框架的文件格式進行合理佈局。

2、所有文件夾及文件使用英文命名(避免使用中文路徑)。

3、html文件:入口文件使用index.html。如果有對應的設計組設計原稿,需要將對應的設計稿和html文件命名一致併合理存放。

4、css文件命名:尾碼.css。通用initial.css,初始化base.css,首頁index.css,其他頁面按照對應的html命名。

5、Js文件命名:英文命名,尾碼.js.通用common.js,初始化base.js。 其他頁面按照對應的html命名。

自己是一個五年的前端工程師

這裡推薦一下我的前端學習交流qq群: 851231348,裡面都是學習前端的,如果你想製作酷炫的網頁,想學習編程。從最基礎的HTML+CSS+JS【炫酷特效,游戲,插件封裝,設計模式】到移動端HTML5的項目實戰的學習資料都有整理,送給每一位前端小伙伴,有想學習web前端的,或是轉行,或是大學生,還有工作中想提升自己能力的,正在學習的小伙伴歡迎加入。

C.HTML規範

1、文檔類型聲明及編碼:統一為html5聲明類型。書寫時利用IDE實現層次分明的縮進(預設縮進4空格)。

2、非特殊情況下CSS文件放在body部分標簽後。非特殊情況下大部分JS文件放在標簽尾部(如果需要界面未載入前執行的代碼可以放在head標簽後)避免行內JS和CSS代碼。

3、所有編碼需要遵循html(XML)標準,標簽&屬性&屬性命名必須由小寫字母及下劃線數字組成,且所有標簽必須閉合,包括br(),hr()等。屬性值用雙引號。

4、引入JS庫文件,文件名須包含庫名稱及版本號及是否為壓縮版,比如jquery-1.4.1.min.js。引入插件,文件名格式為庫名稱+插件名稱,比如jQuery.bootstrap.js。

5、書寫頁面過程中,請考慮向後擴展性。class&id參見css書寫規範.

6、需要為html元素添加自定義屬性的時候,首先要考慮下有沒有預設的已有的合適標簽去設置,如果沒有,可以使用須以"data-"為首碼來添加自定義屬性,避免使用"data:"等其他命名方式。

7、語義化html,如標題根據重要性用h*(同一頁面只能有一個h1),段落標記用p,列表用ul,內聯元素中不可嵌套塊級元素。

8、儘可能減少div多層級嵌套。

9、書寫鏈接地址時,必須避免重定向,例如:href="http://myVue.com/",即須在URL地址後面加上“/”;

10、在頁面中儘量避免使用style屬性,即style="…"。

11、必須為含有描述性表單元素(input,textarea)添加label,如姓名:須寫成:姓名:

12、能以背景形式呈現的圖片,儘量寫入css樣式中。

13、重要圖片必須加上alt屬性。給重要的元素和截斷的元素加上title。

14、給區塊代碼及重要功能(比如迴圈)加上註釋,方便後臺添加功能。

15、特殊符號使用:儘可能使用代碼替代:比如<(<)&>(>)&空格()&»(»)等等。

D.CSS規範

1、編碼規範為utf-8。

2、協作開發及分工:i會根據各個模塊,同時根據頁面相似程式,事先寫**體框架文件,分配給前端人員實現內部結構&表現&行為。共用css文件base.css由i書寫,協作開發過程中,每個頁面請務必都要引入,此文件包含reset及頭部底部樣式,此文件不可隨意修改。

3、class與id的使用:id是唯一的並是父級的,class是可以重覆的並是子級的,所以id僅使用在大的模塊上,class可用在重覆使用率高及子級中。id原則上都是由我分發框架文件時命名的,為JS預留鉤子的除外。

4、為JS預留鉤子的命名,請以js_起始,比如:js_hide,js_show。

5、class與id命名:大的框架命名比如header/footer/wrapper/left/right之類的在2中由i統一命名.其他樣式名稱由小寫英文&數字&來組合命名,如i_comment,fontred,width200。避免使用中文拼音,儘量使用簡易的單片語合。總之,命名要語義化,簡明化

6、規避class與id命名(此條重要,若有不明白請及時與i溝通):a)通過從屬寫法規避,示例見d。b)取父級元素id/class命名部分命名,示例見d。c)重覆使用率高的命名,請以自己代號加下劃線起始,比如i_clear。d)a,b兩條,適用於在2中已建好框架的頁面,如,要在2中已建好框架的頁面代碼中加入新的div元素,按a命名法則:...,樣式寫法:#mainnav.firstnav{.......}按b命名法則:...,樣式寫法:.main_firstnav{.......}

7、css屬性書寫順序,建議遵循:佈局定位屬性-->自身屬性-->文本屬性-->其他屬性.此條可根據自身習慣書寫,但儘量保證同類屬性寫在一起.屬性列舉:佈局定位屬性主要包括:display&list-style&position(相應的top,right,bottom,left)&float&clear&visibility&overflow;

自身屬性主要包括:width&height&margin&padding&border&background。

文本屬性主要包括:color&font&text-decoration&text-align&vertical-align&white-space&

其他&content。

8、書寫代碼前,提高樣式重覆使用率。

9、充分利用html自身屬性及樣式繼承原理減少代碼量,例如:

即可實現日期居右顯示

ul.list li {

position:relative

}

ul .list li span {

position:absolute;right:0

}

10、樣式表中中文字體名,請務必轉碼成unicode碼,以避免編碼錯誤時亂碼。

11、背景圖片請儘可能使用精靈圖技術,減小http請求,考慮到多人協作開發,精靈圖按模塊製作。

12、使用table標簽時(儘量避免使用table標簽),請不要用width/height/cellspacing/cellpadding等table屬性直接定義表現,應儘可能的利用table自身私有屬性分離結構與表現,如thead,tr,th,td,tbody,tfoot,colgroup,scope。(cellspaing及cellpadding的css控制方法:table{border:0。margin:0。border-collapse:collapse。}tableth,tabletd{padding:0。},base.css文件中我會初始化表格樣式)

13、杜絕使用相容ie8。

14、用png圖片做圖片時,要求圖片格式為png-8格式,若png-8實在影響圖片質量或其中有半透明效果,請為ie6單獨定義背景:_background:none。_filter:progid:DXImageTransform.Microsoft.AlphaImageLoader(sizingMethod=crop,src=’img/bg.png’)。

15、避免相容性屬性的使用,比如text-shadow||css3的相關屬性。

16、減少使用影響性能的屬性,比如position:absolute||float。

17、必須為大區塊樣式添加註釋,小區塊適量註釋。

18、代碼縮進與格式:建議單行書寫,可根據自身習慣,後期優化會統一處理。

E. JS書寫規範

1、文件編碼統一為utf-8,書寫過程過,每行代碼結束必須有分號。原則上所有功能均根據XXX項目需求原生開發,以避免網上down下來的代碼造成的代碼污染(沉冗代碼||與現有代碼衝突||...)。

2、庫引入:原則上僅引入jQuery庫,若需引入第三方庫,須與團隊其他人員討論決定。

3、變數命名:駝峰式命名.原生JS變數要求是純英文字母,首字母須小寫,如myVue。jQuery變數要求首字元為'_',其他與原生JS規則相同,如:_myVue。另,要求變數集中聲明,避免全局變數.

4、類命名:首字母大寫,駝峰式命名.如MyVue。

5、函數命名:首字母小寫駝峰式命名.如myVue()。

6、命名語義化,儘可能利用英文單詞或其縮寫。

7、儘量避免使用存在相容性及消耗資源的方法或屬性,比如eval_r()&innerText。

8、後期優化中,JS非註釋類中文字元須轉換成unicode編碼使用,以避免編碼錯誤時亂碼顯示。

9、代碼結構明瞭,加適量註釋.提高函數重用率。

10、註重與html分離,減小reflow,註重瀏覽器性能.

F.圖片規範

1、所有頁面元素類圖片均放入img文件夾,測試用圖片放於demo文件夾。

2、圖片格式gif/png/jpg。提倡使用webp文件格式,使用軟體進行圖片壓縮。

3、命名全部用小寫英文字母||數字||_的組合,其中不得包含漢字||空格||特殊字元;儘量用易懂的辭彙,便於團隊其他成員理解。另,命名分頭尾兩部分,用下劃線隔開,比如ad_left01.gif||btn_submit.gif。

4、在保證視覺效果的情況下選擇最小的圖片格式與圖片質量,以減少載入時間。5、儘量避免使用半透明的png圖片(若使用,請參考css規範相關說明)。

6、運用css精靈圖技術集中小的背景圖或圖標,減小頁面http請求,但註意,請務必在對應的精靈圖psd源圖中劃參考線,並保存至img目錄下

G.測試規範

開發及測試工具約定建議使用Aptana-Sublime-Vim-WebStrom,亦可根據自己喜好選擇,但須遵循如下原則:

1、不可利用IDE的視圖模式'畫'代碼。

2、不可利用IDE生成相關功能代碼。

3、編碼必須格式化,比如縮進。測試工具:前期開發僅測試FireFox&IE6&IE7&IE8,後期優化時加入Opera&Chrome&Safari。建議測試順序:FireFox-->IE-->Opera-->Chrome-->Safari。

自己是一個五年的前端工程師


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

-Advertisement-
Play Games
更多相關文章
  • 前言: 最近在整理自己的技術棧,收集了一些自己認為比較重要的知識點分享給大家。 runloop 1. iOS中觸摸事件傳遞和響應原理 2. 為什麼只有主線程的runloop是開啟的 3. 為什麼只在主線程刷新UI 4. PerformSelector和runloop的關係 KVO 1. 實現原理 2 ...
  • 為了不顯示標題欄,所以主題使用了 NoActionBar,這也直接導致選項菜單無處顯示,添加一個ToolBar,自定義標題欄。添加menu資源文件夾,添加menu文件,在activity創建的時候創建menu,重載onCreateOptionsMenu,添加菜單項點擊事件onOptionsItemS... ...
  • 切記,一定要先綁定viewpage再添加tab,否則tab的標題無法正常顯示出來。setupwithviewpager會在後臺做很多事,比如清空tabs等,為了更安全的顯示我們的tabs,在綁定viewpager之後,先清空一下tabs再添加 ...
  • 迴圈引用對象序列化?這似乎是一個老生常談的問題,但是99.9%的人所謂的『解決』,都是在『逃避』這個問題。 ...
  • 項目搭建時間:2020-06-29 本章節:講述基於vue/cli, 項目的基礎搭建。 本主題講述了vue+element-ui JYAdmin 後臺管理系統模板-集成方案,從零到一的手寫搭建全過程。 該項目不僅是一個持續完善、高效簡潔的後臺管理系統模板,還是一套企業級後臺系統開發集成方案,致力於打 ...
  • //商品列表 var id=@Session["Id"]; function load() { $.ajax({ url: "http://localhost:52975/api/Goods/GetGood/"+id, type: "post", dataType: "json", success: ...
  • 在前面隨筆《循序漸進VUE+Element 前端應用開發(12)--- 整合ABP框架的前端登錄處理》介紹了一個系統最初接觸到的前端登錄處理的實現,但往往對整個系統來說,一般會有很多業務對象,而每個業務對象的API介面又有很多,不過簡單來說也就是常規的增刪改查,以及一些自定義的介面,通用都比較有規律... ...
  • 摘要 頁面報錯bug是常有的事,我們可以根據錯誤bug提示關鍵性的去修複問題。依稀的記得之前有個小伙伴詢問了一個js異常的錯誤bug:Uncaught TypeError: xxx is not a function。這個錯誤問題定位處理起來很快,但是我卻不知其所以然。為了弄清楚報錯的深層面原因,去 ...
一周排行
    -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.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...