快速開(kāi)發(fā)靜態(tài)頁(yè)面——前端框架和插件總結(jié)

前言 : 最近很久沒(méi)有寫文章,不忙也忙的生活節(jié)奏炕横,博客相關(guān)的東西也沒(méi)法做成文章來(lái)詳細(xì)講,最多就是SEO相關(guān)葡粒,倒也沒(méi)多少人會(huì)真正用到份殿,所以過(guò)了一段時(shí)間,就目前開(kāi)發(fā)完的學(xué)院實(shí)訓(xùn)系統(tǒng)web網(wǎng)頁(yè)項(xiàng)目做個(gè)回顧嗽交,整個(gè)團(tuán)隊(duì)就我一個(gè)前端開(kāi)發(fā)卿嘲,所以我負(fù)責(zé)了需求分析、原型設(shè)計(jì)夫壁、UI/UE設(shè)計(jì)等工作拾枣。團(tuán)隊(duì)其他成員和老師都是負(fù)責(zé)java web后臺(tái)。個(gè)人從用框架開(kāi)發(fā)淺談對(duì)框架開(kāi)發(fā)的效率和效果的意義盒让。
<h4>(寫在文前的只言片語(yǔ)梅肤、意書情殤)長(zhǎng)歌破曉穿云過(guò),響徹碧霄振九天.)------Jason Zhang
web開(kāi)發(fā)已現(xiàn)世多年,技術(shù)成熟且學(xué)習(xí)平臺(tái)廣泛,筆者針對(duì)其中細(xì)節(jié)從本質(zhì)上進(jìn)行解釋.力求透徹.</h4>

前端頁(yè)面開(kāi)發(fā)框架
常見(jiàn)web頁(yè)面框架
web頁(yè)面開(kāi)發(fā)的框架,可能常用并且熟悉也就那幾個(gè).
頁(yè)面布局框架:Bootstrap邑茄、Materialize
JS框架: Jquery
一眼看過(guò)去似乎有點(diǎn)少哦姨蝴,其實(shí)開(kāi)發(fā)web網(wǎng)站只要需求不是特別多的,基本就夠了肺缕,有些甚至JS都用的少左医。

開(kāi)發(fā)中前臺(tái)頁(yè)面開(kāi)發(fā)最簡(jiǎn)單,因?yàn)樾枨蟮牟欢嗤荆鋵?shí)如果復(fù)雜了浮梢,也就會(huì)多用到H5和CSS3的一些東西外加JS和Ajax。
框架淺談
Bootstrap

Bootstrap.jpg

這個(gè)框架確實(shí)厲害泉手,我也不多介紹了黔寇。就跟它的宣傳語(yǔ)一樣。
Bootstrap 是最受歡迎的 HTML斩萌、CSS 和 JS 框架缝裤,用于開(kāi)發(fā)響應(yīng)式布局、移動(dòng)設(shè)備優(yōu)先的 WEB 項(xiàng)目颊郎。所有開(kāi)發(fā)者憋飞、所有應(yīng)用場(chǎng)景而設(shè)計(jì)。
Bootstrap 讓前端開(kāi)發(fā)更快速姆吭、簡(jiǎn)單榛做。所有開(kāi)發(fā)者都能快速上手、所有設(shè)備都可以適配、所有項(xiàng)目都適用检眯。

確實(shí)目前很多網(wǎng)頁(yè)都用了這個(gè)框架厘擂,確實(shí)為開(kāi)發(fā)省力不少,不過(guò)一些大公司的網(wǎng)頁(yè)都是把里面需要用的組建封裝成自己的锰瘸,并加以改變利用刽严。
新手可能很難上手并做到自己DIY,還是建議按著文檔的方法來(lái)調(diào)用避凝。等到有實(shí)際需求需要整合代碼才去把代碼獨(dú)立并入到工程中舞萄。
學(xué)會(huì)如何把別人框架組件的代碼整合進(jìn)自己項(xiàng)目的CSS和JS中確實(shí)很有用,因?yàn)榭蚣芟螺d的很多都是壓縮好的管削,大小很大倒脓,如果只用少部分JS和CSS樣式就有點(diǎn)大材小用了,所以得下對(duì)應(yīng)的組建并入到自己的工程中含思。
Materialize

