當前諸多大公司活動頁很多都是用遊戲引擎做的,請問這種技術選型和普通DOM操作+CSS3相比有何優點?

比如大眾點評活動頁 選擇吧,人生!

騰訊活動頁 生命之下,想像之上


大眾點評的那個頁面用的是 白鷺引擎 - Egret Engine-免費開源HTML5遊戲引擎 ,而騰訊的那個使用的是 CreateJS | A suite of Javascript libraries and tools designed for working with HTML5 。

白鷺是標準的國貨精品,前期創始者主要是 Adobe 的員工,現在已有資本介入;CreateJS則是 Grant Skinner 所做,Flash 界的著名人物。

這兩個引擎,還都是和 Adobe 有關係啊……可憐的 Flash。

感慨完畢,說說我的感覺。

作為引擎,提供的功能更完善。例如音頻播放、tween效果、資源載入管理、良好的 API 封裝等等。題主所說的兩個頁面,操作上相對複雜,都提供了音頻播放以及各種特效,使用現成的引擎可以大幅減少開發的工作量。

另外,這些引擎都考慮了移動端支持。

而自己用 DOM+CSS+JS 手寫,可能就要麻煩一些了。


從工具上講,遊戲引擎有編輯器,工作可能簡單到導入素材、設置關鍵幀、調整參數,設計師都可以做;但用傳統方式開發,要有許多 HTML/CSS/JS 的代碼需要工程師來寫和調試。

從技術上將,遊戲引擎都會藉助 Canvas/WebGL,性能和渲染效果要遠遠好於 DOM/SVG。(兼容性?做這種東西都會有 fallback 方案,放不了動畫的,可以展示圖片)


DOM 和 Canvas 都無法使用手機的GPU渲染

遊戲是一個通過體驗來變現的產品,所以 體驗 體驗 體驗 真的很重要 很重要

這就是為甚H5遊戲要使用遊戲引擎的原因,好的遊戲引擎都是 WebGL 渲染,然後遇到無法使用 WebGL 的設備,自動會退到 Canvas 渲染。

好的遊戲引擎比如 Cocos-JS


關於題主的問題,曾嶸已經說的比較清楚了。

糾正一點。

騰訊這個貌似是用flash cc做的,和做falsh動畫完全一樣,只不過是創建canvas工程。主要是設計師來做,需要用代碼的地方很少,非常像AS1、AS2時代的flash開發方式,主要是做動畫,然後需要交互的地方,在幀上寫代碼,最後發布。

白鷺那個看不到了,不知道是怎麼做的。

因此,題主的理解可能有偏差,拿騰訊這個來說,雖然用到了遊戲引擎CreateJs,但是幾乎涉及不到編程,和DOM操作+CSS3沒有可比性(應該是DOM+CSS+JS )。一個是設計師來做,一個是程序員來做,這個才是最大的優勢。


主要區別在於canvas吧,多數引擎不是採用的css animation,而是canvas內實現動畫。

DOM用在遊戲這種大量頻繁刷新的場景,怎麼可能流暢。

多數HTML App性能瓶頸本身就在DOM渲染。

你可以嘗試修改一個簡單的canvas遊戲到css動畫,我敢打賭就目前的條件下,結果一定是慘不忍睹。

另外純手工的開發難度也比較大:

比如這個,這麼多spirit。換css該怎麼做。我設想不出來。

見過的幾個比如Bounce.js 還只是處理滑動效果,spirit不知道有沒有框架支持。


操作dom基本都花費cpu,引擎就基本消耗gpu,js由於是單線程,對cpu開銷比較大,所以引擎的優勢不言而喻


cocos js才是真愛


優點不好說吧,使用的範圍很廣,各項技術各有各的優缺點,像layabox目前支持的canvas模式,試用於手機的應用,而dom+css模式,一般主要用來做pc網站,當然,之後laya肯定也會去支持dom+css3,這只是時間的問題。


推薦閱讀:

知乎上複製回答,剪貼板里自動加上版權出處的技術js如何實現?
像這樣的奇偶行背景色不同的代碼塊效果是怎樣設置的?
新版知乎載入圖片時從模糊到清晰的這個效果是如何做出來的?
JS對象中的構造函數和實例原型不一樣嗎?
如何有效快速的學習HTML/CSS/JS?

TAG:前端開發 | JavaScript | HTML5 | CSS3 | HTML5遊戲 |