快速开发静态页面——前端框架和插件总结

前言 : 最近很久没有写文章,不忙也忙的生活节奏,博客相关的东西也没法做成文章来详细讲,最多就是SEO相关,倒也没多少人会真正用到,所以过了一段时间,就目前开发完的学院实训系统web网页项目做个回顾,整个团队就我一个前端开发,所以我负责了需求分析、原型设计、UI/UE设计等工作。团队其他成员和老师都是负责java web后台。个人从用框架开发浅谈对框架开发的效率和效果的意义。
<h4>(写在文前的只言片语、意书情殇)长歌破晓穿云过,响彻碧霄振九天.)------Jason Zhang
web开发已现世多年,技术成熟且学习平台广泛,笔者针对其中细节从本质上进行解释.力求透彻.</h4>

前端页面开发框架
常见web页面框架
web页面开发的框架,可能常用并且熟悉也就那几个.
页面布局框架:Bootstrap、Materialize
JS框架: Jquery
一眼看过去似乎有点少哦,其实开发web网站只要需求不是特别多的,基本就够了,有些甚至JS都用的少。

开发中前台页面开发最简单,因为需求的不多,其实如果复杂了,也就会多用到H5和CSS3的一些东西外加JS和Ajax。
框架浅谈
Bootstrap

Bootstrap.jpg

这个框架确实厉害,我也不多介绍了。就跟它的宣传语一样。
Bootstrap 是最受欢迎的 HTML、CSS 和 JS 框架,用于开发响应式布局、移动设备优先的 WEB 项目。所有开发者、所有应用场景而设计。
Bootstrap 让前端开发更快速、简单。所有开发者都能快速上手、所有设备都可以适配、所有项目都适用。

确实目前很多网页都用了这个框架,确实为开发省力不少,不过一些大公司的网页都是把里面需要用的组建封装成自己的,并加以改变利用。
新手可能很难上手并做到自己DIY,还是建议按着文档的方法来调用。等到有实际需求需要整合代码才去把代码独立并入到工程中。
学会如何把别人框架组件的代码整合进自己项目的CSS和JS中确实很有用,因为框架下载的很多都是压缩好的,大小很大,如果只用少部分JS和CSS样式就有点大材小用了,所以得下对应的组建并入到自己的工程中。
Materialize

Materialize.jpg

此框架出自谷歌可能知名度没有Bootstrap大,但是它的设计感、配色和动画效果,在目前看来是框架中最完美的!
官网给出了很多组件的效果和使用方法,大家自行去看看效果吧.Materialize。
此框架除去它的其他页面布局外,我最看重它的配色表和它给出的模版页面,可以极大降低前端对于网页的设计和布局的困惑,因为没有独立的平面设计师来规划整个布局,前端开发借助框架能更快开发出想要的效果并且很好看。
总结

jQuery.jpg

其实没讲到Jquery,因为这个JS框架,对开发其实作用不大,主要是因为框架自身都需要Jquery来支持,它是一个必需品,因为它让JS语言更优美实用,writer less,do more
其实到最后,我都没有用上述的框架,而是发现了一个国外团队自己组建的新框架。这个框架结合了Google’s Material Design Standards 和 Bootstrap.
用过后,我发现了将Materialize框架的一些优点结合了Bootstrap的一些布局特点,将两者共有的组件进行优化和美化,配色和动画效果主要参考的Material,让Bootstrap的一些组件更生动,提高了用户的体验。后面详细讲下这个框架。
Propeller前后台页面框架

Propeller.jpg
0.jpg

前面提到了,就是一个极其好用的前后台结合了Materialize和Bootstrap框架。我更看重后台的一些组件效果,比如很多后台需要用到的,图表、数据表格、日历选择都有,虽然可选性不多,但足够用了。
使用效果
登录页面

1.jpg

后台主页面

2.jpg

因为Propeller提供提供了包含它组件的后台管理页面,所以开发起来难度不大。
登录模块用到了验证框架后面会说,然后根据项目需求自己DIY设置了一些东西和样式。让开发效率得到了解放和提示,并利于二次开发。
后台这块的难度主要在于二期开发中可能会涉及到数据的图表展示,需要用到JS插件来完成,目前还未着手开发。然后就是数据的表格、表单展示,用插件自带的数据表格,实现了对表单的排序和搜索,简化了后台开发的工作量。
具体的页面效果和交互效果大家在文章最后点击访问我给出的地址查看源代码和演示页面。
bootstrapValidator表单验证
表单验证的第三方插件确实有不少,bootstrapValidator这个是我在一个网站偶然发现的,由别人整理出来发表过,我就拿来用了。只是这个框架是根据查询表单的ID来定位的,但是我开发的时候用的Propeller框架,它的模版页面把项目需求的三个页面集合到了一个上,即登录、注册、找回页面,产生了三个页面,所以我在JS一共调用了3次来检测,不知道有什么更方便简洁的方法不。因为我的一个页面上面有三个表单,通过按钮点击来控制隐藏和显示。
做验证这块,设计到了正则表达式,因为要验证邮箱和密码长度、强度,所以网上百度了下,这方面的正则写法。
<pre>
regexp: {regexp: /(?![0-9]+$)(?![A-z]+$)(?![A-z0-9]+$)^.{6,12}$/,message:
'必须包含数字和字母,以字母开头(长度为6-12位)'},
</pre>
<pre>
var email = /^([a-zA-Z0-9_-])+@([a-zA-Z0-9_-])+((.[a-zA-Z0-9_-]{2,3}){1,2})
$/;//获取输入邮箱并用正则表达式把空格替换为空字符
</pre>
邮箱检验其实bootstrapValidator中可以用正则来检验,我当时为了实现点击发送验证码的效果,所以把这块的检验又重复了一遍,因为控制其邮箱的规范来发送邮件,实现自动倒计时的效果。必须保证邮箱有效。因为不知道如何在bootstrapValidator框架中来调用自己的方法和函数,所以就这样用了个单独的JS来完成。完整代码如下:
<pre>
// 验证码jsvar sends = {
checked: 1, send: function() {
var email = /^([a-zA-Z0-9_-])+@([a-zA-Z0-9_-])+((.[a-zA-Z0-9_-]{2,3}){1,2})$/; //获取输入邮箱并用正则表达式把空格替换为空字符
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("发送验证码"); sends.checked = 1;
return true;
}
$('.div-email a').html(time + "S后再次发送");
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("发送验证码"); sends.checked = 1; return true;
}
$('.div-email a').html(time + "S后再次发送"); time--;
return false; sends.checked = 0;
}
$('.div-email a').addClass('send0').removeClass('send1'); timeCountDown(); var timer = setInterval(timeCountDown, 1000);
} }
}
// 消除重复错误样式$(".register-login").click(function() { $('.div-email span').remove();})
</pre>

