从可编程到跨终端的Web
“跨终端的Web”是我为 QConbeijing2013的前端专题定的主题。我在infoQ中文站发表了 《从可编程到跨终端——QCon北京2013“跨终端的Web”专题出品人专访》中比较详细的解释了为什么,现在转一份过来,欢迎探讨。同时, 今天在Twitter上发布征集讲师送价值4200元的门票一张的消息,欢迎自荐或推荐。1)优先送给选上讲师所对应的推荐者,2)如果没有讲师被选上,会送给第一个提交正式主题大纲的讲师所对应的推荐者。
- InfoQ:能否先简单谈谈您在Web编程这个领域的从业经验,和您对此领域的理解?
我的经验最早从大学开始,领导一个学生团队负责学生网站,虽然这并不是一个商业站点,但运营、设计、前后端开发的分工协作已经有了雏形。
2005年毕业后,在网易北京做UI Designer,交互、设计和前端开发都做,那时Web标准和Ajax刚刚盛行,我的重点开始集中在Web前端开发领域,理解到对Web编程而言,标准是最低要求,Ajax只是一种前后端的数据交换方式,重点是如何基于它们构建解决业务问题的程序。
2007年加入了中国雅虎,这段时间让我充分地深入了Web前端开发的实践和理念,包括JavaScript库和框架设计与开发、Web App的模块和组装、静态文件的部署和CDN的发布、API服务层和前后端分离与协作。那时最重要的工作就是设计并开发了“NCP-站长天下”的前端架构,它一个开放的Web App平台,其核心是Web App模块的定义、组装和发布机制。这个项目后来失败了,留下的火种演化为淘宝旺铺的前身。
再后来到了口碑网,从负责前端开始一直到整个UED,这期间最重要的事情就是完整地实践了企业级前端架构,包括Web架构和JavaScript框架引用与升级机制、静态文件规则和发布机制、静态配置文件的引用和升级机制、以及与其相对的自动化工具。
之后,在阿里云OS负责内容运营,从BD、运营、PD、UED、一直负责到相关业务的后端开发,这段时间除了对手机操作系统和生态有了深刻认识外,也对Web OS和Mobile Web有了深入的探索和实践。
去年底开始负责天猫前端,现在电子商务正处于B2C的快速壮大和C2B的兴起,而移动正在成为互联网的主流,所以我现在的目标是构建一个跨终端的前端架构使其能够低成本高效率地让所有用户享受到无处不在的天猫体验。 在我看来,Web编程就是基于Web把UI设计和数据结合起来构建人机交互环境并发布到互联网上的迭代过程。
- InfoQ:Web编程与前端开发的关系是怎样的?
Web是互联网的一部分,但由于互联网绝大部分内容都是通过Web呈现的,所以很多人把万维网(world wide web)当成了互联网。同样,前端开发指的互联网产品的UI和数据结合构建人机交互环境的开发过程,从MVC的角度来说,前端开发包括View层和与之相关的Control层。所以,前端开发是基于互联网来说的,Web编程是基于Web来说的,只是Web占有量太大,很多场合会把两者等同起来。
准确来讲,前端开发不应该局限于Web编程,各种客户端也有前端开发,只是前端部分不是由专门的前端开发工程师来做。Web编程不应该局限于HTML、CSS、JavaScript,服务端构建View层的PHP、模板语言等都属于Web编程。但在实际交流和分享过程中,iOS客户端的前端开发会归于iOS的开发,PHP、Java等语言的前端开发会淹没于后端开发的探讨中,这也是前端开发总是探讨HTML、CSS、JavaScript的原因,但随着Nodejs的发展、各种前端工具的兴起和前后端分离的深入,前端开发也越来越会从解决互联网产品的实际问题出发,不再单单是HTML、CSS和JavaScript等技术。 - InfoQ: HTML5和Javascript语言在此领域扮演者什么样的角色?
HTML和HTTP的出现才标识Web的诞生和繁荣,而JavaScript和Ajax使Web在2005年迎来第二春。HTML、CSS和JavaScript是Web编程的基石,也是Web能够如此盛行的原因。由于Web的盛行才导致HTML、CSS、JavaScript在前端编程中占据统治地位。Web不是互联网的全部,同样HTML、CSS、JavaScript也不是前端开发的全部,而是至关重要的部分,只有和整个互联网生态的其他技术有效地融合才会更强大。
- InfoQ:这个专题的名称从往届QCon中“可编程的Web”变成了“跨平台的Web”,为什么会有这样的变化?
上一届QConHangzhou的前端主题是“可编程的Web”,当时Mobile Client Application大行其道让某些人担心”Web is Dead?”,而实际情况是,新一轮的浏览器大战如火如荼,HTML5继续在理想和现实中挣扎前行,JavaScript从Web走到了Server(NodeJS),Mobile Client Application越来越多地mushup Web Application,Web Sites开始提供各种各样能解决实际问题的API,Web越来越强大的可编程性使其正发展成为互联网操作系统。
而今天,Mobile Client App依旧如日中天,但没有人再担心”Web is Dead”,反而因为多种操作系统、无数种屏幕尺寸和使用场景成为移动互联网的新挑战。大热门业务和大公司可以不考虑成本为不同的终端不同的设备构建各种客户端产品,但Web的通用性、低成本和快速发布显示了巨大优势,这就是为什么 大量类似TIME杂志的网站都已经使用Web的响应式设计来解决跨终端的问题,这也是为什么本期QCon主题要讨论“跨终端的Web”的初衷。 - InfoQ:现在各个移动平台对WebApp均提供了不留余力的支持。有为Web而生的WebOS,FirefoxOS,近日Ubuntu也发布了最新的OS系统,Android,WindowsPhone和iOS更在尽全力再提高HTML5的支持度与Javascript的运行效率。为什么会有如此繁荣的市场?
去年QConhangzhou 2012时,我曾说过“Web越来越强大的可编程性使其正发展成为互联网操作系统”,这个真正有点WebOS的味道,因为这是基于互联网管理资源的一种方式,现在已经显示巨大的能力和生命力。但今天的终端操作系统不仅要管理软件,更要管理硬件,这都不是JavaScript擅长的,这就是为什么所有基于HTML5 + JavaScript的WebOS都不会成功,因为不可能短时间内解决操作硬件的性能问题和构建大型绚丽的游戏。硬件就应该交给底层语言去解决,所以短时间内WebOS肯定不可能成功,但基于操作系统使用Web App来管理互联网资源,这正是Web所擅长的且能够跨平台的,这就是为什么今天会受到如此重视的原因,虽然目前还不够繁荣,或许在明年这时就另一个世界了。
- InfoQ:但也有人认为,在web端,html5是100%晴天,在移动端则不然。Facebook在这一年里彻底放弃了移动平台上的HTML5应用。您怎么看这一点?
今天移动端的用户规模已经超过了桌面端,但经济规模还差的很远,所以整个移动互联网还属于投资阶段,不计成本地投入导致了客户端如此火热,另外Mobile Web也没有完全准备好,比如移动端的网络稳定性、离线处理方案和性能,但随着基础设施的发展和对投入产出比的考量,跨终端的Web才是绝大部分互联网场景下的最合适选择。另外,Facebook也没有彻底放弃了移动平台上的HTML5应用,只是认为现阶段使用Native App是一个更快的实现较好体验的解决方案,两者会齐头并进。
- InfoQ:无论在桌面端还是移动端,NativeApp与WebApp永远是大家争论的焦点。您如何看待两者的选择和取舍?
Native App 和Web App只是解决人机交互环境问题的两种方案,不是竞争对手,而是互补关系,选择哪个需要看使用场景、体验和成本。现在属于移动互联网的投资期和狂热起,所以大家基本上更关注使用场景和体验,而不考虑成本。
我个人认为Web App适用于解决对网络依赖性强且需要跨终端的互联网产品,比如交易和新闻,而Native App适用于对性能、效果和流畅度要求特别高的软件产品,比如游戏和IM。整体上,我倾向于用Web App作为通用的跨终端解决方案,然后用Native App来解决大热门应用,同时两者还可以相互mashup来相互借力。 - InfoQ:这个领域在2012年有哪些值得记录的进展?在未来又有怎样的挑战与展望?
2012年最需要记录的3件事情就是“Web is Dead?”的讨论、“Facebook承认在移动平台上使用HTML5策略有误”和Win8原生支持Web App。
前2件事情不是对Mobile Web的打击,而是使Web开发的同学们真正开始思考Mobile Web所遇到的问题和Web在移动互联网时代的价值,而第3件正预示着PC和Pad的融合,也引发了这次“跨终端Web” 的讨论。今天Mobile Web最大的挑战在于网络、性能和效果,而跨终端Web要改变的不仅仅是设计开发思路,更需要运营和产品以及服务端都需要从细粒度模块化的角度来思考互联网产品的每个部分。
- InfoQ:做为QCon中这个专题的出品人,您希望通过此专题为大家带来哪些实践经验,从而解决哪些问题?
从跨浏览器到跨终端,Web应用造就了怎样精彩的商业案例?
HTML + CSS + JavaScript + Web API 解决问题的能力到底有多强大?
跨终端的Web开发会给前端开发带来怎样的挑战和变革?