我要创建一个全新的网站并从头开始编写所有内容,主要是在前端部分。我只是想知道是否有任何资源来构建可扩展的前端架构,因为我之前从未有过这种体验。任何建议,想法或书籍推荐都将受到高度赞赏!
答案 0 :(得分:2)
很难回答你的问题,因为我们不确定它的每一部分。据我所知,没有“可扩展前端架构”这样的定义。 可扩展和前端都是非常广泛的主题,所以我只能猜测......
我假设您的术语前端表示单页javascript应用程序,可扩展部分表示功能可扩展性(不是加载可伸缩性,如通常在服务器端上下文中使用的那样)。有了这些限制,我认为REST架构是我所知道的最佳匹配。
REST架构有REST服务和REST客户端。两者都是应用程序您可以在浏览器中作为前端应用程序运行REST客户端,并且可以在服务器上运行REST服务作为后端应用程序。 REST专为HTTP 1.1协议而设计,因此您可以轻松地将其放入HTTP客户端和服务器的通常上下文中。
常规Web服务仅向其客户端提供数据(例如,以JSON格式),客户端应该知道如何处理它。因此客户端必须包含业务逻辑的片段。该服务还包含业务逻辑,因为它是检查请求有效性的唯一安全环境,因为它只能访问公共持久存储(数据库)。因此,在这种情况下,服务和客户端都包含相同的代码片段,因此,Web应用程序的代码不是DRY。我猜你已经知道非DRY代码难以维护......通过REST架构,服务不仅发送数据,还发送抽象控制器(链接和表单)到客户端的表示。这可以通过发送任何超媒体格式来完成。如果您认为HTTP通信也是如此,它会以HTML格式发送控制器和数据表示。我们可以使用HTML作为消息格式,但不建议这样做,因为解析它既困难又缓慢,并且没有任何建议如何以HTML格式序列化数据。 XML和JSON不同,它们是为数据序列化而设计的,但它们缺乏控制器描述。目前有许多基于XML和JSON构建的新生超媒体格式,它们具有以下功能:ATOM + XML,HAL + XML,HAL + JSON,JSON-LD,警报器(JSON),集合+ JSON等...... / p>
因此,您的REST客户端从REST服务获取超媒体格式的数据和控制器表示。例如,通过个人资料页面,您可以获得姓名,出生日期等...作为数据和编辑表单,删除链接等...作为控制器。目前,如何描述控制器的标准/建议很少。您可以了解我提到的媒体类型或制作自己的媒体类型。它并不是那么难......重要的是,REST客户端在得到它们之前不应该知道任何关于确切控制器的信息。它只能知道如何显示从服务中获取的控制器。例如,通过注册表单,它不应该知道url方法,输入字段的名称等...但它必须知道如何显示以当前超媒体格式描述的注册表单。浏览器也是这样做的,它们将表单作为HTML FORM元素获取,并且非常好地显示它们,尽管它们对将填充的表单发送回服务器时会发生什么一无所知。因此浏览器对它们正在显示的Web应用程序的业务逻辑一无所知。 REST客户端对REST服务也是如此,他们对REST服务的业务逻辑一无所知,他们只知道如何显示REST服务发回的超媒体,以及如何向服务发送请求。我认为这是一种易于理解的方法......由于这种设计方法,REST客户端和REST服务是松散耦合,容错和易于维护的。例如,如果您向REST服务添加新功能(例如新链接),它通常不会影响您的REST客户端,因为他们已经准备好处理链接......
我认为理解REST架构的理论很容易,但是技术诀窍要困难得多。它引起了很多混乱,人们经常将他们的常规Web服务称为REST服务,因为REST架构现在是一种炒作。每个人都想这样做,但很少有人这样做......