什么是nuxt #

Nuxt.js是使用 Webpack 和 Node.js 进行封装的基于Vue的SSR框架

nuxt特点 #

优点:
更好的 SEO,由于搜索引擎爬虫抓取工具可以直接查看完全渲染的页面。首屏渲染速度快

缺点:
Node.js 中渲染完整的应用程序,显然会比仅仅提供静态文件的 server 更加大量占用 CPU 资源。需要考虑服务器负载,缓存策略

项目生成 #

npx create-nuxt-app nuxt-project
cd nuxt-project
yarn dev

项目目录 #

nuxt.config.js配置 #

使用history.pushState跳转页面,不会触发页面整体重新渲染

中间件 #

如果经过服务端则在服务端执行

export default function ({ store, redirect }) {
  if (!store.state.user) {
    return redirect('/login')
  }
}
router: {
    middleware: 'auth'
}

layout配置 #

增加错误页面,错误页需要配置layout

export default {
    props:['error'],
    layout:'page'
}

数据获取 #

插件的使用 #

扩展原型上的方法plugins

export default function({app},inject){
    inject('my',()=>{ // 在app上和this都注册这个方法
        console.log('my');
    })
}

使用vuex #

运行流程 #

nextServerinit 只在主模块中使用
nuxt.config.js 全局中间件
matching layout 不同布局的中间件
matching page & children 页面中间件
validate 返回false显示错误页面
asyncData 服务端渲染的页面数据请求
fetch 同步vuex数据

登录实战 #

element-ui + redis + mongo + nuxt

https://github.com/zhufengzhufeng/nuxt-login.git