繁体   English   中英

Aurelia:同构?

[英]Aurelia: Isomorphic?

据我所知,Aurelia不支持这里提到的服务器端渲染。

但问题是:是否有可能通过一些黑客/解决方法来做到这一点?

最明显的想法是使用Phantom,Nightmare.js或其他任何东西来简单地在服务器上的Chrome中呈现该页面并将其提供给客户端,但这很可能会导致很大的生产力问题。

谢谢!

UPD

根据Rob Eisenberg今天(2016年4月16日)对FDConf的回应,服务器端渲染将在2016年实施,有一个核心团队成员正在研究这个,并且这个功能有截止日期。

Universal / Isomorphic Aurelia有一个可以监控的未解决的问题 尤其是EisenbergEffect(Aurelia的创建者Rob Eisenberg)表示他们正在逐步为Aurelia提供Universal支持。 他发表的这篇文章提供了大部分细节:

EisenbergEffect于8月25日发表评论

我们正试图在下个月内锁定事情。 这并不意味着我们之后不会添加任何内容,但我们需要努力实现稳定性,性能和可靠的文档,而不会分散许多新功能。

首先,“同构”不是我们想要解决的初始v1版本的用例。 同样,这并不意味着我们以后不会这样做。 但是,我们希望首先为基于浏览器的应用程序以及手机差距和电子/ nwjs桌面应用程序提供可靠的框架。 这是我们最初的目标,我们希望确保比任何其他框架或库更好地处理这些场景。

在那之后,我们还有其他一些我们想做的功能,这些功能本身就很有价值,但也会让我们更接近于同构。

  1. 启用所有aurelia库以在服务器上运行。 这可以实现一些新的测试场景,因此只有从这个角度来看它才有价值。
  2. 一旦代码可以在服务器上运行,我们就可以实现服务器视图编译。 这不是同构渲染,而是在构建和捆绑过程中运行Aurelia视图编译器的能力。 这使得可以提前完成更多工作,作为构建的一部分,然后不需要在运行时在浏览器中完成。 因此,这将改善所有应用程序的启动时间并减少所有组件的初始渲染时间。 它还可以将编译视图存储在浏览器本地缓存中,以提高应用程序连续运行的性能。
  3. 在这两件事都到位后,我们可以看看为每条路线做一个完整的服务器渲染。 这在最真实的意义上并不完全同构,但它解决了SEO问题,而不需要第三方库。 所以,在那里找到解决方案真好。
  4. 最后,我们可以将服务器预呈现的应用程序与在浏览器中运行的有状态Aurelia应用程序“同步”,为我们提供100%的同构支持。 那么,那些是阶段。 前两个对所有开发人员都有好处,即使那些对同构应用程序不感兴趣的开发人员也是如此。 今天的第三阶段可以通过第三方库来完成,所以对于那些不想要额外依赖的人来说,这对我们来说是一件好事。 所有这一切都导致4增加最后的部分。

我们已经开始了一些关于1的工作。这可能会进入我们的第一个版本。 我们不会推动它,但它已经在进行中,我们正在寻找问题区域,以便我们可以使它工作。 步骤2-4涉及重要工作。 真的,我们在这里讨论的是一系列功能,每个功能都相当复杂。 因此,这些可能会在v1之后分阶段进行,作为点发布。

我们真的不想做Angular 2所做的事情。 他们的架构大规模复杂化......以至于很少有人能够理解它并且用它开发应用程序变得更加复杂,有许多细微差别。 我们真的不希望这样,所以我们首先关注我们想要的开发者体验,然后我们会回来看看同构支持(是的,我们已经有了如何干净利落地想法,但想要给那些一段时间成熟的想法)。 在所有这些中,我们的目标是模块化。 所以,如果你不关心同构,你就不必去思考或担心它。 如果你这样做,你将安装必要的软件包,同意系统的“约束”,并在你的路上。

所以,对于所有对这个话题感兴趣的人,我会请你耐心等待。 对于那些对同构不感兴趣的人,不要担心,我们不会扼杀开发者的经验。 对于那些想要它的人,你将不得不等待更长时间,它将分阶段和模块化的部分,以免扰乱他人。

就在现在

我可以建议的唯一方法:使用phantomjs渲染页面+使用redis加速该过程。

但是在客户端恢复状态会有很多麻烦。

.......

脏的解决方案

从服务器和客户端加载呈现的页面以通常的方式呈现新的页面,而不是切换UI。

它不会是真正的同构,但首页加载时会像https://github.com/rails/turbolinks

.....

我希望很快Aurelia团队能为这个案例提供更简单的东西。

在目前的Aurelia中,有可能增强现有的html。 该文件说

到目前为止,您已经看到Aurelia用根组件替换了DOM的一部分。 但是,这不是用Aurelia渲染的唯一方法。 Aurelia还可以逐步增强现有的HTML。

查看增强部分@ http://aurelia.io/docs.html#/aurelia/framework/1.0.0-beta.1.0.8/doc/article/app-configuration-and-startup

我期待着能够更好地记录这个功能。 在我看来,在服务器上渲染html并注入aurelia将使用它,谷歌也会喜欢它。

我刚刚提出的一个黑客攻击是将初始渲染的静态副本放入index.html文件中:

<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>

这当然是完全手动的,如果初始呈现包含来自数据库的任何内容,则每次数据库内容更改时都可能需要更新静态副本。 (这当然是什么同构渲染应该解决)

但是对于我的需求,这是一个简单的网站,其中包含一些很少更新的信息,这个解决方案已经足够了。 它至少就足够了,直到我能够实现正确的同构渲染。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM