详解基于vue的服务端渲染框架NUXT

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

return /^d+$/.test(params.id)
}
}

如果校验方法返回的值不为

true
Nuxt
将自动加载显示 404 错误页面。而这个错误页面需要写在指定的位置,也就是layout中error页面。接下来就来介绍有关视图相关的东西。

Nuxt视图

可以在layouts目录下创建自定义的布局,可以通过更改

layouts/default.vue
文件来扩展应用的默认布局。需要在布局文件中添加 <nuxt/> 组件用于显示页面的主体内容,感觉跟vue中的slot方法类似。例如在默认布局中增加header和footer,这样每个页面都会加上header和footer。


<template>
<div>
<header>VUE SRR DEMO</header>
<nuxt/>
<footer>COPYRIGHT LXY</footer>
</div>
</template>

而上面说到的error页面,可以通过在layouts下增加error.vue文件来修改默认的错误页面。该页面可以接受一个error参数。


<template>
<div class="container">
<h1 v-if="error.statusCode === 404">页面不存在</h1>
<h1 v-else>应用发生错误异常</h1>
<p class="goback">
<nuxt-link to="/">返回首页</nuxt-link>
</p>
</div>
</template>

<script>
export default {
props: ['error'],
layout: 'self-aside'
}
</script>

也可以给某个页面指定特定的模板,做到个性化布局。例如在上面的error页面中,我指定了一个

self-aside
的模板

以上所说的都是有关布局和路由相关的东西,而还没有讲到有关服务端渲染的知识,究竟

Nuxt
是如何做到SSR的呢,关键人物要出场了。

Nuxt asyncData 方法

Nuxt
扩展了
Vue.js
,增加了一个叫
asyncData
的方法,使得我们可以在设置组件的数据之前能异步获取或处理数据。这个函数可了不得了,有了它,我们可以先从服务员拿到数据,在服务端解析好,拼成HTML字符串,返回给浏览器。

asyncData
方法会在组件每次加载之前被调用,它可以在服务端或路由更新之前被调用。 可以利用
asyncData
方法来获取数据,
Nuxt
会将
asyncData
返回的数据融合组件