vue-ssr服务器渲染开发的时候,npm vue引入的组件,报错window或者document 没有定义的解决方案。

一般引入组件报错。是因为组件里面涉及调用浏览器的东西,比如window。document等。而ssr是服务器渲染,还没到浏览器客户端渲染这个环境。所以要想成功引入组件,也就是让npm Vue 组件可以 SSR 支持,只有两种解决方案:

1:通过 v-if 来决定是否渲染该组件 和 Vue 只在前端挂载组件,服务器端不渲染。

2:直接在浏览器模式中执行 beforeMount 挂载组件,。也就是等等ssr渲染完毕,前端再去注册组件, 从而达到解决服务端渲染报错的问题。
 

第一个就是在引入组件的外层div加入v-if判断是不是处于浏览器的环境。

第二个在beforeMount ,也就是客户端渲染时候,挂载组件。服务器渲染时候,beforeMount是不执行的。这里我引入了vue-seamless-scroll这个滚动的组件,平时vue的引入,componets注册用不上了。

beforeMount() {
       // 只会在浏览器执行 
       this.$options.components.vueSeamlessScroll = () =>import('vue-seamless-scroll');
},

有疑问可以下方评论,我看到会立刻回复。

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值