20

原始文档在 https://github.com/developerw... 现在搬过来.

学习 Next.js: 入门
学习 Next.js: 页面之间的导航
学习 Next.js: 使用共享组件
学习 Next.js: 创建动态内容
学习 Next.js: 使用路由掩码创建干净的URL
学习 Next.js: 干净URL的服务器支持
学习 Next.js: 获取数据
学习 Next.js: 部署

哪位分高的,帮忙创建一个 Next.js 的标签, 谢谢. 现暂时放在reactjs标签下面了. 新建文章有时间限制, 一会全部发上来, 这是最近两天翻译的 Next.js 学习资料, 原始文章在 http://learnnextjs.com

入门

创建一个单页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 页面.

404 Page

创建第一个页面

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

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

或者

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应用程序. 有什么想法? 如果你喜欢, 可以进一步深入下去.

Bugfix

2017-10-11: 修复如下问题

Index(...): Nothing was returned from render. This usually means a return statement is missing. Or, to render nothing, return null.

developerworks
1.7k 声望266 粉丝