正如你可能知道的,AirBnb开源Rendr (http://nerds.airbnb.com/weve-open-sourced-rendr),它应该支持骨干应用程序的服务器端渲染。这很酷,因为用户可以在服务器上运行模板呈现的第一次“迭代”,而客户端可以完全呈现HTML文档和整个JS应用程序。它极大地减少了显示时间,并且可以让我们摆脱其他服务器端模板系统。
那么,有没有人设法用jsdom或ZombieJS来呈现AngularJS?这些在Node.js上的dom/浏览器模拟在理论上应该足以用于简单的服务器端角度模板,但我发现在谷歌上搜索它的结果并不是很确定。
发布于 2013-05-28 05:49:34
这里有另一个解决方案:https://github.com/ithkuil/angular-on-server
详细信息,请访问wiki
来自repo作者的更新:那是大约6年前(在本编辑的时候)。在这一点上,人们可能应该使用https://angular.io/guide/universal或只使用https://prerender.io/
发布于 2016-07-15 22:48:17
这个新的软件包https://github.com/a-lucas/angular.js-server允许您预先呈现Angular应用程序,并将其发送到客户端,然后客户端将执行jS代码。
它支持每个url的缓存,您可以定义规则来激活URL预渲染。
PS:我是这个包的主要贡献者。
发布于 2014-11-02 08:05:33
AngularJS在jsdom上下文中工作,不需要任何技巧。只需在初始化时将angular.js添加到Just列表和angular应用程序的主页到jsdom。
因此,渲染非常简单:只需在jsdom中使用angular,它就能正常工作。把它放到浏览器上有点困难。
一种方法是批量同步DOM更改。
要获得服务器端到客户端的动态更新,您可以使用MutationEvents (不幸的是,jsdom不支持MutationObservers,但MutationEvents运行得非常快)。使用它们将DOM更改堆叠到累加器数组中,并定期将其推送到客户端浏览器(例如,每25毫秒)。
此外,为了启用用户事件,您应该在浏览器上以文档方式跟踪它们,并类似地累积并将它们推送到服务器。
这种方法的一个实现是jsdom-sync (https://www.npmjs.org/package/jsdom-sync)。
服务器端渲染的一个缺点是缺少DOM框模型的大小,因为要获得元素的宽度/高度,应该实际渲染它。这意味着这个解决方案几乎不适合svg等等。
你也可以考虑查看作用域模型并将其与浏览器端作用域同步,但这完全是另一回事。
https://stackoverflow.com/questions/16232631
复制相似问题