<!DOCTYPE> 声明位于文档中的最前面,处于 标签以前。告知浏览器的解析器,用什么文档类型 规范来解析这个文档。javascript
严格模式的排版和 JS 运做模式是以该浏览器支持的最高标准运行。在混杂模式中,页面以宽松的向后兼容的方式显示。模拟老式浏览器的行为以防止站点没法工做。css
DOCTYPE不存在或格式不正确会致使文档以混杂模式呈现。前端
<div id=”demo”></div>
。示例java
#demo { width: 100px; height: 100px; background-color: #fff; position: relative; border: 2px solid #000; } #demo:after, #demo:before { border: solid transparent; content: ' '; height: 0; left: 100%; position: absolute; width: 0; } #demo:after { border-width: 10px; border-left-color: #fff; top: 20px; } #demo:before { border-width: 12px; border-left-color: #000; top: 18px; }
document.write只能重绘整个页面,innerHTML能够重绘页面的一部分。web
回调函数,这是异步编程最基本的方法。算法
事件监听,另外一种思路是采用事件驱动模式。任务的执行不取决于代码的顺序,而取决于某个事件是否发生。编程
发布/订阅,上一节的"事件",彻底能够理解成"信号"。后端
Promises对象,Promises 对象是CommonJS 工做组提出的一种规范,目的是为异步编程提供统一接口。浏览器
手机的网速问题、屏幕大小、内存、CPU等。app
经过不一样设备的特征,实现不一样的网页展示或输出效果。根据useragent、屏幕大小信息、IP、网速、css media Query等原理,实现前端或后端的特征识别和行为改变。
背景的卷轴效果优化。背景不能是无限长的图片拼接,必须有回收已移出的场景的方法。
将复杂运算从主UI线程中解耦。好比场景中小鸟的运动轨迹、碰撞算法等,须要在空闲时间片运算,不能和UI动画同时进行。将比较大的运算分解成不一样的时间片,防止阻塞主UI线程。最好使用webworker。
注意内存泄漏和回收。使用对象池管理内存,提升内存检测和垃圾回收。
进行预处理。将一些经常使用的过程进行预处理,
控制好帧率。将1秒分解成多个时间片,在固定间隔时间片进行UI动画,其余时间片用在后台运算。
经过 GPU 加速和 CSS transition 将小鸟飞行动画和背景动画分离。
排序算法,Js的Dom和事件相关操做。