Materialize.jpg

此框架出自谷歌可能知名度沒(méi)有Bootstrap大崎弃,但是它的設(shè)計(jì)感、配色和動(dòng)畫效果含潘,在目前看來(lái)是框架中最完美的吊履!
官網(wǎng)給出了很多組件的效果和使用方法,大家自行去看看效果吧.Materialize调鬓。
此框架除去它的其他頁(yè)面布局外艇炎,我最看重它的配色表和它給出的模版頁(yè)面,可以極大降低前端對(duì)于網(wǎng)頁(yè)的設(shè)計(jì)和布局的困惑腾窝,因?yàn)闆](méi)有獨(dú)立的平面設(shè)計(jì)師來(lái)規(guī)劃整個(gè)布局缀踪,前端開(kāi)發(fā)借助框架能更快開(kāi)發(fā)出想要的效果并且很好看。
總結(jié)

jQuery.jpg

其實(shí)沒(méi)講到Jquery虹脯,因?yàn)檫@個(gè)JS框架驴娃,對(duì)開(kāi)發(fā)其實(shí)作用不大,主要是因?yàn)榭蚣茏陨矶夹枰狫query來(lái)支持循集,它是一個(gè)必需品唇敞,因?yàn)樗孞S語(yǔ)言更優(yōu)美實(shí)用,writer less咒彤,do more疆柔。
其實(shí)到最后,我都沒(méi)有用上述的框架镶柱,而是發(fā)現(xiàn)了一個(gè)國(guó)外團(tuán)隊(duì)自己組建的新框架旷档。這個(gè)框架結(jié)合了Google’s Material Design Standards 和 Bootstrap.
用過(guò)后,我發(fā)現(xiàn)了將Materialize框架的一些優(yōu)點(diǎn)結(jié)合了Bootstrap的一些布局特點(diǎn)歇拆,將兩者共有的組件進(jìn)行優(yōu)化和美化鞋屈,配色和動(dòng)畫效果主要參考的Material范咨,讓Bootstrap的一些組件更生動(dòng),提高了用戶的體驗(yàn)厂庇。后面詳細(xì)講下這個(gè)框架渠啊。
Propeller前后臺(tái)頁(yè)面框架

Propeller.jpg
0.jpg

前面提到了,就是一個(gè)極其好用的前后臺(tái)結(jié)合了Materialize和Bootstrap框架权旷。我更看重后臺(tái)的一些組件效果昭抒,比如很多后臺(tái)需要用到的,圖表炼杖、數(shù)據(jù)表格、日歷選擇都有盗迟,雖然可選性不多坤邪,但足夠用了。
使用效果
登錄頁(yè)面

1.jpg

后臺(tái)主頁(yè)面

2.jpg

