是否可以在 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 之前的版本)?的主要内容,如果未能解决你的问题,请参考以下文章

Angular JS权限检查

Vue.JS 中的服务层?

是否可以通过包含在另一个数组中来过滤 angular.js?

如何在angular js中对登录服务进行base64编码

Angular js中的文件下载

使用angular 7时无法使用passport-jwt在快递Js中进行授权