使用next.js渲染飞冰生成的UI

JavaScript013

使用next.js渲染飞冰生成的UI,第1张

在本文中,您将学到babel,webpack,next.js, 飞冰的一些基础使用。

以及最重要的一点,不屈不挠的爬坑精神。

飞冰是什么

next.js是什么

正文开始

第一步 使用飞冰的模版创建一个项目

这里选择自定义模版,只需要它生成项目框架。

注意:这里先不要添加依赖,飞冰自己安装的webpack版本会导致next.js无法使用自身的配置启动项目。

当然,你也可以像我一样尝试,找一个酷炫的模版

然后经历如下步骤

添加依赖

npm install --save next react react-dom

安装完后,可以安装所有依赖了

npm install

安装完后,配置package.json文件,这里指定pages文件夹位于src下

到这里是不是已经迫不及待想要

npm run dev

一切看起来风和日丽,格外美丽,我们尝试显示NotFound页面

http://localhost:3000/NotFound

WTF?剧情不是这样的啊!为什么会报错,生活终于对我这只小猫咪下手了吗?

这里需要添加flie-loader来解析图片,以及sass的插件来解析scss

npm install file-loader @zeit/next-sass node-sass --save -D

然后在项目根目录新增next.js的配置文件 next.config.js

接下来继续

http://localhost:3000/NotFound

你会碰到几个 document window is undefined的错误,直接找到相应的地方增加判断

然后回到BasicNotFound.jsx中,注释飞冰使用的Link,改为a标签的href

至此,只差最后一个坑我们就能将页面展示出来了,我们需要让项目正确的识别

import IceContainer from '@icedesign/container'

我们使用babel-plugin-module-resolver插件解决

npm install --save-dev babel-plugin-module-resolver

增加.babelrc配置文件来使用该插件

至此,页面可以正确展示。

为什么明明成功展示了,却有种失败的感觉呢。

这个不用介绍了吧,自己google

这个我也不管, ssr、同构嘛,也就那回事。

.babelrc

如上,简单的一种引用方式。next 改造同方案二。

由于在我项目中,各个模块不耦合,路由间不想干,所以各自处理就ok。

ssr 中要解决的一个很大的问题就是 server 和 client 之间状态同步的问题。如下:

留有问题:上边 initState 其实是没有意义的。

解决方案: 没想到。求大佬指教。

体积大。next.js是react的一个前端框架。react本质上是一个UI库,用于操作虚拟DOM,next.js是基于react的一个前端框架。next.js不火是因为本地开发、构建所需要的开发时依赖,而且开发时依赖体积又大。用next.js可以快速搭建一个react服务端渲染的框架,相比于直接用react配置服务端渲染简单了不少。