因?yàn)镻ropeller提供提供了包含它組件的后臺(tái)管理頁(yè)面罚缕,所以開(kāi)發(fā)起來(lái)難度不大艇纺。
登錄模塊用到了驗(yàn)證框架后面會(huì)說(shuō),然后根據(jù)項(xiàng)目需求自己DIY設(shè)置了一些東西和樣式邮弹。讓開(kāi)發(fā)效率得到了解放和提示黔衡,并利于二次開(kāi)發(fā)。
后臺(tái)這塊的難度主要在于二期開(kāi)發(fā)中可能會(huì)涉及到數(shù)據(jù)的圖表展示腌乡,需要用到JS插件來(lái)完成盟劫,目前還未著手開(kāi)發(fā)。然后就是數(shù)據(jù)的表格与纽、表單展示侣签,用插件自帶的數(shù)據(jù)表格,實(shí)現(xiàn)了對(duì)表單的排序和搜索急迂,簡(jiǎn)化了后臺(tái)開(kāi)發(fā)的工作量影所。
具體的頁(yè)面效果和交互效果大家在文章最后點(diǎn)擊訪問(wèn)我給出的地址查看源代碼和演示頁(yè)面。
bootstrapValidator表單驗(yàn)證
表單驗(yàn)證的第三方插件確實(shí)有不少僚碎,bootstrapValidator這個(gè)是我在一個(gè)網(wǎng)站偶然發(fā)現(xiàn)的猴娩,由別人整理出來(lái)發(fā)表過(guò),我就拿來(lái)用了勺阐。只是這個(gè)框架是根據(jù)查詢表單的ID來(lái)定位的卷中,但是我開(kāi)發(fā)的時(shí)候用的Propeller框架,它的模版頁(yè)面把項(xiàng)目需求的三個(gè)頁(yè)面集合到了一個(gè)上渊抽,即登錄仓坞、注冊(cè)、找回頁(yè)面腰吟,產(chǎn)生了三個(gè)頁(yè)面无埃,所以我在JS一共調(diào)用了3次來(lái)檢測(cè)徙瓶,不知道有什么更方便簡(jiǎn)潔的方法不。因?yàn)槲业囊粋€(gè)頁(yè)面上面有三個(gè)表單嫉称,通過(guò)按鈕點(diǎn)擊來(lái)控制隱藏和顯示侦镇。
做驗(yàn)證這塊,設(shè)計(jì)到了正則表達(dá)式织阅,因?yàn)橐?yàn)證郵箱和密碼長(zhǎng)度壳繁、強(qiáng)度,所以網(wǎng)上百度了下荔棉,這方面的正則寫法闹炉。
<pre>
regexp: {regexp: /(?![0-9]+$)(?![A-z]+$)(?![A-z0-9]+$)^.{6,12}$/,message:
'必須包含數(shù)字和字母,以字母開(kāi)頭(長(zhǎng)度為6-12位)'},
</pre>
<pre>
var email = /^([a-zA-Z0-9_-])+@([a-zA-Z0-9_-])+((.[a-zA-Z0-9_-]{2,3}){1,2})
$/;//獲取輸入郵箱并用正則表達(dá)式把空格替換為空字符
</pre>
郵箱檢驗(yàn)其實(shí)bootstrapValidator中可以用正則來(lái)檢驗(yàn)润樱,我當(dāng)時(shí)為了實(shí)現(xiàn)點(diǎn)擊發(fā)送驗(yàn)證碼的效果渣触,所以把這塊的檢驗(yàn)又重復(fù)了一遍,因?yàn)榭刂破溧]箱的規(guī)范來(lái)發(fā)送郵件壹若,實(shí)現(xiàn)自動(dòng)倒計(jì)時(shí)的效果嗅钻。必須保證郵箱有效。因?yàn)椴恢廊绾卧赽ootstrapValidator框架中來(lái)調(diào)用自己的方法和函數(shù)店展,所以就這樣用了個(gè)單獨(dú)的JS來(lái)完成养篓。完整代碼如下:
<pre>
// 驗(yàn)證碼jsvar sends = {
checked: 1, send: function() {
var email = /^([a-zA-Z0-9_-])+@([a-zA-Z0-9_-])+((.[a-zA-Z0-9_-]{2,3}){1,2})$/; //獲取輸入郵箱并用正則表達(dá)式把空格替換為空字符
var val = $('#forgot-email').val().replace(/\s+/g, "");
var vall = $('#fotgot-email').val().replace(/\s+/g, "");
if ($('.div-email').find('span').length == 0 && $('.div-email a').attr('class') == 'send1') { if (!email.test(val) || val.length == 0) {
$('.div-email').append('<span class="error">Error</span>');
return false;
} }
if ($('.div-email').find('span').length == 0 && $('.div-email a').attr('class') == 'send1') { if (!email.test(vall) || vall.length == 0) {
$('.div-email').append('<span class="error">Error</span>');
return false;
} }
if (email.test(val)) {
var time = 60; $('.div-email span').remove(); function timeCountDown() {
if (time == 0) { clearInterval(timer);
$('.div-email a').addClass('send1').removeClass('send0').html("發(fā)送驗(yàn)證碼"); sends.checked = 1;
return true;
}
$('.div-email a').html(time + "S后再次發(fā)送");
time--; return false; sends.checked = 0;
}
$('.div-email a').addClass('send0').removeClass('send1'); timeCountDown(); var timer = setInterval(timeCountDown, 1000); }
if (email.test(vall)) { var time = 60;
$('.div-email span').remove(); function timeCountDown() {
if (time == 0) {
clearInterval(timer);
$('.div-email a').addClass('send1').removeClass('send0').html("發(fā)送驗(yàn)證碼"); sends.checked = 1; return true;
}
$('.div-email a').html(time + "S后再次發(fā)送"); time--;
return false; sends.checked = 0;
}
$('.div-email a').addClass('send0').removeClass('send1'); timeCountDown(); var timer = setInterval(timeCountDown, 1000);
} }
}
// 消除重復(fù)錯(cuò)誤樣式$(".register-login").click(function() { $('.div-email span').remove();})
</pre>

