Nuxt.js 基础

387 阅读2分钟

Nuxt.js 基础

1)基本介绍

  • 一个基于 Vue.js 生态的第三方开源服务端渲染应用框架
  • 他可以帮我们轻松的使用 Vue.js 技术栈构建同构应用
  • 官网
  • GitHub 仓库

2) 基础使用

  • 初始项目
    • 官方文档
    • 方式一:使用 create-nuxt-app
    • 方式二:手动创建
  • 已有的 Node.js 服务端项目
    • 直接把 Nuxt 当做一个中间件集成到 Node Web Server 中
  • 现有的 Vue.js 项目
    • 非常熟悉 Nuxt.js
    • 至少百分之 10 的代码改动

3)路由

官方文档

  • 基础路由
// 目录
pages/
--| user/
-----| index.vue
-----| one.vue
--| index.vue
// Nuxt.js 自动生成的路由配置如下
router: {
  routes: [
    {
      name: 'index',
      path: '/',
      component: 'pages/index.vue'
    },
    {
      name: 'user',
      path: '/user',
      component: 'pages/user/index.vue'
    },
    {
      name: 'user-one',
      path: '/user/one',
      component: 'pages/user/one.vue'
    }
  ]
}
  • 动态路由

在 Nuxt.js 里面定义带参数的动态路由,需要创建对应的以下划线作为前缀的 Vue 文件 或 目录。

  • 嵌套路由

创建内嵌子路由,你需要添加一个 Vue 文件,同时添加一个与该文件同名的目录用来存放子视图组件。

Warning: 别忘了在父组件(.vue文件) 内增加 <nuxt-child/> 用于显示子视图内容。

4)Nuxt.js 视图

官方文档

  • 结构

  • 模板

定制化默认的 html 模板,只需要在 src 文件夹下(默认是应用根目录)创建一个 app.html 的文件

<!DOCTYPE html>
<html {{ HTML_ATTRS }}>
  <head {{ HEAD_ATTRS }}>
    {{ HEAD }}
  </head>
  <body {{ BODY_ATTRS }}>
    // 默认的内容最终会注入到这里
    {{ APP }}
  </body>
</html>
  • 布局

可通过添加 layouts/default.vue 文件来扩展应用的默认布局。

提示: 别忘了在布局文件中添加 <nuxt/> 组件用于显示页面的主体内容。

<template>
  <div>
    <div>我的博客导航栏在这里</div>
	//页面出口,类似于子路由出口
    <nuxt />
  </div>
</template>
  • 页面

5)异步数据 --- asyncData

  • 基本用法
    • 它会将 asyncData 返回的数据融合组件 data 方法返回数据一并给组件
    • 调用时机:**服务端渲染期间 **和 客户端路由更新之前
  • 注意事项
    • 只能在页面组件中使用
    • 没有 this,因为它是在组件初始化之前被调用的

6)异步数据 --- 上下文对象