Page 420 - AngularJS权威教程
P. 420
400 第 30 章 AngularJS 和 IE 浏览器
$ npm install
$ node index.js
# 或者使用foreman
$ foreman start
prerender库还可以很方便地运行在heroku上:
$ git clone http://github.com/collectiveip/prerender.git
$ heroku create
$ git push heroku master
①
这里我们将渲染后的HTML存储在S3 中,因此推荐你使用内置的S3缓存。可以阅读文档 来
②
了解如何设置这个缓存。
在服务器运行之后,只需要将这个抓取程序集成到应用中就行了。在Express中,使用Node
库prerender-node集成它非常容易。
为了安装prerender-node,我们再次使用npm:
$ npm install --save prerender-node
安装好这个库之后,让Express应用使用这个中间件即可:
var prerender =
require('prerender-node')
.set('prerenderServiceUrl',
'http://our-prerenderserver.com/');
app.use(prerender);
就是这样!最后这个片段用于告诉Express应用,如果它察觉到爬虫请求(通过定义
_escaped_fragment_或者用户代理字符串),就应该在合适的URL上为prerender服务创建一个
GET请求,然后获取这个页面预渲染好的HTML。
30.10 <noscript>方法
还可以使用<noscript>标签来渲染页面,而无需使用后端服务器。不幸的是,对于所有页
面都使用这个方法是非常复杂的,因为需要从<noscript>外部将页面的所有元素复制到这个标
签中。
这样做会很麻烦,为了保持两部分同步要做大量的工作,因此我们不推荐使用这个没有构建
工具协助的方法。
——————————
① S3就是Amazon S3,全程亚马逊简易储存服务,这是亚马逊公司提供的一个网络存储服务。更多信息参考维基百
科:Amazon S3(zh.wikipedia.org/wiki/Amazon_S3)。——译者注
② https://github.com/collectiveip/prerender#s3-html-cache