vue-cli3.x spa項(xiàng)目需要做seo優(yōu)化,看了下文檔,對(duì)于不熟悉nodejs的我來說很頭疼,于是乎在github找了大神的demo,附上鏈接https://github.com/EDiaos/vue-cli3-ssr-project 先熟悉鏈接項(xiàng)目的demo
開始項(xiàng)目改造。。。
先把package的包復(fù)制進(jìn)demo的工程,
然后是進(jìn)行router文件和store文件。main.js的改動(dòng),確保工程能啟動(dòng)。
這一步遇到問題了,在store.js用到了localstoreage,因?yàn)閟sr在服務(wù)端運(yùn)行,所以不存在localstoreage,
解決辦法:
if(typeof localStorage !== 'undefined')
localStorage.setItem('token',data)
然后是數(shù)據(jù)獲取的改造,參考demo工程。或者查看官方文檔vue ssr數(shù)據(jù)預(yù)取存儲(chǔ)容器
(ssr的數(shù)據(jù)獲取調(diào)用需要在組件的serverPrefetch的方法,詳情看demo)
最后,demo工程做了可配置項(xiàng),需要ssr的頁面需要在server/ssr-page-config.js進(jìn)行配置(頁面url的正則)。
服務(wù)端部署:頁面服務(wù)81端口nodejs跑,后臺(tái)接口82端口java服務(wù),
整個(gè)項(xiàng)目用ngnix,調(diào)用接口利用ngnix反向代理附上nngnix簡單的配置
server {
listen 80;
server_name localhost;
location /api { ##java服務(wù)
proxy_pass http://xxx.cn/;
proxy_set_header Host xxx.cn:82;
proxy_set_header Origin http://xxx.cn:82;
}
location / { ##node服務(wù)
proxy_set_header Host $host;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_pass http://xxx:81;
}
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root html;
}
}