更新 : 2018-01-10 javascript
大半年過去了依然沒有作 server side render 的衝動,可是一直有關注這方便的作法. css
今天領悟了一些道理, 這裏作個記入. html
server side render 其實也不僅是爲了 SEO, 並且自從 Google 能渲染 js 以後更加不重要了. java
其它使用的地方好比 fb, whatsap, wechat 的爬蟲都是能夠用到 server side render 的 node
ssr 有一個規則就是遠離 dom, 其實應該說 "render" 的時候 "不依賴" browser. git
若是你寫事後端渲染就應該頗有這個 feel, 咱們會用 html + css 實現全部的設計, 用 responsive 的 css 寫法去作響應式. github
因此在 render 的時候, 是徹底不須要以來任何 browser 元素的. ajax
更新 : 2017-05-03 後端
angular 4.0 把 universal 歸入本身的陣營, 有許多的改變, 目前已經有 githud starter 了 api
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 :
<input type="text" #input (blur)="$event.target.className = 'haha';blur($event.target)" >
{{ input.value }}
<div (click)="click($event)" >click</div>