时间:2021-05-18
一个网站一旦涉及到多用户, 就很难从 Cookies 中逃脱, Vue SSR 的 cookies 也真算是遇到的一个不小的问题, 从开始玩 SSR 开始到现在, 一共想出了3种方案, 从最早的把 Cookies 注入到 state 中, 到把 Cookies 注入到 global, 到现在的将 Cookies 注入到组件的 asyncData 方法.
随着 Vue 的升级, 第一种方案已经不再适用, 第二种也有不少的限制, 于是想到第三种方案, 下来就说说具体实现的方法:
第一种方案
第一种方案已经不再适用, 这里不再细说
第二种方案
思路: 将 cookies 注入到 ssr 的 context里, 然后在请求 api 时读取, 再追加到 axios 的header 里
1, 首先在 server.js 里将 cookies 加到 context里
const context = { title: 'M.M.F 小屋', description: 'M.M.F 小屋', url: req.url, cookies: req.cookies}renderer.renderToString(context, (err, html) => { if (err) { return errorHandler(err) } res.end(html)})之后, Vue 会把 context 加到 global.__VUE_SSR_CONTEXT__
2, 在 api.js 里读取 cookies
import axios from 'axios'import qs from 'qs'import md5 from 'md5'import config from './config-server'const SSR = global.__VUE_SSR_CONTEXT__const cookies = SSR.cookies || {}const parseCookie = cookies => { let cookie = '' Object.keys(cookies).forEach(item => { cookie+= item + '=' + cookies[item] + '; ' }) return cookie}export default { async post(url, data) { const cookie = parseCookie(cookies) const res = await axios({ method: 'post', url: config.api + url, data: qs.stringify(data), timeout: config.timeout, headers: { 'X-Requested-With': 'XMLHttpRequest', 'Content-Type': 'application/x-/lincenying/mmf-blog-vue2-pwa-ssr综上, 如果你项目不大, 还是直接用方案 2 吧, 项目有很多页面, 并且大部分页面是每个用户都一样的, 可以考虑方案 3, 或者你有什么更好的方法, 欢迎讨论
Vue SSR 对需要 SEO, 并且每个用户看到的内容都是一致的, 配合缓存, 将是一个非常好的体验...
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。
声明:本页内容来源网络,仅供用户参考;我单位不保证亦不表示资料全面及准确无误,也不保证亦不表示这些资料为最新信息,如因任何原因,本网内容或者用户因倚赖本网内容造成任何损失或损害,我单位将不会负任何法律责任。如涉及版权问题,请提交至online#300.cn邮箱联系删除。
本来想前面写点什么的,还是算了,直接说思路吧.从Vue2.3版本后,SSR的cookies,就变成一个无比麻烦的问题,具体请访问官网文档:https://ssr
Nuxt.js是Vue进行SSR的一个优选开源项目,可免去繁琐的Webpack、nodejs后台服务配置等操作,方便的搭建一个支持SSR的VUE项目。Eleme
nuxt是基于vue的ssr解决方案,可以是使用vue语法完成前后端的同构。然而在与传统纯字符串拼接的ssr方案相比,性能就没那么好了,nuxt需要在服务端生成
对于React,Vue构建的单页面应用老说,SEO是一个众所周知的问题。服务端渲染(SSR-serverSideRender)是目前看来最好的解决办法。Reac
本文主要介绍了Vue2SSR渲染根据不同页面修改meta,分享给大家,具体如下:注意:经过测试,vue-meta会导致内存泄漏,请慎用…以现在vue2的服务端渲