【发布时间】:2012-04-08 16:38:05
【问题描述】:
假设服务器在初始请求时返回一个基于 JavaScript 的单页应用程序。除了一些对每个应用程序都通用的初始化代码外,服务器在初始请求时仅返回显示请求页面(例如索引页面)所需的应用程序部分(然后缓存并呈现)。
当用户点击应用程序时,应用程序的其他部分应该从服务器异步加载(“获取”、“请求”或您想调用它)。 “部分”是指呈现页面所需的 javascript 代码、图像、css 等。让我们关注本次讨论中的 javascript 代码部分。
请务必注意,要返回到浏览器的 javascript 代码不包含在单独的(静态)文件中(这在当时很容易,并且由于性能原因将来可能会出现这种情况),而是包含在一个文件,所以它不是 1:1 关联(请求:文件)。
例如我们可以像这样定义一个应用程序:
var LayoutPresenter = App.Presenter.extend('LayoutPresenter', {
__view: '<div>{{link "Author" "/author"}} - {{link "Book" "/book"}}</div>'
});
var AuthorPresenter = App.Presenter.extend('AuthorPresenter', {
__view: '<div><h1>{{name}}</h1></div>',
__parent: LayoutPresenter,
__context: { name: "Steve" }
});
var BookPresenter = App.Presenter.extend('BookPresenter', {
__view: '<div><h1>{{title}}</h1></div>',
__parent: LayoutPresenter,
__context: { title: "Advanced JavaScript" }
});
App.Presenter 是我正在编写的库的一部分,可在浏览器(或任何其他客户端)中使用。
所以假设用户正在浏览之前没有加载的 Book 页面(最初也没有缓存在浏览器中),BookPresenter 代码是一个函数,应该由服务器返回(假设 LayoutPresenter 代码已经在浏览器中可用,并且 App.Presenter 仍然可用,因为它是库的一部分)。我在服务器端运行 node.js。
您建议如何解决这个问题?
有 eval 函数,因此可以将 javascript 作为字符串发送并使用 eval() 将其恢复,但这种方法似乎是不好的做法。
【问题讨论】:
-
顺便问一下,您找到适合您的问题的答案了吗?
标签: javascript node.js