更新: 根据Rob Eisenberg 2016年4月16日在FDConf的回应,服务器端渲染将在2016年实现,现在有一个核心团队成员正在负责此功能,并且已经设定了截止日期。
关于Aurelia的Universal/Isomorphic问题,现在有一个开放问题可以供您关注。特别是EisenbergEffect(即Aurelia的创建者Rob Eisenberg)表示他们正在逐步努力提供Aurelia的Universal支持。他发表了一篇文章来详细说明这个问题:
EisenbergEffect 在8月25日评论道:我们计划在接下来的一个月内封锁住一些事情。这并不意味着我们之后不会添加任何内容,但是我们需要努力稳定化、提高性能、优化文档,而不受许多新功能的干扰。首先,“等同性”不是我们想在v1初版中解决的用例。再次强调,这并不意味着我们以后不会做它。但是我们希望建立一个稳固的框架,能够运行基于浏览器的应用程序,还有像phone gap和electron/nwjs桌面应用程序这样的应用。这是我们最初的目标,我们希望确保处理这些方案比任何其他框架或库更好。
之后,我们有一些其他功能要做,这些功能本身就很有价值,但也将使我们更接近“等同性”。
我们已经开始一些1阶段的工作了。可能会在我们的第一个版本中得到实现。我们不会急于求成,但已经在进行中,并且正在寻找问题区域,以便使其正常工作。2-4个步骤涉及大量工作。实际上,我们在这里谈论的是一系列功能,每个功能都相当复杂。因此,在v1之后,这些功能可能会分阶段发布。
我们真的不想做Angular 2所做的事情。他们已经极大地复杂化了他们的架构......到了很少有人能够理解,并且使用它开发应用程序变得更加复杂,具有许多微妙之处。我们真的不想这样,所以我们首先关注我们
我唯一能提出的建议是:使用phantomjs渲染页面+使用redis加速该过程。
但您将遇到许多麻烦,尤其是在客户端恢复状态时。
.......
从服务器加载已渲染的页面,在客户端以通常方式渲染新页面,然后切换用户界面(UI)。
这不是真正的同构(isomorphic),但在第一次页面加载时类似于https://github.com/rails/turbolinks。
.....
我希望Aurelia团队很快为此情况提供更简单的解决方案。
<html>
<body aurelia-app="main">
<h1>static copy of the website here</h1>
<script src="scripts/vendor-bundle.js" data-main="aurelia-bootstrapper"></script>
</body>
</html>
这当然是完全手动的,如果初始渲染包含数据库中的任何内容,则静态副本可能需要在每次更改数据库内容时进行更新。(这正是等同渲染所要解决的问题)
但对于我来说,我只需要一个简单网站,其中包含一些很少更新的信息,这个解决方案已经够用了。至少在我能够实现适当的等同渲染之前,它都足够使用。