Next.js | 青训营笔记

97 阅读2分钟

这是我参与「第五届青训营 」笔记创作活动的第11天。

Next.js:React 开发框架

React 开发框架,

直观的、 基于页面 的路由系统(并支持动态路由

预渲染。支持在页面级的 静态生成 (SSG) 和 服务器端渲染 (SSR)

自动代码拆分,提升页面加载速度

具有经过优化的预取功能的 客户端路由

内置 CSS 和 Sass 的支持,并支持任何 CSS-in-JS 库

开发环境支持 快速刷新

利用 Serverless Functions 及 API 路由 构建 API 功能

完全可扩展

路由-页面导航

在nextjs里面,每一个页面都是一个导出的react组件,路由基于这个组件的文件目录,一个新的页面产生应该有下面的函数:

export default function FirstPost() {
  return <h1>First Post</h1>
}

利用link来实现页面跳转,我们需要先导入

import Link from 'next/link'

然后使用link标签包裹a标签实现跳转,注意里面的url可以用我们本地文件的url

Read <Link href="/posts/first-post"><a>this page!</a></Link>

注意这样保证一整个APP的完整性,如果用a的话,每个页面是独立的,独立的css,js,而用了link,切换的时候css不会换,这里举了一个例子,用开发者工具改变背景颜色,然后用link切换背景不会改变。同时他强调每个页面都是独立的,

资源,元数据和css

资源一般都放在public文件下面,元数据需要引入

import Head from 'next/head'

使用要用Head标签,首字母大写,Next.js内置了对styled-jsx的支持,但你也可以使用其他流行的CSS-in-JS库,如styled-components或 emotion。

Layout组件一般用来作为全页面通用组件

  return <div>{children}</div>
}

添加css,在组件目录下创建一个名为 layout.module.css 的文件,内容写一点css作为通用组件格式 ,css的名字一定要注意格式规范,上面的代码完善一下:

import styles from './layout.module.css'

export default function Layout({ children }) {
  return <div className={styles.container}>{children}</div>
}

预渲染和数据获取

动态路由

API Routes

部署应用