這個(gè)驗(yàn)證框架還有點(diǎn)小問(wèn)題,就是當(dāng)驗(yàn)證失敗的時(shí)候赂蕴,應(yīng)該要阻止表單提交的默認(rèn)事件發(fā)生柳弄,框架沒(méi)有做這方面處理,需要我們自己來(lái)完善概说,代碼如下:
<pre>
// 驗(yàn)證成功前提交按鈕不起作用
$("#defaultForm").submit(function(ev) {
ev.preventDefault();
});
$("#defaultFormm").submit(function(ev) {
ev.preventDefault();
});
$("#submit").on("click", function() {
var bootstrapValidator = $("#defaultForm").data('bootstrapValidator'); bootstrapValidator.validate();
if (bootstrapValidator.isValid()) {
$("#defaultForm").submit();
}else{
return;}
});
</pre>

3.jpg

保證只要有表單錯(cuò)誤语御,按鈕不起作用,全部正確后按鈕可用席怪。
注意:bootstrapValidator驗(yàn)證框架用的字體圖標(biāo)有2套(glyphicon和FontAwesome)应闯,推薦大家使用FontAwesome,至于為什么挂捻,glyphicon在火狐瀏覽器會(huì)出現(xiàn)問(wèn)題碉纺,F(xiàn)ontAwesome目前在火狐、IE刻撒、谷歌內(nèi)核瀏覽器不會(huì)出現(xiàn)問(wèn)題骨田,問(wèn)題主要是加載不出來(lái)字體文件。

缺陷:表單驗(yàn)證中声怔,我還沒(méi)找到正則表達(dá)式來(lái)實(shí)現(xiàn)驗(yàn)證密碼态贤,首字母開(kāi)頭并要有大寫,并且由數(shù)字和字母組成的正則表達(dá)式寫法醋火,因?yàn)閷?duì)正則不熟悉悠汽,也算是一個(gè)遺憾了箱吕。目前的效果是只要包含了字幕和數(shù)字長(zhǎng)度大于6位驗(yàn)證就通過(guò)。
使用其他小插件收獲
基于Bootstrap的導(dǎo)航
為什么想到用這個(gè)插件來(lái)實(shí)現(xiàn)導(dǎo)航柿冲,因?yàn)榭紤]到效率和效果茬高,因?yàn)閳F(tuán)隊(duì)沒(méi)有美工啊,我自己考慮到了兼容性問(wèn)題假抄,想做個(gè)適配手機(jī)端的首頁(yè)效果怎栽,后臺(tái)和登錄界面沒(méi)有做適配移動(dòng)端的設(shè)計(jì),所以為了快速開(kāi)發(fā)并且好看用到了網(wǎng)上開(kāi)源的一個(gè)插件宿饱,有23種基于Bootstrap設(shè)計(jì)的導(dǎo)航效果熏瞄。
現(xiàn)在都是框架開(kāi)發(fā),很多東西其實(shí)真的不想從底層開(kāi)始寫谬以,加之原型圖根本沒(méi)有美工强饮,自己來(lái)設(shè)計(jì)要浪費(fèi)很多時(shí)間成本。瀏覽器沒(méi)有下拉時(shí)

