【转】无后端(nobackend):前端优先的Web开发【译】

每个应用都由两样东西构成:该应用独有的功能和所有应用共有的功能,比方说用户注册、登录、忘记密码等。而从用户的角度出发,那些独有的功能归结起来就是用户界面以及系统的行为模式。而在视觉表象之后的功能,用户并不关心,他们只期望系统能按预期运行就可以了。

前端和后端有各自的侧重点,因此往往也需要不同的技能,由不同的开发人员来负责完成。无后端(nobackend)的开发原则能够进一步解偶这些不同的侧重点,这样两边的开发人员可以更加专注于各自真正热衷的工作。

一个简单的例子

后端经常需要提供API给前端,以下是一个简单的例子,使用API进行用户登录。

1
2
POST /session
{ "email":"[email protected]", "password": "secret"  }

前端的开发人员需要负责发送上述请求并对结果进行响应,还要考虑到一些极端的情况,如失去连接或不可预知的服务器错误等。与此相反的是,无后端的设计原则则建议由前端开发人员来定义API,用前端的代码来描述后端的功能,举例如下:

1
2
3
signIn( ‘[email protected]‘, ‘secret‘  )
.then( showDashboard  )
.fail( showError  )

我们称此为梦幻代码(Dreamcode),因为这些代码经常是在真正的代码可运行以前就已经写好了。初一看,这样并没有多大意义,只不过是改成了发送AJAX请求并调用相应的回调函数而已,但是以这样的方式定义的API在许多方面都会更加强大:

1. 灵活

用户如果想要登录,那么他们也就只关心登录这个行为本身,而绝不会去关心:

  • 请求是否是送到应用的服务器还是一个中央的验证服务器
  • 是一个HTTP的POST请求还是PUT请求。
  • 是否是通过websocket发送的
  • 验证使用的cookies还是使用session ID或者是自定义的header
  • 应用是否会在前一个请求时后再次发送请求

signIn这个方法的实现可以进行调整以反映后端的变化,但是就这个API本身,前端开发人员并不需要去修改了。

2. 简洁

从前端开发人员的角度来看,实现signIn方法要简单的多,代码量也可以少很多;而从后端开发人员的角度来看,尽管刚开始要投入更多的精力,但是和RESTful API相比,前面的API要更容易定义,文档化和测试。

3. 前端驱动

前端开发人员可以引领构建应用的整个设计流程。以Dreadcode的方式来描述后端的功能,可以让开发人员更加专注于用户体验,从而避免了由于讨论具体的实现细节而有所分心,也不会由于要等待后端API的实现而拖延项目的进度。

一个更加复杂的例子

当你研究一个更复杂的例子以后,前优势会显得更加明显。假设你想要发送一封邮件,要附上当前页的PDF。

1
2
3
4
5
6
7
8
9
sendEmail({
  subject: "Hello, World!",
  text: "This mail has been sent from the frontend",
  html: "This mail has been sent from the frontend",
  to: "[email protected]",
  attachments: [
      convert( document.body  ).to("report.pdf"),
  ]
})

要让这段代码跑起来,并且要让它不受垃圾邮件的影响,可能会相当困难。但是至少可以马上写一些quick和dirty的实现,然后再一点一点地改进,而在这个过程中无需改变API。这里的关键点在于,前端开发人员可以把这看成是一个已有的功能,从而可以专注于用户体验,而不需要去关心后台开发人员到目前为止究竟有多么复杂地实现了这个功能。

现有的一些nobackend的解决方案

一个nobackend的解决方案应该提供一个前端的API来处理一些通用的后端任务,至少应该包括用户验证、数据持久化和同步等。以下是一些可以关注的方案:

也可以参考下:unhosted。以上这个列表中,绝大多数都是托管服务,对于想要用自己的服务器来托管的同学,可以选择开源的deployd。

原文:http://nobackend.org/2013/05/welcome-to-noBackend.html

时间: 2024-08-23 12:53:41

【转】无后端(nobackend):前端优先的Web开发【译】的相关文章

“无后端”的开发模式

"无后端"怎么开发,数据库.API 接口怎么办?前端的专业化已成趋势,独立开发功能满足定制化需求已是呼之即出."无后端"也恰逢其时,这种开发模式释放了前端开发的开发能力. "无后端"是为移动应用开发而生的开放API服务平台(PC站点也能支持),内置通用的API服务,当然也支持自定义的API,后端开发还是可以开发一些复杂的API.内置的API支持通用的任务处理和操作,比如用户登录.退出.密码恢复.数据保存.文件上传等等.后端开发自定义的API用来处

API优先的Web框架Synth,以及社区的不同声音

