摘要:頁(yè)面名稱月影功能模塊,請(qǐng)?jiān)谀K之間加入注釋,中英文不做要求活動(dòng)規(guī)則開(kāi)始活動(dòng)規(guī)則活動(dòng)規(guī)則結(jié)束自定義函數(shù)。參考頁(yè)面前端規(guī)范
web前端開(kāi)發(fā)規(guī)范的意義
提高團(tuán)隊(duì)的協(xié)作能力
提高代碼的復(fù)用利用率
可以寫(xiě)出質(zhì)量更高,效率更好的代碼
為后期維護(hù)提供更好的支持
一、命名規(guī)則命名使用英文語(yǔ)義化,禁止使用特殊字符,禁止使用拼音,禁止使用中英文混合!
項(xiàng)目、目錄、html/css/js等文件命名全部采用小寫(xiě)方式, 以下劃線分隔。eg:my_project_name
html/css/js文件名一一對(duì)應(yīng)參考微信小程序.eg: login.html、login.css、login.js
class、圖片、視頻、音頻采用小寫(xiě)方式,以下劃線或中劃線分隔;eg:btn-play或btn_play
id可采用駝峰命名;eg:play或playGame
變量名采用小寫(xiě)方式, 以下劃線分隔;應(yīng)為名詞,eg: product,product_detail
常量采用全大寫(xiě)方式, 以下劃線分隔;eg:MAX_COUNT
函數(shù)名采用駝峰命名,以動(dòng)詞開(kāi)始。 getName(), 返回類型是布爾類型,一般以is開(kāi)頭,eg: isEnable();
變量和函數(shù)命名,不要擔(dān)心長(zhǎng)度,一定要語(yǔ)義化合乎邏輯。eg: saveImageToPhotosAlbum()
變量和函數(shù)名不能以數(shù)字開(kāi)始,不能使用保留字;jQuery對(duì)象以"$"符號(hào)開(kāi)頭,私有變量以"_"開(kāi)頭。
二、注釋頁(yè)面頭部需要添加制作時(shí)間等信息。
頁(yè)面名稱
功能模塊,請(qǐng)?jiān)谀K之間加入注釋,中英文不做要求:
......活動(dòng)規(guī)則{{index+1}}{{item}}
/* rules start*/ .rules-wrapper{...} .rules-title{...} .rules-list{...} .rules-item{...} .rules-num{...} .rules-text{...} /* rules end*/
自定義函數(shù)。請(qǐng)注明函數(shù)的調(diào)用方式,包括函數(shù)的用途、參數(shù)類型等。
/** * JQ公告滾動(dòng) 封裝函數(shù) * 參數(shù)說(shuō)明 * @obj : 動(dòng)畫(huà)的節(jié)點(diǎn),本例中是ul * @top : 動(dòng)畫(huà)的高度,本例中是-35px;注意向上滾動(dòng)是負(fù)數(shù) * @time : 動(dòng)畫(huà)的速度,即完成動(dòng)畫(huà)所用時(shí)間,本例中是500毫秒,即marginTop從0到-35px耗時(shí)500毫秒 * function : 回調(diào)函數(shù),每次動(dòng)畫(huà)完成,marginTop歸零,并把此時(shí)第一條信息添加到列表最后; * */ function noticeUp(obj,top,time) { $(obj).animate({ marginTop: top }, time, function () { $(this).css({marginTop: "0"}).find(":first").appendTo(this); }) } $(function () { // 調(diào)用 公告滾動(dòng)函數(shù) setInterval("noticeUp(".notice ul","-35px",500)", 2000); });三、HTML規(guī)范 1、頁(yè)面頭部
文檔類型統(tǒng)一使用html5的doctype:
lang屬性統(tǒng)一使用en,特殊場(chǎng)景特殊處理
字符編碼統(tǒng)一指定為"UTF-8"
頁(yè)面標(biāo)題(Title): 頁(yè)面名稱-產(chǎn)品中文全稱-官方網(wǎng)站-騰訊游戲-產(chǎn)品slogan,28個(gè)漢字以內(nèi)
頁(yè)面關(guān)鍵字(Keywords): Keywords為產(chǎn)品名、專題名、專題相關(guān)名詞,之間用英文半角逗號(hào)隔開(kāi)
頁(yè)面描述(Description) :不超過(guò)150個(gè)字符,描述內(nèi)容要和頁(yè)面內(nèi)容相關(guān)。
IE兼容模式
移動(dòng)端禁止縮放
PC端頭部示范:
抓金角銀角大王每周末放送裝備 - 地下城與勇士官方網(wǎng)站 - 騰訊游戲
移動(dòng)端頭部示范:
2、HTML標(biāo)簽頁(yè)面名稱-產(chǎn)品中文全稱-官方網(wǎng)站-騰訊游戲-產(chǎn)品slogan
標(biāo)簽必須合法且閉合、嵌套正確,標(biāo)簽名需小寫(xiě),不要使用HTML5已經(jīng)廢棄的標(biāo)簽。eg:b、 em
自定義標(biāo)簽需要符合語(yǔ)義化,必須小寫(xiě)
標(biāo)簽的自定義屬性以data-開(kāi)頭,后面跟小寫(xiě)單詞,多單詞使用下劃線連接如:
縮進(jìn)使用Tab鍵不要使用空格鍵,webstorm中使用快捷鍵command+option+L(Ctrl+Alt+L)對(duì)齊
引入CSS 和 JavaScript 文件時(shí)一般不需要指定 type 屬性,因?yàn)?text/css 和 text/javascript 分別是它們的默認(rèn)值。css放在上面head中,JavaScript放在body下面緊臨
標(biāo)簽中屬性必須添加雙引號(hào)(非單引號(hào)),應(yīng)該按照特定的順序出現(xiàn)以保證易讀性;屬性順序
class
id
name
data-*
src, for, type, href, value , max-length, max, min, pattern
placeholder, title, alt
aria-*, role
required, readonly, disabled
class是為高可復(fù)用組件設(shè)計(jì)的,所以應(yīng)處在第一位;
id更加具體且應(yīng)該盡量少使用,所以將它放在第二位。
boolean屬性指不需要聲明取值的屬性,XHTML需要每個(gè)屬性聲明取值,但是HTML5并不需要;boolean屬性的存在表示取值為true,不存在則表示取值為false。
在編寫(xiě)HTML代碼時(shí),需要盡量避免多余的父節(jié)點(diǎn);很多時(shí)候,需要通過(guò)迭代和重構(gòu)來(lái)使HTML變得更少。刪除無(wú)意義的空標(biāo)簽,不要用標(biāo)簽名來(lái)設(shè)置樣式
三、CSS規(guī)范 1、CSS引入方式
一般情況使用外部樣式表:統(tǒng)一使用link標(biāo)簽,少用@import(原生import有加載性能問(wèn)題),sass、less、vue.js等文件使用import命令除外(因?yàn)樽罱K前端構(gòu)建工具會(huì)將引入文件編譯成一個(gè)css文件)。
個(gè)別情況使用內(nèi)部樣式表:頁(yè)面非常簡(jiǎn)單且樣式非常少的多帶帶頁(yè)面,如:純圖片海報(bào)頁(yè)面,純文字協(xié)議頁(yè)面
特殊情況才使用行內(nèi)樣式:如:js動(dòng)態(tài)獲取滾動(dòng)高度:
style="height:{{scroll_height}}px;"2、CSS代碼風(fēng)格
css頭部統(tǒng)一加上@charset聲明,如下: @charset "utf-8";
禁止使用ID選擇器來(lái)定義元素樣式
禁止使用層級(jí)過(guò)深的選擇器,最多3級(jí)。eg: ul.pro_list > li > p
除非是樣式reset需要,禁止對(duì)純?cè)剡x擇器設(shè)置特定樣式,避免樣式污染
PC端和移動(dòng)端通用reset示例
body,html{width:100%;min-height:100%;/*移動(dòng)端*/-webkit-user-select:none;user-select:none/* 禁止選中文本(如無(wú)文本選中需求,此為必選項(xiàng)) */} body{background-color:#fff;color:#333;font-size:16px;font-family:PingFangSC-Regular} a,body,button,dd,div,dl,dt,h1,h2,h3,h4,h5,h6,img,input,li,ol,p,select,table,td,textarea,th,tr,ul{box-sizing:border-box;margin:0;padding:0;border:0} button,input,select,textarea{outline:0;font-size:100%} h1,h2,h3,h4,h5,h6{font-size:100%} li,ol,ul{list-style:none} a{cursor:pointer} a,a:hover{text-decoration:none} ::-webkit-input-placeholder{color:#B0B0B0} :-moz-placeholder{color:#B0B0B0} ::-moz-placeholder{color:#B0B0B0} :-ms-input-placeholder{color:#B0B0B0}
媒體查詢順序由大到小
@media only screen and (max-width: 1080px), only screen and (max-device-width:1080px) {} @media only screen and (max-width: 960px), only screen and (max-device-width:960px) { }
縮進(jìn) 使用soft tab(4個(gè)空格)
分號(hào) 每個(gè)屬性聲明末尾都要加分號(hào)。
引號(hào) 最外層統(tǒng)一使用雙引號(hào);url的內(nèi)容要用引號(hào);屬性選擇器中的屬性值需要引號(hào)。
空格
以下幾種情況不需要空格:
屬性名后 多個(gè)規(guī)則的分隔符","前 !important "!"后 屬性值中"("后和")"前 行末不要有多余的空格以下幾種情況需要空格:
屬性值前 選擇器">", "+", "~"前后 "{"前 !important "!"前 @else 前后 屬性值中的","后 注釋"/*"后和"*/"前
CSS屬性的聲明順序與性能無(wú)關(guān),但是為了易于閱讀統(tǒng)一規(guī)范 按如下順序
.declaration-order { /* 定位 */ position: absolute; top: 0; right: 0; bottom: 0; left: 0; z-index: 100; float: right; /* 盒模型 */ display: block; width: 100px; height: 100px; /* 外觀 */ border: 1px solid #e5e5e5; border-radius: 3px; background-color: #f5f5f5; /* 排版 */ color: #333; text-align: center; font: normal 13px "Helvetica Neue", sans-serif; line-height: 1.5; /*透明度*/ opacity: 1; }
采用flex布局
項(xiàng)目上線前先添加兼容性前綴 Autoprefixer,然后壓縮代碼
2、CSS框架阿里圖標(biāo)庫(kù)
css3 動(dòng)畫(huà)庫(kù)
Sass和Compass
四、Javascript規(guī)范 1、Javascript引入方式
一般情況使用外部js:統(tǒng)一使用
優(yōu)點(diǎn):
1.頁(yè)面代碼跟js代碼實(shí)現(xiàn)有效分離,降低耦合度
2.便于代碼的維護(hù)和擴(kuò)展
3.有利于代碼的復(fù)用
內(nèi)部js: 在直接在頁(yè)面的標(biāo)簽內(nèi)寫(xiě)js代碼,vue項(xiàng)目多用此方式
優(yōu)點(diǎn):內(nèi)部js代碼較為集中,與頁(yè)面結(jié)構(gòu)的實(shí)現(xiàn)代碼耦合度較低,比較便于維護(hù)
缺點(diǎn):js代碼僅限于當(dāng)前頁(yè)面的使用,代碼無(wú)法被多個(gè)頁(yè)面重復(fù)使用,導(dǎo)致代碼冗余度較高
行內(nèi)js: 直接嵌套在html的語(yǔ)句
開(kāi)發(fā)中不推薦這種方式2、Javascript代碼編寫(xiě)
1.因?yàn)檫@種方式跟頁(yè)面結(jié)構(gòu)代碼耦合性太強(qiáng)了,后期維護(hù)很不方便,
2.而且這種方式在開(kāi)發(fā)過(guò)程中會(huì)導(dǎo)致產(chǎn)生很多的冗余代碼
目前只在使用了webpack等打包工具的時(shí)候才能用ES6語(yǔ)法,所以一般項(xiàng)目還是采用ES5。
一條語(yǔ)句通常以分號(hào)作為結(jié)束符。
變量必須先聲明再使用,即在每個(gè)作用域開(kāi)始前聲明這些變量。
函數(shù)聲明使用表達(dá)式方式
// bad const fn= function () { }; // good function fn() { }
除了三目運(yùn)算,if,else等禁止簡(jiǎn)寫(xiě)
3、Javascript框架以及插件console.log(name); // 不推薦的書(shū)寫(xiě) if (true) alert(name); console.log(name); // 不推薦的書(shū)寫(xiě) if (true) alert(name); console.log(name) // 正確的書(shū)寫(xiě) if (true) { alert(name); }使用三元運(yùn)算符,但不要濫用
(type==1?(agagin==1?"再售":"已售"):"未售") // 再多就不要用三元運(yùn)算符!
必須掌握jQuery和Vue;
工作中jQuery一般用在維護(hù)老項(xiàng)目,新項(xiàng)目一般都采用Vue。其他框架稍作了解,遇到了去查文檔。(業(yè)余時(shí)間可以自學(xué)angular和React以及你喜歡的框架)
移動(dòng)端:Mint UI
PC端官網(wǎng)、商城: Element
PC端后臺(tái)管理系統(tǒng):layui或者 iView
輪播圖:swiper
滾動(dòng)插件:iScroll 或 better-scroll
響應(yīng)式官網(wǎng): 盡量使用媒體查詢自定義樣式,不推薦使用bootstrap(因?yàn)槲也幌矚g記那一堆類名^_^)。
將常用的功能封裝在util.js中,大家共同完善;方便以后使用。
參考
Code Guide by @AlloyTeam
頁(yè)面前端規(guī)范
文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請(qǐng)注明本文地址:http://specialneedsforspecialkids.com/yun/53691.html
摘要:年,和前端開(kāi)發(fā)者與應(yīng)用程序前端開(kāi)發(fā)者之間產(chǎn)生了巨大的分歧。開(kāi)發(fā)最常見(jiàn)的解決方案有手機(jī)和平板的原生應(yīng)用程序桌面應(yīng)用程序桌面應(yīng)用程序原生技術(shù)最后,前端開(kāi)發(fā)者可以從瀏覽器開(kāi)發(fā)中學(xué)習(xí)到,編寫(xiě)代碼不需要考慮瀏覽器引擎的限制。 前端開(kāi)發(fā)者手冊(cè)2019 Cody Lindley 編著 原文地址 本手冊(cè)由Frontend Masters贊助,通過(guò)深入現(xiàn)代化的前端工程課程來(lái)提高你的技能。 下載:PDF ...
摘要:年,和前端開(kāi)發(fā)者與應(yīng)用程序前端開(kāi)發(fā)者之間產(chǎn)生了巨大的分歧。開(kāi)發(fā)最常見(jiàn)的解決方案有手機(jī)和平板的原生應(yīng)用程序桌面應(yīng)用程序桌面應(yīng)用程序原生技術(shù)最后,前端開(kāi)發(fā)者可以從瀏覽器開(kāi)發(fā)中學(xué)習(xí)到,編寫(xiě)代碼不需要考慮瀏覽器引擎的限制。 前端開(kāi)發(fā)者手冊(cè)2019 Cody Lindley 編著 原文地址 本手冊(cè)由Frontend Masters贊助,通過(guò)深入現(xiàn)代化的前端工程課程來(lái)提高你的技能。 下載:PDF ...
摘要:年,和前端開(kāi)發(fā)者與應(yīng)用程序前端開(kāi)發(fā)者之間產(chǎn)生了巨大的分歧。開(kāi)發(fā)最常見(jiàn)的解決方案有手機(jī)和平板的原生應(yīng)用程序桌面應(yīng)用程序桌面應(yīng)用程序原生技術(shù)最后,前端開(kāi)發(fā)者可以從瀏覽器開(kāi)發(fā)中學(xué)習(xí)到,編寫(xiě)代碼不需要考慮瀏覽器引擎的限制。 前端開(kāi)發(fā)者手冊(cè)2019 Cody Lindley 編著 原文地址 本手冊(cè)由Frontend Masters贊助,通過(guò)深入現(xiàn)代化的前端工程課程來(lái)提高你的技能。 下載:PDF ...
摘要:特意對(duì)前端學(xué)習(xí)資源做一個(gè)匯總,方便自己學(xué)習(xí)查閱參考,和好友們共同進(jìn)步。 特意對(duì)前端學(xué)習(xí)資源做一個(gè)匯總,方便自己學(xué)習(xí)查閱參考,和好友們共同進(jìn)步。 本以為自己收藏的站點(diǎn)多,可以很快搞定,沒(méi)想到一入?yún)R總深似海。還有很多不足&遺漏的地方,歡迎補(bǔ)充。有錯(cuò)誤的地方,還請(qǐng)斧正... 托管: welcome to git,歡迎交流,感謝star 有好友反應(yīng)和斧正,會(huì)及時(shí)更新,平時(shí)業(yè)務(wù)工作時(shí)也會(huì)不定期更...
摘要:解決思路服務(wù)器端渲染服務(wù)器端和前端公用同一個(gè)應(yīng)用,然后通過(guò)構(gòu)建工具及配置,確定哪些組件需要再服務(wù)器端渲染,那些組件需要再客戶端渲染。服務(wù)器端渲染,由框架與構(gòu)建工具配合,并依據(jù)一定的項(xiàng)目結(jié)構(gòu)和編碼方式,共同運(yùn)行。 分離 為什么需要 前后端分離、web服務(wù)器與static服務(wù)器分離: 前端與后端耦合 (需求) 自動(dòng)化、工程化的構(gòu)建前端的代碼 (基礎(chǔ)條件) 模塊化、組件化,項(xiàng)目共享代碼 (...
閱讀 1292·2023-04-26 01:03
閱讀 1907·2021-11-23 09:51
閱讀 3299·2021-11-22 15:24
閱讀 2662·2021-09-22 15:18
閱讀 1010·2019-08-30 15:55
閱讀 3458·2019-08-30 15:54
閱讀 2233·2019-08-30 15:53
閱讀 2387·2019-08-30 15:44