瀏覽器沒(méi)有下拉時(shí).jpg

瀏覽器下拉后

瀏覽器下拉后.jpg

hover的css效果
hover的CSS3動(dòng)畫效果蛉签,只支持IE9以上的瀏覽器,是為了增加用戶體驗(yàn)而添加的效果沥寥。具體的效果要自己看碍舍,我這里就不錄GIF動(dòng)畫來(lái)展示效果了,效果主要在首頁(yè)的列表新聞的更多按鈕那邑雅,和頂部菜單導(dǎo)航也用到了動(dòng)畫效果片橡。
End

框架開(kāi)發(fā)解放了生產(chǎn)力,讓一個(gè)靜態(tài)頁(yè)面效果更逼真淮野,也讓用戶體驗(yàn)逐漸上去捧书,但是目前對(duì)網(wǎng)站的需求主要還是為了展示和宣傳一些東西,反觀教育機(jī)構(gòu)和政府部門的網(wǎng)站都是偏動(dòng)畫少骤星,體現(xiàn)了公關(guān)的嚴(yán)肅性经瓷。所以動(dòng)畫效果盡量還是分對(duì)象來(lái)使用。
框架和插件在計(jì)算機(jī)領(lǐng)域的各行業(yè)都是持續(xù)不減的話題洞难,有人鼓勵(lì)直接用框架和插件舆吮,有人贊成原生手寫輔以框架。有人注重頁(yè)面展示效果队贱,卻不關(guān)心底層的實(shí)現(xiàn)色冀,有人重視底層實(shí)現(xiàn)原理,愿意自己照葫蘆畫瓢花大量時(shí)間自己寫柱嫌,還有人兼顧兩者锋恬,利用完框架實(shí)現(xiàn)頁(yè)面效果后,重新看框架實(shí)現(xiàn)的源代碼编丘,理解其中來(lái)龍去脈与学,根據(jù)自己實(shí)現(xiàn)選擇是否深入研究彤悔。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市癣防,隨后出現(xiàn)的幾起案子蜗巧,更是在濱河造成了極大的恐慌,老刑警劉巖蕾盯,帶你破解...
    沈念sama閱讀 218,607評(píng)論 6 507
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件幕屹,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡级遭,警方通過(guò)查閱死者的電腦和手機(jī)望拖,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,239評(píng)論 3 395
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)挫鸽,“玉大人说敏,你說(shuō)我怎么就攤上這事《迹” “怎么了盔沫?”我有些...
    開(kāi)封第一講書人閱讀 164,960評(píng)論 0 355
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)枫匾。 經(jīng)常有香客問(wèn)我架诞,道長(zhǎng),這世上最難降的妖魔是什么干茉? 我笑而不...
    開(kāi)封第一講書人閱讀 58,750評(píng)論 1 294
  • 正文 為了忘掉前任谴忧,我火速辦了婚禮,結(jié)果婚禮上角虫,老公的妹妹穿的比我還像新娘沾谓。我一直安慰自己,他們只是感情好戳鹅,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,764評(píng)論 6 392
  • 文/花漫 我一把揭開(kāi)白布均驶。 她就那樣靜靜地躺著,像睡著了一般枫虏。 火紅的嫁衣襯著肌膚如雪辣恋。 梳的紋絲不亂的頭發(fā)上,一...
    開(kāi)封第一講書人閱讀 51,604評(píng)論 1 305
  • 那天模软,我揣著相機(jī)與錄音伟骨,去河邊找鬼。 笑死燃异,一個(gè)胖子當(dāng)著我的面吹牛携狭,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播回俐,決...
    沈念sama閱讀 40,347評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼逛腿,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼稀并!你這毒婦竟也來(lái)了?” 一聲冷哼從身側(cè)響起单默,我...
    開(kāi)封第一講書人閱讀 39,253評(píng)論 0 276
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤碘举,失蹤者是張志新(化名)和其女友劉穎,沒(méi)想到半個(gè)月后搁廓,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體引颈,經(jīng)...
    沈念sama閱讀 45,702評(píng)論 1 315
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,893評(píng)論 3 336
  • 正文 我和宋清朗相戀三年境蜕,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了蝙场。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 40,015評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡粱年,死狀恐怖售滤,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情台诗,我是刑警寧澤完箩,帶...
    沈念sama閱讀 35,734評(píng)論 5 346
  • 正文 年R本政府宣布,位于F島的核電站拉队,受9級(jí)特大地震影響弊知,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜氏仗,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,352評(píng)論 3 330
  • 文/蒙蒙 一吉捶、第九天 我趴在偏房一處隱蔽的房頂上張望夺鲜。 院中可真熱鬧皆尔,春花似錦、人聲如沸币励。這莊子的主人今日做“春日...
    開(kāi)封第一講書人閱讀 31,934評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)食呻。三九已至流炕,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間仅胞,已是汗流浹背每辟。 一陣腳步聲響...
    開(kāi)封第一講書人閱讀 33,052評(píng)論 1 270
  • 我被黑心中介騙來(lái)泰國(guó)打工, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留干旧,地道東北人渠欺。 一個(gè)月前我還...
    沈念sama閱讀 48,216評(píng)論 3 371
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像椎眯,于是被迫代替她去往敵國(guó)和親挠将。 傳聞我的和親對(duì)象是個(gè)殘疾皇子胳岂,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,969評(píng)論 2 355

