項(xiàng)目從兩塊分析
流程分析
- 盲目:從拿到頁(yè)面開(kāi)始沒(méi)有仔細(xì)的評(píng)估項(xiàng)目難度。一開(kāi)始以為自己可以包攬項(xiàng)目的三個(gè)頁(yè)面,最后中途,將一個(gè)頁(yè)面丟個(gè)同事。盲目,沒(méi)有認(rèn)真分析。
- 方式:項(xiàng)目開(kāi)發(fā)的時(shí)候,沒(méi)有仔細(xì)的觀察項(xiàng)目,給出合理的開(kāi)發(fā)時(shí)間和安排,所以導(dǎo)致在開(kāi)發(fā)期間有大量的事件浪費(fèi)。
- 被動(dòng):開(kāi)發(fā)過(guò)程中,過(guò)于依賴(lài)后臺(tái)的數(shù)據(jù),是的開(kāi)發(fā)過(guò)程特別的被動(dòng)。
- 不獨(dú)立:開(kāi)發(fā)的時(shí)候,有很強(qiáng)的依賴(lài)心,沒(méi)有自己認(rèn)真的去解決問(wèn)題。解決問(wèn)題的能力有待提高。
- 溝通:在開(kāi)發(fā)過(guò)程中,跟后臺(tái)的配合,和同事的配合,不夠熟練。溝通成本很大,同時(shí)浪費(fèi)很大的成本。
- 測(cè)試:大部分情況,都是好多的小細(xì)節(jié)都沒(méi)有注意到,是的花費(fèi)很長(zhǎng)的時(shí)間,尋找bug。線上的代碼也是各種胡亂的改。是的代碼有很大問(wèn)題。
- 格式: 代碼書(shū)寫(xiě)的格式,有比較大的問(wèn)題,使得代碼和亂。沒(méi)有規(guī)律。
登錄頁(yè)面
- 具體分析
- 首先是沒(méi)有做好用戶(hù)的友好:5s消失。頁(yè)面搭的也有一定問(wèn)題,就是結(jié)構(gòu)沒(méi)有提前做好導(dǎo)致后來(lái)還要該結(jié)構(gòu)代碼。
- 代碼處理,沒(méi)有提前做好,過(guò)于被動(dòng),氣場(chǎng)過(guò)低。好多東西不主動(dòng)去寫(xiě),遺留下來(lái)很多問(wèn)題。如,手機(jī)號(hào)碼都沒(méi)有提前做好判斷。
- 頁(yè)面優(yōu)化。對(duì)于安卓和ios的差異還是需要仔細(xì)調(diào)節(jié)。事件綁定的跳轉(zhuǎn)出現(xiàn)很大的問(wèn)題,zepto的點(diǎn)擊現(xiàn)在一直沒(méi)有用好,還是用的是原生的代碼。頁(yè)面與前端的配合,沒(méi)有提前溝通號(hào),導(dǎo)致最后對(duì)樣式有很大的改動(dòng)。
經(jīng)驗(yàn)吸收
- 治療ios閃屏的。
*{ -webkit-tap-highlight-color: rgba(0, 0, 0, 0); -webkit-tap-highlight-color: transparent; }
- 手機(jī)端開(kāi)發(fā)的常用mate標(biāo)簽
<meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=0"> <meta charset="utf-8"> <meta content="no-cache,must-revalidate" http-equiv="Cache-Control"> <meta content="no-cache" http-equiv="pragma"> <meta content="0" http-equiv="expires"> <meta content="telephone=no, address=no" name="format-detection"> <meta name="apple-mobile-web-app-capable" content="yes"> <meta name="apple-mobile-web-app-status-bar-style" content="black-translucent">
- 模擬回退
function pushHistory(){ var state = { title: 'title', url: '#' }; window.history.pushState(state, 'title', '#'); } window.addEventListener('popstate', function(evt) { if($('.forget_password').css("display") == 'block'){ $('.item').hide(); $('.login').show(); } else if($('.new_password').css("display") == 'block'){ $('.item').hide(); $('.login').show(); } })
- 手機(jī)號(hào)判斷
var telReg_1 =
(/^(0|86|17951)?(13[0-9]|15[012356789]|17[678]|18[0-9]|14[57])[0-9]{8}$/).test(username_1);
5. 密碼格式判斷
```
var password1 = $('.new_password .password1').val().replace(/\s+/g,"");
var password2 = $('.new_password .password1').val().replace(/\s+/g,"");
```
```
字符,數(shù)字,字母,十到十六位:((?=.*\d)(?=.*\D)|(?=.*[a-zA-Z])(?=.*[^a-zA-Z]))^.{8,16}
$解釋?zhuān)?^.{8,16}$ # 密碼長(zhǎng)度為8~16位
((?=.*\d)(?=.*\D)|(?=.*[a-zA-Z])(?=.*[^a-zA-Z])) # 數(shù)字、字母、符號(hào)至少包含兩種。
數(shù)字、字母、字符至少包含兩種,可分為4種情況:
數(shù)字字母,數(shù)字符號(hào),字母符號(hào),數(shù)字字母符號(hào)
(?=.*\d)(?=.*\D) #必須包含數(shù)字和非數(shù)字(包括:數(shù)字字母,數(shù)字符號(hào),數(shù)字字母符號(hào))
|(?=.*[a-zA-Z])(?=.*[^a-zA-Z]) #或者必須包含字母和非字母(包括:符號(hào)數(shù)字,符號(hào)字母,符號(hào)數(shù)字字母)
賬單頁(yè)面
- 插件:在使用日歷的時(shí)候,是用的時(shí)間和簡(jiǎn)歷都是比較大的。但是最后還是沒(méi)有用的很好,沒(méi)有達(dá)到很有用的效果。
- 蒙板: 在寫(xiě)頁(yè)面的時(shí)候,用到了,蒙板的功能。但是在結(jié)構(gòu)上沒(méi)有做好處理,就是灰色背景的問(wèn)題。
- 插件的封裝功能還是有待提高。
經(jīng)驗(yàn)吸收
- 時(shí)間戳判斷
function exDateRange(sDate1,sDate2){ var iDateRange; if(sDate1!=""&&sDate2!=""){ var startDate=sDate1.replace(/-/g,"/"); var endDate=sDate2.replace(/-/g,"/"); var S_Date=new Date(Date.parse(startDate)); var E_Date=new Date(Date.parse(endDate)); iDateRange=(S_Date-E_Date)/86400000; } return iDateRange; }
- 平年閏年判斷
function getDate(count) { var d = new Date(); var year = d.getFullYear(); var month = d.getMonth(); var date = d.getDate(); function alldays(year, month) { if(isLeapYear(year)) { //閏年 switch(month) { case 0: return "31"; break; case 1: //2月 return "29"; break; case 2: return "31"; break; case 3: return "30"; break; case 4: return "31"; break; case 5: return "30"; break; case 6: return "31"; break; case 7: return "31"; break; case 8: return "30"; break; case 9: return "31"; break; case 10: return "30"; break; case 11: return "31"; break; default: }; } else { //平年 switch(month) { case 0: return "31"; break; case 1: return "28"; break; //2月 case 2: return "31"; break; case 3: return "30"; break; case 4: return "31"; break; case 5: return "30"; break; case 6: return "31"; break; case 7: return "31"; break; case 8: return "30"; break; case 9: return "31"; break; case 10: return "30"; break; case 11: return "31"; break; default: }; }; }; function isLeapYear(year) { if((year % 4 == 0) && (year % 100 != 0 || year % 400 == 0)) { return true; } else { return false; }; };
- 模版:公司的模版是tonador,基于python的模版。后期需要加強(qiáng)學(xué)習(xí)。