nuxt页面跳转_Nuxt.js 遇到的问题

Nuxt.js 主要是 Vuejs SSR 后端渲染一个开箱就可以食用的实现,想要有更高的自由度可以去参考:Vue.js 服务器端渲染指南。如果仅仅只是为了解决 SEO 的问题,贸然采用 Vuejs SSR 显然不是一个好的选择。

CSS 模块化

Nuxtjs 在任意 .vue 文件中引入 CSS 文件,即便是在不同的 layout 中引入,都会变成全局样式,个人的解决方法有两种:

1. 加入顶部 class

.app {

header {

height: 100px;

}

}

.admin {

header {

background: #eee

}

}

2. CSS Module

开启 CSS Module 只需要在 nuxt.config.js 加入:

cssModules: {

modules: true

}

UI 库

引入 UI 库,只能在 nuxt.config.js 中的 plugins 字段中加入,并且还需注意第三方库是否支持 SSR。以 Element-UI 为例:

首先需要在 plugins 文件夹下添加文件 element-ui.js。

import Vue from 'vue'

import ElementUI from 'element-ui'

Vue.use(ElementUI)

然后在 nuxt.config.js 中添加设置,是否开启 SSR 取决于第三方库。

plugins: [

{

src: '~/plugins/element-ui',

ssr: true

}

]

Nuxt 数据拉取

数据拉取可以使用 asyncData 和 fetch,两者差别在于 asyncData 可以更新 data,fetch 无法更新 data。fetch 最好是和全局状态一起使用。

全局状态管理

Nuxt 已经集成了 Vuex,在 store 文件夹中添加相应的文件就可以使用。如果需要预加载数据,只能在 store/index.js 中通过 nuxtServerInit 来实现,其他 store 文件里面调用 nuxtServerInit 是无效的。nuxtServerInit 执行时间比 middleware 要早,如果想预加载数据或者用户权限判断,最好是在 nuxtServerInit 处理完相应的数据。

export const actions = {

async nuxtServerInit ({ dispatch }) {

}

}

新页面滚动条

新页面切换时,如 /page?page=1 这样的页面,由于共用了相同的 vue 文件,跳转新页面时候,滚动条会保持在相同的位置,解决方式是修改 layouts 中 nuxt 组件的 key。

/* /layouts/default.vue */

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值