推薦閱讀更多精彩內(nèi)容

  • 前言 最近很久沒(méi)有寫文章,不忙也忙的生活節(jié)奏舔稀,博客相關(guān)的東西也沒(méi)法做成文章來(lái)詳細(xì)講乳丰,最多就是SEO相關(guān),倒也沒(méi)多少...
    cduyzh閱讀 7,701評(píng)論 0 13
  • Android 自定義View的各種姿勢(shì)1 Activity的顯示之ViewRootImpl詳解 Activity...
    passiontim閱讀 172,152評(píng)論 25 707
  • 我好奇這世界上的每一個(gè)存在内贮,好看的产园,不那么好看的,我都喜歡贺归,我想看野花過(guò)草原湖面漫云煙淆两,也想面朝大海,春暖花開(kāi)拂酣,我...
    南是異鄉(xiāng)閱讀 224評(píng)論 0 1
  • 動(dòng)畫加漫畫秋冰,已經(jīng)看過(guò)四五遍 這次看,看著竟然還能看哭 在基番里找少女心也是夠了 了解到了一個(gè)漫畫責(zé)任編輯的職務(wù) 想...
    太陽(yáng)和雪閱讀 746評(píng)論 3 1
  • —01— 那些星星 第一次在學(xué)校過(guò)七夕婶熬,走在漆黑的校園內(nèi)剑勾,情侶們相偎在一起,浪漫氛圍濃厚赵颅。當(dāng)然虽另,單身也有單身的好,...
    芒果酸奶的下午茶閱讀 175評(píng)論 0 0