angular2 学习笔记 ( server-side rendering, angular universal, 服务端渲染 )
更新 : 2018-01-10
大半年过去了依然没有做 server side render 的冲动,但是一直有关注这方便的做法.
今天领悟了一些道理, 这里做个记入.
server side render 其实也不只是为了 SEO, 而且自从 Google 能渲染 js 之后更加不重要了.
其它使用的地方比如 fb, whatsap, wechat 的爬虫都是可以用到 server side render 的
ssr 有一个规则就是远离 dom, 其实应该说 "render" 的时候 "不依赖" browser.
如果你写过后端渲染就应该很有这个 feel, 我们会用 html + css 实现所有的设计, 用 responsive 的 css 写法去做响应式.
所以在 render 的时候, 是完全不需要以来任何 browser 元素的.
更新 : 2017-05-03
angular 4.0 把 universal 纳入自己的阵营, 有许多的改变, 目前已经有 githud starter 了
https://github.com/angular/universal
nodejs, asp.net core 都有.
不过呢,我依然没有去使用它,等到 cli 支持了才用.
目前接受一个临时方案给大家.
https://prerender.io
它的做法是使用 js 引擎渲染你的页面然后收入起来,当发现蜘蛛访问时,返回这个 cache 页面.
页面被保存在另一台服务器上,你有 2 个选择,1是用 prerender.io 的服务器, 首 250 page 免费,之后的就要收费了.
第 2 选择是自己建一个服务器来收藏, prerender 是开源项目有提供全部代码.
asp.net 网站服务器基本设置
https://github.com/greengerong/Prerender_asp_mvc
angular 方面唯一要留意的是 import polyfills, 因为 prerender.io 的 js 引擎是 es5 的.

如果有使用 ajax 或 lazyload module 记得使用

参考 : https://prerender.io/documentation/best-practices
ngAfterViewInit() {
window['prerenderReady'] = true;
}
像这样.
如果运行不起来, prerender.io 还有一个很好的 support.
support@prerender.io
即使你没有付费, 他依然用心的帮你调试找出问题,非常专业 !
2017-02-10
服务端渲染主要是为了 SEO 搜素引擎.
angular universal 为我们处理好这一切.
从前需要特地写一个版本给 SEO 做两份工 /.\
refer :

