本文作者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又將會是個不平凡的一年。