在近期Google的AngularJS会议上,Synth浮出水面,它是一套基于Node.js构建的API优先的Web应用框架. 自Synth被披露以来,在一个半月的时间里,其GitHub项目从1星增长到了超过500星.但Synth的创造者Jon Abrams表示,更广泛的开发者社区依旧对该框架感到迷茫. Jon Abrams表示,Synth项目不同于传统Node.js Web框架.它的设计目的,是简化后端资源的创建过程--这些资源可以在加载AngularJS视图的时候自动预加载. Synth的特

移动端 Web 开发前端知识整理

文章来源: http://www.restran.net/2015/05/14/mobile-web-front-end-collections/ 最近整理的移动端 Web 开发前端知识,不定期更新. HTML5 可以做什么 拍照 获取地理位置 手势 canvas 绘图和动画(硬件加速) localstorage,本地缓存 HTML5 动画效果 demo http://fff.cmiscm.com/#!/main CSS3 动画 http://isux.tencent.com/css3/inde

熟悉基于JSP和Servlet的Java Web开发,对Servlet和JSP的工作原理和生命周期有深入了解,熟练的使用JSTL和EL编写无脚本动态页面,有使用监听器、过滤器等Web组件以及MVC架构模式进行Java Web项目开发的经验。

熟悉基于JSP和Servlet的Java Web开发,对Servlet和JSP的工作原理和生命周期有深入了解,熟练的使用JSTL和EL编写无脚本动态页面,有使用监听器.过滤器等Web组件以及MVC架构模式进行Java Web项目开发的经验. 1.说一说Servlet生命周期(非常重要) Servlet生命周期包括三部分: 初始化:Web容器加载servlet,调用init()方法 只执行一次 处理请求:当请求到达时,运行其service()方法.service()自动调用与请求相对应的doXXX

web 前端篇:web前端到底是什么?有前途吗 ?

{" web前端开发 "是什么? } {" web前端开发 "有前途吗?}{" web前端开发 "到底怎么学?}这3个对象,是你入[前端]的初恋,对!没错同时和 3个对象谈恋爱. web 前端篇:web前端到底是什么?有前途吗 ?请听:微信jingfeng18分享 NO 1: web前端开发 "是什么? 其实web前端这个职位,并没有一个有效的历史记录可以查询,更没有一个明确的定义,她不像Java 攻城狮.c++开发这种一开始就有明确定

Web开发中 前端路由 实现的几种方式和适用场景

浅析Web开发中前端路由实现的几种方式 主题 Web开发 故事从名叫Oliver的绿箭虾`说起,这位大虾酷爱社交网站,一天他打开了 Twitter ,从发过的tweets的选项卡一路切到followers选项卡,Oliver发现页面的内容变化了,URL也变化了,但为什么页面没有闪烁刷新呢?于是Oliver打开的网络监控器(没错,Oliver是个程序员),他惊讶地发现在切换选项卡时,只有几个XHR请求发生,但页面的URL却在对应着变化,这让Oliver不得不去思考这一机制的原因- 叙事体故事讲完,

前端存储之Web Sql Database

前言 在上一篇前端存储之indexedDB中说到,我们项目组要搞一个前后端分离的项目,要求在前端实现存储,我们首先找到了indexedDB,而我们研究了一段时间的indexedDB后,发现它并不是很适合我们的项目,原因文章后面会讲到,所以我们就继续找,于是我们就找到了Web Sql Database,发现这个前端数据库是比较适合我们的项目的,于是果断转投Web Sql Database的怀抱,找存储工具跟穿鞋一个道理,不在乎多炫酷,合适才是王道,要是因为不合适导致磨脚是走不长远的,既然找到了合适

浅析Web开发中前端路由实现的几种方式

故事从名叫Oliver的绿箭虾`说起,这位大虾酷爱社交网站,一天他打开了 Twitter ,从发过的tweets的选项卡一路切到followers选项卡,Oliver发现页面的内容变化了,URL也变化了,但为什么页面没有闪烁刷新呢?于是Oliver打开的网络监控器(没错,Oliver是个程序员),他惊讶地发现在切换选项卡时,只有几个XHR请求发生,但页面的URL却在对应着变化,这让Oliver不得不去思考这一机制的原因… 叙事体故事讲完,进入正题.首先,我们知道传统而经典的Web开发中,服务器端

前端基于react,后端基于.net core2.0的开发之路(1) 介绍

文章提纲目录 1.前端基于react,后端基于.net core2.0的开发之路(1) 介绍 2.前端基于react,后端基于.net core2.0的开发之路(2) 开发环境的配置,注意事项,后端数据初始化 3.前端基于react,后端基于.net core2.0的开发之路(3) 各个技术栈配置和说明 4.前端基于react,后端基于.net core2.0的开发之路(4) 前端路由,模型,服务的说明 5.前端基于react,后端基于.net core2.0的开发之路(5) 配置node层,s