4. 如果 angular 没有替代方案, 那么判断你的代码是否真的需要在 server-side 运行, 如果不需要你可以使用 if(isBrowser) *ngIf="isBrowser" 来禁止它们运行.
<input type="text" #input (blur)="$event.target.className = 'haha';blur($event.target)" >
{{ input.value }}
<div (click)="click($event)" >click</div>
angular2 学习笔记 ( server-side rendering, angular universal, 服务端渲染 )的更多相关文章
- NodeJS学习笔记 进阶 (1)Nodejs进阶:服务端字符编解码&乱码处理(ok)
个人总结:这篇文章主要讲解了Nodejs处理服务器乱码及编码的知识,读完这篇文章需要10分钟. 摘选自网络 写在前面 在web服务端开发中,字符的编解码几乎每天都要打交道.编解码一旦处理不当,就会出现 ...
- Python--网络编程学习笔记系列02 附:tcp服务端,tcp客户端
Python--网络编程学习笔记系列02 TCP和UDP的概述: udp通信模型类似于写信,不需要建立相关链接,只需要发送数据即可(现在几乎不用:不稳定,不安全) tcp通信模型类似于打电话,一定要建 ...
- zeromq学习笔记2——简单的客户端和服务端测试程序
1.前言 zeromq提供了guide,http://zguide.zeromq.org/,可以帮助新手快速上手,提供了C\C++\PHP等多种语言. 2.测试程序 使用zeromq给的hwserve ...
- android菜鸟学习笔记25----与服务器端交互(二)解析服务端返回的json数据及使用一个开源组件请求服务端数据
补充:关于PHP服务端可能出现的问题: 如果你刚好也像我一样,用php实现的服务端程序,采用的是apache服务器,那么虚拟主机的配置可能会影响到android应用的调试!! 在android应用中访 ...
- Angular开发实践(六):服务端渲染
Angular Universal Angular在服务端渲染方面提供一套前后端同构解决方案,它就是 Angular Universal(统一平台),一项在服务端运行 Angular 应用的技术. 标 ...
- 【转】 Pro Android学习笔记(七八):服务(3):远程服务:AIDL文件
目录(?)[-] 在AIDL中定义服务接口 根据AIDL文件自动生成接口代码 文章转载只能用于非商业性质,且不能带有虚拟货币.积分.注册等附加条件.转载须注明出处:http://blog.csdn.n ...
- golang学习笔记18 用go语言编写移动端sdk和app开发gomobile
golang学习笔记18 用go语言编写移动端sdk和app开发gomobile gomobile的使用-用go语言编写移动端sdk和app开发https://blog.csdn.net/u01249 ...
- 【转】 Pro Android学习笔记(七六):服务(1):local和remote
文章转载只能用于非商业性质,且不能带有虚拟货币.积分.注册等附加条件.转载须注明出处:http://blog.csdn.net/flowingflying/ Android提供服务,服务是运行在后台的 ...
- 基于Angular4+ server render(服务端渲染)开发教程
目标: 1.更好的 SEO,方便搜索爬虫抓取页面内容 2.更快的内容到达时间(time-to-content) 影响: 1.用户:比原来更快的看到渲染的页面,提升用户体验 2.开发人员:某些代码可能需 ...
随机推荐
- 牛客小白月赛1 A-简单题
描述 Etéreo 是个爱学习的好孩子.在年假期间,他依然热情于数学.他最近发现了一个高大上的东西:,他觉得这里的 非常的厉害!然后他又告诉你:,,他会告诉你 和 ,想请你告诉他 的值.当然这 ...
- Redis 基础(一)
Remote Dictionary Server(Redis)是一个由Salvatore Sanfilippo写的key-value存储系统.Redis是一个开源的使用ANSI C语言编写.遵守BSD ...
- 题目1023:EXCEL排序
//都是泪啊,搞了半天,竟然是成绩的数据类型搞成了string,输出测试用例的次数竟然搞成了排序的类别...细节决定成败!!! 题目描述: Excel可以对一组纪录按任意指定列排序.现请你编写程序实现 ...
- 在Jenkins中配置执行远程shell命令
1.想要 远程登录到linux服务器并执行相应的shell脚本,需要在jenkins上安装插件enkins SSH plugin 2. 安装了这个插件后,进入系统的配置管理中配置 SSH remote ...
- EOS 新增的 WebAssembly 解释器,是什么鬼?
Daniel Larimer 在最近的博客中透露,EOS 新增了官方的 WebAssembly 解释器,用来解释执行 WebAssembly 智能合约,加上之前的编译执行,EOS 智能合约有了两种执行 ...
- WinSock 异步I/O模型-1
异步选择(WSAAsyncSelect):异步选择基本定义 异步选择(WSAAsyncSelect)模型是一个有用的异步 I/O 模型.利用这个模型,应用程序可在一个套接字上,接收以 Windows ...
- ~psd面试 求最长回文序列 DP求解
链接:https://www.nowcoder.com/acm/contest/90/D来源:牛客网 掌握未来命运的女神 psd 师兄在拿了朝田诗乃的 buff 后决定去实习. 埃森哲公司注册成立于爱 ...
- ThoughtWorks.QRCode 生成QR二维码时提示“索引超出了数组界限”的原因和解决方法
"索引超出了数组界限"也有可能确实是因为你选择的二维码Version对应的容量不足以存储你所放的内容,如果你确定使用的版本容量二维码能存储你的内容,但还是报错,那么再考虑此解决方法 ...
- 小程序实现非swiper组件的自定义伪3D轮播图
效果如下: 我用了很笨的方法实现的,大致就是: 1.当前点击的div(view)如果前后都有内容,那么,当前div(view)就设置到中间,前一个就设置到左边,前一个的前面所有全部设置到最左边,后面一 ...
- Vue的组件
1,局部组件就是在Vue对象内部注册的构造器 <!DOCTYPE html> <html lang="en"> <head> <meta ...