在近期举办的前端趋势2013 大会上,Gregor Martynus 做了一场题为“各位快看,不用后台!”的报告,站在前端的视角谈应用开发,服务端组件只退化到实现浏览器尚不支持的特性,这种方式与传统开发方式截然相反,后者首先要关注应用服务端,然后再利用前端技巧来提升应用。他们还建了一个名为 noBackend 的网站来深入传播这种理念。
为了解更多信息,InfoQ 就此采访了 Gregor。
InfoQ:noBackend 编写应用无需关注后端,为什么它如此有吸引力,或者我们可期望从中得到什么,它有什么优势?
Gregor:我们主要致力于让构建应用的过程变得非常简单,但是,当我打算做一款应用时,我仍得首先满脑子考虑如何处理后端:我将用什么样的技术,什么数据库。构建应用的设计过程仍然受后端的支配和限制。而我认为,根本没必要再这样做,我想,从用户的视角来看,一款应用的设计和用户体验是独特的,没有人关心“它是怎样工作的。”noBackend 试图建议以前端驱动的设计过程来反映这种观点,首先“一切皆有可能”,然后工作从此逆袭。
InfoQ:免后端的 Web 应用真的可行么?它有哪些限制么?
Gregor:当谈到 noBackend 时,我并不主张应用完全不需要后端,我承认这个词有点儿令人困惑,但它确实很吸引眼球。
我说 noBackend 的真实意思是:你不必再需要考虑后端了。你不必像现在这样来区分哪些特性有的浏览器支持而另一款浏览器不支持。我们可以用现有的 Javascript 来填平这些鸿沟,隐藏它与屏幕背后服务器的真实交互,前端开发者根本不需要关心这些。这点是非常强大的。
从技术的视角,为保障前端开发者的体验流畅,我们需要两个东西:
1 CORS,用来处理跨域的 AJAX 请求。
2 异步代码,如回调、事件或承诺。
这些现在都已成熟了,所以现在我们可以准备开始了。
InfoQ:你的网站提到 dreamcode,这是什么?
Gregor:当我们开始做 Hoodie 项目时,我们以面向前端开发者的 Javascript API 起步,这是我们最关心的。我们并不关心屏幕背后的事情有多复杂,对于用户来说越简单越好。我们决定忽略所有限制甚至想:“好了,我想要注册一名用户,搞定它的最简单的 Javascript 代码片段是什么。”我已经列举了一些我们网站上的用例。
一个优秀的例子是 jQuery。JQuery 很了不起,提供了简单却功能强大的 API,我想这是它成功的一大原因。
另一件非常酷的是 dreamcode:每个开发者都能使用它,不论你的经验有多少,你可以用 dreamcode。事实上,如果你是一个初学者,你甚至更加有优势,因为你不必像高级开发者那样考虑之前困扰你的根深蒂固的各种限制。
Dreamcode 是引领应用采用 noBackend 方式进行设计处理的工具。通常,你得告诉后端开发者你需要什么,如用户账户、发送邮件、上传等。后端开发者将构建它,生成 RESTful API 返回给前端开发者,然后前端人员需要使用如 jQuery AJAX 方法来接通。而替代方案是,前端人员可以通过 dreamcode 准确的描述应用用户的真实需求,现在 dreamcode 是前端和后端之间的接口,两端都能依赖它工作。
从后端的视角,dreamcode 是:
2 REST API 的继任者,定义更简单,未来发生变化时更易扩展。
InfoQ:noBackend 的一般性后端安全是怎样实现的?比如怎样避免用户通过 JavaScript 控制台来使用 email API 以及产生垃圾邮件骚扰他人。
Gregor:什么都没有。noBackend 只用最简单的方式定义了怎样发生邮件。当然,我非常赞同关注安全,当要发送邮件,或收到支付账单,或者不论什么。我只是认为前端的 API 并不需要反映出来。它应当超级简单,防止垃圾邮件的逻辑应当放到后端。比如,你可以阻止没有账户的访客发送邮件,或者禁止每分钟发送超过 10 封邮件。这些问题后端人员解决已经多年,他们很擅长。前端人员并不需要被此困扰,我确信这对他们来说很有价值。
如果你要构建下一个 heroku,带走后端的所有痛苦,通过提供一个漂亮的精心制作的前端,然后:你就可以拿走我所有的钱。
InfoQ:noBackend 与后端作为服务有什么关系呢?两者观点听起来非常相似。
Gregor:后端作为服务是一种特殊的 noBackend,也是从商业角度对其的描述,当我尝试用 noBackend 来把它以 UX 开发者的角度带入讨论中。
比如, Firebase 是后端作为服务, Parse 、 Kinvey 或 Beckendles 也是如此,还有一些我考虑可以作为 noBackend 方案的部分开源解决方案,但你得亲自选择他们,或者将其作为备选,如 hood.ie , remotestorage.io 或 deployd.com 。
InfoQ:列在你的网站上(比如 remotestorage.io 和 hood.ie)的部分 noBackend 服务提到了离线处理和联网同步的能力。这首先对移动应用很重要,或者离线能力有更广泛的实用性么?
Gregor:离线处理能力不仅能让用户在没有网络连接的情况下正常使用应用,它消除了延迟,因此能提供更奇妙的用户体验。拿 minutes.io 来说,它能在你操作之后马上存储你的记录,当你输入文字时,存入你浏览器的本地缓存,然后,在秒级的处理后,数据同步到服务器中。
InfoQ:这是开发应用的一种全新方式,还是只对某些特定范围内应用采用 noBackend 方式开发应用才有效?
Gregor:我想任何一种新技术都是为了某些特定种类的应用服务的,这是一种不同的方式,尤其适合大部分逻辑集中在前端的应用,其中用户体验是最重要的特性。
这只是开发者应该关注到另一款工具,尤其对于前端开发者而言,noBackend 方案对于那些不擅长自己开发后端的人来说是款很好的工具,让他们完全有能力来构建应用。
noBackend 网站上列出了现在能用来创建 noBackend 风格应用的一些现成的后端解决方案。
查看英文原文: NoBackend: Front-End First Web Development
感谢马国耀对本文的审校。
给InfoQ 中文站投稿或者参与内容翻译工作,请邮件至 editors@cn.infoq.com 。也欢迎大家通过新浪微博( @InfoQ )或者腾讯微博( @InfoQ )关注我们,并与我们的编辑和其他读者朋友交流。
评论