Vue SSR 组件加载问题

2020-06-14 06:16:28易采站长站整理

通过 v-if 来决定是否渲染该组件


<template>
<div v-if="isBrowser">
<Loading></Loading>
</div>
</template>
<script type="text/babel">
export default {
componets:{
Loading: () =>import('vue-loading');
}
data(){
return {
isBrowser: EASY_ENV_IS_BROWSER
}
},
mounted(){
}
}
</script>

Vue 只在前端挂载组件解决问题


<template>
<div>
<Loading></Loading>
</div>
</template>

<script type="text/babel">
export default {
data(){
return {
}
},
beforeMount() {
// 只会在浏览器执行
this.$options.components.Loading = () =>import('vue-loading');
},
mounted(){
}
}
</script>

loading 组件因为没有注册, 在 SSR 模式, <Loading></Loading> 会被原样输出到 HTML 中,不会报错且不能被浏览器识别, 在显示时不会有内容。当 SSR 直出 HTML 后,浏览器模式中执行 beforeMount 挂载组件, 从而达到解决服务端渲染报错的问题

https:// github.com/hubcarl/egg- vue-webpack-boilerplate/blob/master/app/web/page/dynamic/dynamic.vue

总结

以上所述是小编给大家介绍的Vue SSR 组件加载问题,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对软件开发网网站的支持!