学习前端也有四个月了,从一点不会,逐渐晋升为了一名前端小白,其实还是要蛮感谢我的一个同学(我就不点名了,怕他骄傲)和慕课网的。
总结一下前面的第一个小项目的一些知识。
不多说,上干货。
项目一 HTML5移动WEP APP阅读器
先说说html5web现状与趋势,缺点就是不能做一次开发和多终端适配,比如苹果手机home键,安卓手机的menu键和back键,都会影响到最后的交互设计,比如设计安卓版的时候不需要在顶部设计一个返回按钮,而ios端则需要一个back的设计。因此html5web还不能做到一次开发,多终端适配。网页app永远无法匹敌原声app。css3的媒体选择,和引入动画,可以不用以前的dom操作进行动画(daneden.github.io/animate.css/)html5web趋势就是无线趋近与Native app。
javaScript设计模式:单例模式:就是定义一个object,一个对象。去访问对象的熟悉就ok,比如var pi={attr_1:"1"},不需要多实例化,创建新的对象要占用更多的内存。
实例化:先定义一个对象,实例化多个对象比如先定义function class_A(param){this.attr_1=param},然后要使用的时候new 一个class_A()。var instance_1= new class_A("1");和单利不同,可以创建多个对象。
移动前端陷阱,减少repaint,reflow,(或者说减少对DOM元素的操作)减少页面重绘(元素的位置信息不发生变法,只是颜色等发生改变,触发repint)和页面回流(元素位置信息发生变法,触发reflow)原因是web的性能没有pc端那么好。尽量缓存可以缓存的数据,以前是http进行缓存。htm5:localStorage.setItem('date_1',JSON.stringify({a:1}))它只能存字符串,如果想存一个对象,对它进行序列化。拿出数据:localStorage.getItem('data_1')用JSON.parse(localStorage.getItem('data_1'))进行反序列化。
还有一个indexDB可以存大量数据,而且数据都有一个索引。
用css3的transform代替dom操作,css3的transform是从浏览器底层提供的一种能力,来对dom进行操作,而不是暴露api来进行操作。对性能有更好的提升。
不要给非static定位元素增加css3动画
适当使用硬件加速(canvas可以触发硬件加速)css3的transform就可以触发硬件加速,transform:translate3d(0,0,0)触发一个图层的硬件加速。