2012-07-02 48 views
0

假设您要构建一个功能强大的单页客户端应用程序,该应用程序可侦听URL更改以浏览应用程序。假设用户(或搜索引擎机器人)通过它的url加载一个页面,而不是像传统的那样传递静态的JavaScript文件并点击api,我们想要预先计算服务器端和交付的所有内容DOM与js状态一起。预计算客户端Javascript执行

我想知道是否有现有的工具或技术来持续执行状态到客户端。

我知道我可以像phantom JS那样执行脚本并输出DOM元素,但是事件处理程序,控制器和js内存状态将无法正确连接。我可以嗅出我们的用户代理,只将预先计算好的内容发送给机器人,但我恐怕谷歌会为此付出惩罚,而且我们也失去了将所有事先预先计算好的速度优势。

回答

0

所以,你想编译,服务器端,并发送到客户端请求在特定的URL资源的结果?你的后端是用什么书写的?

我们有一个在GAE上运行的API。我们的应用程序是一个单页面应用程序,我们使用HTML5历史对象,因此我们必须对前端的实际URL进行“真实回应”。

要处理这个问题,我们使用JSP预先缓存页面中的数据,因为它从服务器加载并发送到客户端。

在我们使用骨干前端,所以我们修改Backbone.sync寻找它在本地寻找页面上的数据的副本,如果它不存在,只有从服务器作为一个AJAX调用请求它。

所以,是的,这几乎是每个网站在做AJAX之前所做的。诀窍在于编写应用程序,以便数据可以在页面中本地化(甚至可以在localStorage中),如果不是则请求数据。然后确保你的页面是在服务器端建立的(所以我们实际上将数据填充到服务器端的HTML元素中,这样页面就不需要客户端上的JS)。

如果你去别的地方,数据是动态的,页面不会重新加载。