缘起
最近看到几个框架, 觉得趋势有明显, 就是大家都在想各种办法 Hack 浏览器.
我想越来越多人来开发 HTML5 应用并不是为了 HTML5 特别适合开发图形应用,
而是因为 Web 这个平台更容易触及, 并且对客户端兼容更多
大概正因为如此, 才会有现在这么多基于浏览器 Hack 和各种不同的想法
浏览器并不是虚拟机, 但是越来越多的技术使得浏览器变得像是一个虚拟机的平台
浏览器
我接触互联网的时间在 09 年左右, 那时候看到 Chrome 的更新
后来的事情大家都知道了, Chrome 导致 JavaScript 和 Web 应用成为了流行技术
优化的性能, 大量从前浏览器不具备的 API, CSS3 动画, 实现了先决条件
但是实现浏览器, 修改浏览器的默认脚本语言, 不是那么随意的
HTML5 存在标准, ECMAScript 有标准, CSS 也有标准
先不说对于以往的页面的兼容性和开发浏览器本身的难度,
单说开发一套能用的技术, 能快速传递给开发者, 本身难度就非常大
于是有了后边基于 JavaScript 的各种 Hack
语言的编译
首先 CoffeeScript 之类的语言, 以 JavaScript 环境为虚拟机
其他的代码编译到 JavaScript 去运行, 从而绕过浏览器环境的限制
借助这样手段, 浏览器不支持的很多编程范式和语法能引入浏览器
其中有名的比如 CoffeeScript..
https://github.com/jashkenas/coffeescript/wiki/List-of-languages-that-compile-to-JS
CSS 方面的情况类似, 甚至也加入了编程语言的各种逻辑
另一方面, HTML 也在不断改变, 首先是各种模板引擎
模板引擎主要实现了模版和模块化的特性, 其次带来了各种语法
https://github.com/coffee-js/languages/wiki/List-of-languages-that-compile-to-HTML-CSS
动态的转化
但是更精彩的是对于 DOM 结构的模拟, 比如 Virtual DOM
主要在 React 当中, Virtual DOM 作为 DOM 操作优化的中间形式而存在
Virtual DOM 相对于模板引擎有更多优化的功能, 更具备编程语言的抽象能力
另外还有 Elm 在函数式响应式编程带来了性能飞快的实现
http://calendar.perfplanet.com/2013/diff/
而在新的发展的技术当中, Famo.us 对于 DOM 的问题显得更加激进
Famo.us 认为 DOM 并不适合当前和未来交互非常多的 App
Web 应用需要的是一个类似游戏引擎的平台, 以达成高性能和精致界面
于是 Famo.us 推出的框架中, 应用的逻辑被编译到特别优化的 DOM
这些 DOM 被开启了 GPU 加速, 绕过了浏览器低效的优化
甚至在 Famo.us 当中集成了一个物理引擎, 以应对精致的动画效果
生成的 DOM 以平铺的结构排在 Container 下, 绕过低效的优化
http://elm-lang.org/blog/Blazing-Fast-Html.elm
今天另外看到的一个模块是 Facebook 正在开发的 css-layout
这个模块用于将 CSS3 通过 JavaScript 编译到具体的数值配置
通过这样方式, 绕过各种浏览器兼容性问题, 实现 Flexbox 布局等等新技术
https://github.com/facebook/css-layout
趋势
我感到由于浏览器的平台优势和技术束缚, 将会有更多绕过浏览器功能技术出现
取出浏览器优秀的子集作为虚拟机, 用来开发更适合应用开发的技术
上边列出我所看到的, 希望未来能看到更适用于 Web 开发的技术不断出现