这个验证框架还有点小问题,就是当验证失败的时候,应该要阻止表单提交的默认事件发生,框架没有做这方面处理,需要我们自己来完善,代码如下:
<pre>
// 验证成功前提交按钮不起作用
$("#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

保证只要有表单错误,按钮不起作用,全部正确后按钮可用。
注意:bootstrapValidator验证框架用的字体图标有2套(glyphicon和FontAwesome),推荐大家使用FontAwesome,至于为什么,glyphicon在火狐浏览器会出现问题,FontAwesome目前在火狐、IE、谷歌内核浏览器不会出现问题,问题主要是加载不出来字体文件。

缺陷:表单验证中,我还没找到正则表达式来实现验证密码,首字母开头并要有大写,并且由数字和字母组成的正则表达式写法,因为对正则不熟悉,也算是一个遗憾了。目前的效果是只要包含了字幕和数字长度大于6位验证就通过。
使用其他小插件收获
基于Bootstrap的导航
为什么想到用这个插件来实现导航,因为考虑到效率和效果,因为团队没有美工啊,我自己考虑到了兼容性问题,想做个适配手机端的首页效果,后台和登录界面没有做适配移动端的设计,所以为了快速开发并且好看用到了网上开源的一个插件,有23种基于Bootstrap设计的导航效果。
现在都是框架开发,很多东西其实真的不想从底层开始写,加之原型图根本没有美工,自己来设计要浪费很多时间成本。浏览器没有下拉时

浏览器没有下拉时.jpg

浏览器下拉后

浏览器下拉后.jpg

hover的css效果
hover的CSS3动画效果,只支持IE9以上的浏览器,是为了增加用户体验而添加的效果。具体的效果要自己看,我这里就不录GIF动画来展示效果了,效果主要在首页的列表新闻的更多按钮那,和顶部菜单导航也用到了动画效果。
End

框架开发解放了生产力,让一个静态页面效果更逼真,也让用户体验逐渐上去,但是目前对网站的需求主要还是为了展示和宣传一些东西,反观教育机构和政府部门的网站都是偏动画少,体现了公关的严肃性。所以动画效果尽量还是分对象来使用。
框架和插件在计算机领域的各行业都是持续不减的话题,有人鼓励直接用框架和插件,有人赞成原生手写辅以框架。有人注重页面展示效果,却不关心底层的实现,有人重视底层实现原理,愿意自己照葫芦画瓢花大量时间自己写,还有人兼顾两者,利用完框架实现页面效果后,重新看框架实现的源代码,理解其中来龙去脉,根据自己实现选择是否深入研究。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 159,569评论 4 363
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 67,499评论 1 294
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 109,271评论 0 244
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 44,087评论 0 209
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 52,474评论 3 287
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 40,670评论 1 222
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 31,911评论 2 313
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 30,636评论 0 202
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 34,397评论 1 246
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 30,607评论 2 246
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 32,093评论 1 261
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 28,418评论 2 254
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 33,074评论 3 237
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 26,092评论 0 8
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 26,865评论 0 196
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 35,726评论 2 276
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 35,627评论 2 270

推荐阅读更多精彩内容

  • 前言 最近很久没有写文章,不忙也忙的生活节奏,博客相关的东西也没法做成文章来详细讲,最多就是SEO相关,倒也没多少...
    cduyzh阅读 7,549评论 0 13
  • Android 自定义View的各种姿势1 Activity的显示之ViewRootImpl详解 Activity...
    passiontim阅读 170,569评论 25 707
  • 我好奇这世界上的每一个存在,好看的,不那么好看的,我都喜欢,我想看野花过草原湖面漫云烟,也想面朝大海,春暖花开,我...
    南是异乡阅读 212评论 0 1
  • 动画加漫画,已经看过四五遍 这次看,看着竟然还能看哭 在基番里找少女心也是够了 了解到了一个漫画责任编辑的职务 想...
    太阳和雪阅读 740评论 3 1
  • —01— 那些星星 第一次在学校过七夕,走在漆黑的校园内,情侣们相偎在一起,浪漫氛围浓厚。当然,单身也有单身的好,...
    芒果酸奶的下午茶阅读 158评论 0 0