首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >AngularJS -服务器端渲染

AngularJS -服务器端渲染
EN

Stack Overflow用户
提问于 2013-04-26 17:07:26
回答 10查看 60.7K关注 0票数 75

正如你可能知道的,AirBnb开源Rendr (http://nerds.airbnb.com/weve-open-sourced-rendr),它应该支持骨干应用程序的服务器端渲染。这很酷,因为用户可以在服务器上运行模板呈现的第一次“迭代”,而客户端可以完全呈现HTML文档和整个JS应用程序。它极大地减少了显示时间,并且可以让我们摆脱其他服务器端模板系统。

那么,有没有人设法用jsdom或ZombieJS来呈现AngularJS?这些在Node.js上的dom/浏览器模拟在理论上应该足以用于简单的服务器端角度模板,但我发现在谷歌上搜索它的结果并不是很确定。

EN

回答 10

Stack Overflow用户

发布于 2013-05-28 05:49:34

这里有另一个解决方案:https://github.com/ithkuil/angular-on-server

详细信息,请访问wiki

来自repo作者的更新:那是大约6年前(在本编辑的时候)。在这一点上,人们可能应该使用https://angular.io/guide/universal或只使用https://prerender.io/

票数 16
EN

Stack Overflow用户

发布于 2016-07-15 22:48:17

这个新的软件包https://github.com/a-lucas/angular.js-server允许您预先呈现Angular应用程序,并将其发送到客户端,然后客户端将执行jS代码。

它支持每个url的缓存,您可以定义规则来激活URL预渲染。

PS:我是这个包的主要贡献者。

票数 7
EN

Stack Overflow用户

发布于 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等等。

你也可以考虑查看作用域模型并将其与浏览器端作用域同步,但这完全是另一回事。

票数 5
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/16232631

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档