<!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和事件相關操做。