学习 Next.js 入门

#1

入门

创建一个单页Javascript应用程序是一件非常有挑战的事情, 幸运的是, 开源世界给我们提供了一些好用的工具来简化, 加速单页应用的开发.

Create React App 就是这样一种工具.

即使是这样, 创建单页应用有非常高的学习曲线. 仍然需要我们学习客户端路由, 页面布局, 等技术. 如果你还想要运行服务器端渲染(SSR: Server Side Rendering), 事情就变得更加困难了.

因此, 我们需要一个简单并且可之定义的方案

想一下我们如何使用PHP创建Web应用程序. 首先创建一些文件, 编写PHP代码, 然后部署. 不用担心路由的问题, Web应用程序只是在服务器端运行, 并且输出HTML而已.

Next.js

但这里我们说的不是用PHP来创建Web应用程序, 我们使用Javascript和React, 使用Next.js框架给我们提供能力:

  • 服务器端渲染(默认)
  • 自动代码切分, 加速页面加载
  • 简单的客户端路由(基于页面)
  • 基于Webpack的开发环境, 支持热模块替换(HMR: Hot Module Replacement)
  • 可以使用Express 或其他Node.js服务器实现
  • 使用Babel和Webpack配置定制

设置

Next.js 可以在Windows, Mac和Linux运行. 只需要在系统中安装Node.js即可开始构建Next.js应用程序.

除了需要一个文本编辑器编写代码, 一个终端调用命令之外, 没什么别的是必须的.

如果在Windows上运行, 建议使用 PowerShell. Next.js可以工作在任何Shell和终端下. 但是本指南中, 我们使用UNIX香港的命令.
推荐在 Windows 下使用 PowerShell, 让工作方便一些.

运行下面的命令, 创建一个示例的项目:

mkdir hello-next
cd hello-next
npm init -y
npm install --save react react-dom next
mkdir pages

然后打开package.json, 添加下面的NPM脚本命令:

{
  "scripts": {
    "dev": "next"
  }
}

现在, 一切就准备好了, 你可以运行下面的命令来启动开发服务器了.

npm run dev

在浏览其中打开: http://localhost:3000.

404 页面

打开 http://localhost:3000, 我们看到的是一个 404 页面. 这个时候 Next.js 没有任何功能. 默认就是一个 404 页面.

创建第一个页面

现在我们来创建第一个页面. 在 pages 目录下创建一个名称为 index.js 的文件, 内容如下:

const Index = () => {
  <div>
    <p>Hell Next.js</p>
  </div>
}
export default Index

现在, 再次访问 http://localhost:3000, 在页面上你会看到 “Hello Next.js”. 这里, 我们只是从 pages/index.js 模块导出了一个简单的 React 组件. 同理, 可以编写你自己的模块并且导出它.

确保你的 React 组件为默认导出
译注: (default关键字)

现在, 我们在Index页故意引入一个语法错误(删除尾部的</p>HTML标签), 如下:

const Index = () => (
  <div>
    <p>Hello Next.js
  </div>
)

export default Index

页面将会显示一个语法错误 There's an error showing the syntax error.

错误处理

默认情况, Next.js 会在浏览器中直接显示这些错误信息, 这方便你识别错误并且快速的搞定它.

你但你解决了这些错误, 页面会执行一个无刷新的更新. 这得益于Webpack提供的热模块替换功能, 在Next.js它是默认支持的.

你太棒了

看起来你已经构建了第一个Next.js应用程序. 有什么想法? 如果你喜欢, 可以进一步深入下去.

#2

还有几篇, 现在不让发了, 要等23个小时. 明天再贴出来.

#3

新用户发帖设置了当天只能发 3 条, 我改了 6 条试一下.

#4

你的es6语法有错:

const Index = () => (
  <div>
    <p>Hello Next.js
  </div>
)

export default Index

这样写需要 return

#5

这样写不需要return, 建议多看下箭头函数

#6

以下有语法错误, Index没有返回值,会报错.应把{}改成()

现在我们来创建第一个页面. 在 pages 目录下创建一个名称为 index.js 的文件, 内容如下:

const Index = () => {
  <div>
    <p>Hell Next.js</p>
  </div>
}
export default Index
#7

你没有return啊,要不你就直接const Index = ()=> (

)
括号是直接返回的意思

#8

去看看箭头函数

const Index = () => {
  return(
        <div>
             <p>Hello Next.js</p>
        </div>
    )
}
#9

hello 楼主在第一个index.js你写错了哦~~ {} 应该改成 ()

正确的:

const Index = () => (
  <div>
    <p>Hell Next.js</p>
  </div>
)
export default Index