是否可以在 Angular JS 中进行服务器端渲染(在旧版本中,即 2.0 之前的版本)?
Posted
技术标签:
【中文标题】是否可以在 Angular JS 中进行服务器端渲染(在旧版本中,即 2.0 之前的版本)?【英文标题】:is it possible to do server side rendering in angular JS(in older version i.e. version before 2.0)? 【发布时间】:2016-05-12 12:11:22 【问题描述】:我想用 angularJS 进行服务器端渲染。是否可以在旧版本的 angularJS(2.0 之前的版本)中做到这一点?
【问题讨论】:
【参考方案1】:有一些 npm 模块可以在服务器端解析 AngularJS 模板:
AngularJS-Server 建立在 jsdom(Node 的 DOM API 的实现)和 angularcontext 之上,后者提供了一个轻量级容器,用于实例化您的 AngularJS 应用程序。
在我最终在服务器上运行了一个非常基本的 AngularJS 示例后,我继续进行路由。我遇到的第一个问题是 jsdom 只是将 Window 对象的 XMLHttpRequest 存根,所以它什么也不做。解决方案很简单——修改 lib/jsdom/browser/index.js 中的一行:
XMLHttpRequest: require('../../../../xmlhttprequest').XMLHttpRequest
您的 Angular 应用程序必须使用 html5mode。这个要求背后的原因是浏览器不会将 hashbang 片段发送到服务器。
例如,在服务器端渲染http://domain.com/url#blah 只会渲染http://domain.com/url。
该库公开了几个 Angular 服务,可让您在节点内编译 Angular 模板
参考文献
ng-node-compile AngularJS-server Running AngularJS on the server with Node.js and jsdom AngularJS - server-side rendering Getting Started with Benchpress【讨论】:
以上是关于是否可以在 Angular JS 中进行服务器端渲染(在旧版本中,即 2.0 之前的版本)?的主要内容,如果未能解决你的问题,请参考以下文章