2013-10-18 21 views
0

我从现有(RESTful)API构建前端Web应用程序。从现有API构建Web前端

什么是去了解这一点的最好方法是什么?我假设新的标准方式是通过像backbone.js这样的东西来实现的。

我也希望网页是不同的网址,并没有一个单一的页面应用程序。也就是说,我猜这是不好的做法,要求页面,然后发射异步api请求,当我们也可以加载数据从服务器启动,对不对?我应该考虑什么样的体系结构或技术,以便我可以重新使用API​​,但不会将两个请求背靠背发送给服务器,一个负载页面,一个负载数据?

回答

0

骨架和其他JavaScript“MV *”框架无疑是高性能事件驱动用户界面的绝佳选择。您可以使用此设计并使用不同的页面和URL。它使得在给定页面上执行异步操作变得更加简单快捷,因为您将在JSON模型中使用相关数据,并在数据更改时视图自动更新的环境中使用发布/订阅模式。这种类型的设计的另一个优点是您可以在模型中获得数据,而不是走DOM来获取数据。

0

除了Girardi的回答,您对于在初始页面加载时执行两个请求(一个用于页面,一个用于实际数据)的担忧是一个实际问题。

其中一个解决方案是将初始数据直接引导到页面中,以便您可以跳过附加的异步请求。这被称为模型引导。例如,你可以把和附加<script></script>标签,该标签将持有的自举模式:

<script> 
    window.I_MODEL = [ 
     {id: 1, name: "foo"}, 
     {id: 2, name: "bar"} 
    ] 
</script> 

进而构建在服务器端,并与一些模板机制帮助打印序列模型对进入页面模型。

搜索骨干模式引导,这里是一个从右到了点例如:http://ricostacruz.com/backbone-patterns/#bootstrapping_data

+0

感谢您的回复!这绝对是我通常为这种类型做的事情,但是,我正在使用同一台服务器上已经构建的API,并且不想为初始数据集复制代码。我不确定是否已知的做法是在我的Web应用程序控制器中将API类与API控制器分开调用。即使如此,API控制器可能会在JSON返回之前改变事物,所以我不能保证类似的输出。你明白我的意思吗? – tommybananas

+0

我更喜欢因为我的web服务只是业务层方法的包装。并且从不改变他们得到的数据,所以在我的情况下,直接调用它们是安全的,它们的输出将是相同的。我不熟悉你的环境,我不知道你的后端有什么可以或不能保证什么,但是这个场景呢:你有2个REST服务,一个给JSON和一个产生网页的服务。当有人请求网页时,在你返回之前,只需调用其他服务来响应JSON。采取该回应并将其呈现在页面中。 –

-1

嗯,这是不是一个不好的做法,加载页面,然后再请求异步数据。使模板(html)和数据调用分开,您可以最大限度地利用localStorage,browserCaching的好处。 Backbone不会为您的应用程序注入任何魔力,它只是提供了一个框架来组织您的代码,并帮助避免一次又一次的样板代码。

+0

我认为总是有2个(或更多)请求是不好的做法。这可能是实践,但这并不是一个好习惯。 – Halcyon

+0

@FritsvanCampen每种方法都有优点和缺点。如果我想缓存模板的功能使用让他们分开将永远帮助你。那么,连接和尽量减少请求的数量是好的,但如果你有一个应用程序的Gmail/Facebook的大小,这是不实际的。 –

+0

你是对的,这是一个像facebook一样的完美合理的解决方案。然而,我正在假设它不适用于这个应用程序,因为我没有使用Facebook大小的数据,而对于我的应用程序来说,这将浪费时间。 – tommybananas