noBackend:前端优先的开发模式

来源:互联网 发布:epub转azw3软件 编辑:程序博客网 时间:2024/05/22 15:34
摘要:现在的应用开发模式过度重视后端的搭建,而实际上我们早已为简化后端开发做了很多年的工作,因此minutes.io创始人Gregor Martynus针对现在更注重UX的环境,提出一个不同的解决方案——noBackend,优先前端开发。

在前不久才结束的 Front-Trends 2013 Conference上, minutes.io创始人Gregor Martynus提出了一个有趣的议题——“ 看哪,没有后端!”该议题提出的建议与传统情况下、优先后端建设的原则恰恰相反。随后InfoQ美国对他进行了采访,CSDN编译如下: 

问:noBackend(无后端)意味着开发Web应用时不再关注后端开发,为什么说这是我们应该追求的东西——它有什么优势吗?

Gregor Martynus:长久以来我们为使应用开发变得简单而做了许多工作,但尽管如此,在我们想要开发应用时,仍然会优先考虑后端架构设计:我应该采取什么技术、哪种数据库。应用的设计过程被“后端世界”所约束,而我认为,不应该再这样了。我认为,从用户的角度来看,每一个应该的设计与体验都应该是独一无二的,他们不会关注“应用是怎么运行的”。noBackend试图通过前端驱动来影响设计流程,它首先默认“一切皆可实现”,然后找到这个实现。

问:少后端(less-backend)应用真的合适吗?它的约束在哪儿?

Gregor Martynus:在说noBackend时,我并不是真的建议应用应该放弃所有后端,我承认这个词语确实令人困惑,但仍然达到了吸引人眼球的作用。

我所说的noBackend是指:你不应该在设计的时候操心后端应该如何设计,就像你没有想过浏览器做得到什么又做不到什么一样。我们可以使用JavaScript填补两者之间的空隙,把和服务器交互的事实隐藏在其后。前端开发者不再需要关心,这大大解放了他们的能力。

从技术角度来看,为了达到平稳的前端开发体验,我们需要掌握以下两种技术:

  1. CORS:为了实现跨域名Ajax请求;
  2. 异步代码:可以使回调、事件或者约定(promise )。

问:你的网站上提到了 dreamcode,它是指什么?

Gregor Martynus:我们在开发Hoddie时,正是从面向前端开发者JavaScript API开始,这正是我们所最关心的。我们不管后台实现有多么复杂,但是面向用户的前端必须尽可能简单。最终我们决定放下所有教条开始思考:“怎样才能使用最少的JavaScript代码来实现用户注册功能?”我在 网站上列举了很多用例。

其中不得不提到jQuery,它为我们提供了强大而且简单的API。我相信这也是它成功的首要原因。

另一个dreamcode非常酷的原因在于,每个开发者都能做到。不论你有多少开发经验,都无碍于空想代码。事实上,如果你是一名新手,可能相比脑中充满的高级开发者更有优势。

而dreamcode正是一个引导你应用noBackend开发设计模式的工具。通常情况下,你需要告诉前端开发者自己需要什么,比如用户账户、发邮件、上传等等功能。然后后端工程师董事开发开发,并返回一个RESTful API,之后前端开发者可以使用jQuery Ajax方法来调用、开发。但是在noBackend理念中恰恰相反,前端开发者通过dreamcode确定用户真正的需求是什么,它既是前后端开发者的接口,双方都基于它反向开发。

对于后端开发者来说,dreamcode是:

  1. BDD/TDD的又一个别名;
  2. RESTful API的继承者,但是在定义时更简单、遇到变化时更灵活。

问:noBackend通用后端是否会带来安全、隐私问题?比如说,如何防止用户使用jQuery API来向他人发送垃圾邮件?

Gregor Martynus:不会的,noBackend定义了最简单的邮件发送方法。不用说,对于发送邮件、货币支付等等方面都需要尽可能的安全,只是我认为这不需要在前端上体现出来,它只需要尽可能地简单,阻止垃圾邮件发送的逻辑应该设计在后端。比如说,你可以不允许未注册账户的游客发邮件,或者仅允许没10分钟发一次邮件。后端开发者对于解决这些问题有充分的经验,他们很擅长这些。而前段开发者不需要操心这些事情,这会花费他们太多时间。

如果你打算建立下一个Heroku,忘了后端的难处吧,只需要制作一个精美的网页,然后坐等收钱。

问:你在网站上列举的一些noBackend服务(比如remotestorage.io和hood.ie)提到了它们能够脱机工作,而当网络恢复时再度同步。主要是为移动应用考虑的,还是说有更广泛的关联?

Gregor Martynus:脱机工作并不是为了让用户脱离网络使用应用,它是为了解决延迟问题,并提供更优秀的用户体验。以minutes.io为例,它会立刻存储你所做的一切,从你正在打得字到浏览器缓存,然后通过第二个进程同步到服务器。

问:这算得上应用开发的新方式吗?或者仅仅对开发“noBackend”应用有效?

Gregor Martynus:我认为新技术都是为特定的应用而生的,它的不同之处在于,尤其适合应用逻辑集中在前端、注重用户体验的程序。

它不过是开发者尤其是前端开发者应该理解的又一个工具,noBackend应该是一种能够充分释放他们能力的解决方案,允许前端开发者在无后端的情况下进行应用开发。

注:在 noBackend网站上, 罗列了一系列后端解决方案,能够帮助你开始应用noBackend模式开发。

原文链接: infoq.com

原创粉丝点击