如果您不熟悉这些术语:
- 渐进式冰增强 2.0
- 超媒体接口
附加信息:
- 使用 HTML 构建超媒体 API
- HTML 超媒体 API 和自适应 Web 设计
问题:如何创建具有支持渐进增强 2.0 的 HTML 超媒体类型的单个客户端?因此,如果浏览器没有javascript,它会得到一个纯HTML页面,如果浏览器在移动设备上,它会显示移动视图,如果浏览器在PC上,它会显示桌面视图,等等......我在考虑这个问题,我认为这其中存在矛盾:单页javascript应用程序有自己的引导HTML文件,它们使用AJAX从服务器加载数据,而noscript客户端直接从服务器加载和显示HTML格式的数据。AJAX 数据格式也可以是 HTML,我可以使用微格式使其易于处理,但我仍然不知道如何处理 AJAX 与 noscript 的问题......知道吗?
其他想法:
我认为不可能在超媒体 API-s 上应用渐进式增强 2.0。通过任何错误,noscript 浏览器都应该获取带有错误消息的整个表单,ajax 感知浏览器应该只获取 400 个错误请求状态标头和一小部分错误数据,因为它使用 javascript 验证几乎所有内容。通过移动视图,我们只想显示当前级别的导航,在桌面视图中,我们希望显示一个深度菜单,因此我们为每个 rel=up 菜单点发送一系列 get 请求,直到我们到达 api 根目录......在这种情况下,我至少需要 3 个不同的客户端和 3 种不同的解决方案:移动、noscript 桌面、ajax 桌面,我认为没有任何方法将它们合并到一个客户端中。
渐进式增强 2.0 是一个客户端的东西,它不依赖于 REST API,因此可以将无 js 的服务器端 REST 客户端与 js 感知的客户端 REST 客户端合并。因此,可以将渐进式增强 2.0 与超媒体 API 一起使用。
通过 RESTful Web 服务,客户端应该存储当前状态,而不是 REST 服务本身。可以将浏览器用作 REST 客户端,但它的状态存储功能将非常短。它可以将状态存储在 HTTP 身份验证、ETAG 中、接受标头中、查询字符串部分,如果我在每个链接中从 REST 服务发回它。除非在没有javascript的情况下直接从HTML使用localStorage,否则浏览器作为REST客户端将是一个非常糟糕的解决方案。我不建议使用它。