本文作者Alex MacCaw是一名JavaScript程序员,O’Reilly作者,目前就职于Stripe。他认为,在接下来的一年,Web领域将会有越来越多的储技术蜂拥而至。甚至可能会有一些技术,从根本上改变我们如何使用Web及开发Web。然而API在这个过程中将会起着非常决定性的作用。
众所周知,科技和虚拟世界都在快速发展,当市场上出现一个新发展趋势的时候,作为Web开发人员首先应该想到这些新趋势何时会运用到Web开发上,并且把这些新元素运用到自己的项目中。
在接下来的一年,Web领域将会有越来越多的技术蜂拥而至。甚至可能会有一些技术,会从根本上改变我们如何使用Web及开发Web,然而API在这个过程中将会起着非常决定性的作用。
CSS定制过滤器
CSS定制过滤器(CSS Custom Filters)已经在Chrome和Safari上实现,允许你定制一些高级样式,例如模糊(blurring)、弯曲(warping )或修改元素的颜色。然而,这仅仅是个开始,CSS定制过滤器允许你在GLSL上编写自己的片段(fragment)和顶点阴影(vertex shadows),在过去10年里,它已融入到传统的3D渲染/透视语言中。
这就意味着你可以创造出一些非常奇特的Web效果。结合CSS transitions可以制作出非常漂亮的转换(transformations)、卷页特效(from page curls)、折叠元素。
所以,你打算什么时候使用?Adobe首创了这项技术,另外Custom Filters已经在基于Chrome的flag上使用。期望明年年初能在Chrome上见到它们。现在,你可以在Canary上体验一翻。
Autocomplete API
这个API可能会从根本上改变网络的注册和支付方式。Autocomplete API让表单填写更加容易,提供一些数据规范指导。
今年6月,我提出了一个API,以编程的方式在浏览器端自动检索填充的数据存储。这意味着可以代替大多数的一键式注册和一键式支付形式,极大地提高了可用性和转换率。
Chrome团队已经致力于这个想法并且于10月份提交了一份建议和补丁在WebKit上。另外,与Mozilla Persona的配合可以给网上注册和支付带来根本性的变革,这真是让人兴奋的事情。
虽然这些背后工作都已完成,Chrome仍然需要使用UI去集成实现,估计明年年底即可与大家见面。
Google Chrome Apps
倘若告诉你,Google已悄悄研发一款跨设备的操作系统,包括笔记本和手机,会怎样?Google决定在现有的操作系统上构建它们自己的平台,通过构建独立的OS与Miscrosoft和Apple竞争。该平台的名称叫做Chrome。
目前所做的第一步工作就是分布(distribution),Chrome现已拥有超过3.5亿用户。第二部就是扩展Chrome的API,使开发人员可以对操作系统进行更深入的访问,并且取代传统桌面应用的需求。
几个月前,谷歌悄悄发布Chrome Packaged应用,它可以帮助开发人员通过Chrome轻松构建桌面应用程序。他们可以从Chrome Web商店中进行一键式安装,可以使用USB、蓝牙和UDP套接字或者桌面快捷键访问系统API。这些应用程序完全是跨平台的、独立的出现在本地的。在许多方面,这种混合组合可以带来更好地Web和桌面世界。
ECMAScript 6
ECMAScript 6简称ES6。在下一个版本的JavaScript中会有一些令人兴奋的扩展与修改,解决语言的一些丑陋部分并且提供一些新特性,比如默认参数和重组。
在该版本中,类被提上日程并且添加了完整的继承和Mixins。而不是单纯地模仿CommonJS或AMD(AsynchronousDefinition)模块,ES6使其成为一等类,灵感来自pythonesque这个导入系统。
此外,ES6中有一部分会让人非常兴奋——ES6代理。ES6代理可以让我们在运行时对函数名进行动态查找,类似Ruby的method_missing功能。结合getters和setters使各种DSL和API变的有趣。
ES6生成器(generators)会完全改变JavaScript异步的编写方式,而不会像以往回调意大利面条式代码那样,我们可以使用同步API的yield关键字调用异步函数。看看task.js这个例子:
spawn(function*() {
var data = yield $.get(url);
$('#result').html(data);
});
你也许在使用Ruby的Fibers时看到过类似的API,个性化的回调着实让人头疼,尤其是在MVC节点应用程序中编写事件时。我一直在使用Ace这个库体验Node延续。
目前,大部分的ES6在Chrome的flag下体验实验版的JavaScript。它将于明年初发布。你也可以通过Node的–harmony命令行选项立即使用ES6。
Web Components
Web Componets和Shadow DOM揭示本地元素是如何在浏览器中进行内部创建。使用该API,你可以定义自己的HTML元素,包括该元素的样式以及具体行为。和本地的HTML元素,它们可以被嵌入到一个单独的标签中。
Web Components可以转换JavaScript库的编写和分布方式,它们可以完全解耦、易于集成。这也是我和Jacob编写程序包管理器Bower的真正原因。
例如,我编写了一个超实用的地图组件,把它添加到包管理器里面,其他开发人员可以通过一个标签就可以把该组件集成到他们的应用程序中。各个组件是彼此分离的,它们的HTML、CSS和JavaScript可以从一个自定义标签中抽离出来。
展望未来
这些Web API将需要些时间逐步过渡应用到其他浏览器上,Webkit的市场份额也驱动着浏览器厂商提供各个API的解决方案。事实上,HTML5从功能转变成产品的可行性并不需要太多的时间。为了向后兼容,这些API都可以poly-filled或者逐步削减/降低其重要性。
对于Web来说,2013又将会是个不平凡的一年。