我正在从现有(RESTful)API 构建前端 Web 应用程序。
解决此问题的最佳方法是什么?我假设执行此操作的新标准方法是通过诸如骨干网之类的东西。
我还希望页面是不同的 URL,并且没有单页应用程序。也就是说,我猜在我们不妨从服务器加载数据以启动时,请求页面然后触发异步 api 请求是不好的做法,对吧?我应该考虑什么样的架构或技术,以便我可以重用 API,但不会将两个请求背靠背发送到服务器,一个用于加载页面,一个用于加载数据?
我正在从现有(RESTful)API 构建前端 Web 应用程序。
解决此问题的最佳方法是什么?我假设执行此操作的新标准方法是通过诸如骨干网之类的东西。
我还希望页面是不同的 URL,并且没有单页应用程序。也就是说,我猜在我们不妨从服务器加载数据以启动时,请求页面然后触发异步 api 请求是不好的做法,对吧?我应该考虑什么样的架构或技术,以便我可以重用 API,但不会将两个请求背靠背发送到服务器,一个用于加载页面,一个用于加载数据?
Backbone 和其他 JavaScript“MV*”框架绝对是高性能事件驱动 UI 的绝佳选择。您可以使用此设计并拥有不同的页面和 URL。它只是让在给定页面上执行异步操作变得更容易和更快,因为您将在 JSON 模型中拥有相关数据,并在数据更改时视图自动更新的环境中使用 pub/sub 模式。这种设计的另一个优点是您可以将数据放在模型中,而不是遍历 DOM 来获取数据。
除了 Girardi 的回答之外,您担心在初始页面加载时执行两个请求 - 一个用于页面,一个用于实际数据 - 是一个真正的问题。
一种解决方案是将初始数据引导到页面中,这样您就可以跳过额外的异步请求。这称为模型引导。例如,您可以放置一个额外<script></script>
的标签来保存自举模型:
<script>
window.I_MODEL = [
{id: 1, name: "foo"},
{id: 2, name: "bar"}
]
</script>
然后在服务器端构建您的模型,并借助一些模板机制将序列化模型直接打印到页面中。
搜索主干模型引导,这里是一个正确的例子:http ://ricostacruz.com/backbone-patterns/#bootstrapping_data
好吧,首先加载页面然后请求异步数据并不是一个坏习惯。将模板(html)和数据调用分开,您可以最大限度地利用本地存储、浏览器缓存的好处。Backbone 不会为您的应用程序注入任何魔力,它只是提供了一个框架来组织您的代码,并有助于一次又一次地避免一些样板代码。