上一篇在谈到params路由和query路由的时候,留了一个坑,在这里仍是来解决一下~事实证实,就是我想的那样,可使用custom server而后从新匹配路由渲染的页面就能够了。不过这样会出现一个小问题,就是在网速过慢的时候从新匹配的页面没渲染出来以前,控制台会出现报错,从新渲染以后消失。这就相似于302,刚开始是404页面,而后被重定向到另外一个,哈哈~css
好吧,去官网github查了一圈,也有人跟我同样提了相同的issue,最后我看了一下发现,原来写法出问题了,虽然能够正常执行,可是会在正确页面出现以前404如下。处女座的我不能忍受仍是改回来吧~node
// 路由应该这么写
<Link href={`/user/userDetail?username=${text}`} as={`/user/userDetail/${text}`}>
<a>{text}</a>
</Link>
// server.js
server.get('/user/userDetail', (req, res) => {
return app.render(req, res, `/user/userDetail/${req.query.username}`);
});
复制代码
上面那样就能够了,具体代码在下方~git
最后,我仍是把antd的css形式换成了less形式,一方面是由于确实配置主题色以及其余覆盖样式仍是有需求的,另外一方面是重点了,在开发模式下,next.js打开新页面的pending time实在过长,这个过长的pending time致使第一次antd的样式加载不出来。而换成less的模式虽然也很慢,可是样式却不会发生改变,因此仍是切换到less了。github
能够看出来,一样是到新页面去渲染一个table组件,虽然第一次加载时间都很长,可是less的形式是能够加载出来css的。哈哈。因此仍是使用less吧,开发模式下,全部页面的第二次加在都没有问题,速度也很快。redux
next.js的生产环境仍是比较快的,开发环境打开第一次新页面确实有点慢,基本都要10s左右...bash
上面截图也看到了,Next.js在开发模式下页面第一次的pending时间是很是长的,基本都要达到10s左右,固然也多是我写的代码有问题?不过我去官方demo下面随便用了一个,也是很慢的。antd
不由我就思考了,若是上线项目第一次加载也这么慢,怎么能够呢?正在我考虑要不要半途而废的时候,我尝试了一下用生产模式打包一下,若是打包完生产环境首次加载也特别慢,那么不扯淡呢吗?拜拜了您嘞~app
由于我用的custom-server,因此scripts变成了下面这样:less
"scripts": {
"dev": "node server.js",
"build": "next build",
"start": "set NODE_ENV=production && node server.js"
},
复制代码
打包完以后也是正常访问,下面是打包完之后的访问效果。post
这一篇文章有点水,可是我以为仍是挺有必要的,由于可能不光是我,不少人也都会遇到这个问题,若是不解决的话可能半路就放弃了,因此想在中间加上这一篇踩坑以及解决办法~
代码地址
下一篇:引入状态管理Redux+redux-saga