You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
constnext=require('next');const{ createServer }=require('http');const{ parse }=require('url')constdev=process.env.NODE_ENV!=='production';constport=parseInt(process.env.PORT,10)||3000;constapp=next({dev})consthandle=app.getRequestHandler()app.prepare().then(()=>{createServer((req,res)=>{constparsedUrl=parse(req.url,true)handle(req,res,parsedUrl)}).listen(port,err=>{console.log(err,port)if(err)throwerrconsole.log(`> Ready on http://localhost:${port}`)})})
更改package.json启动命令 "dev": "node server.js", 运行npm run dev,你会发现提示一行错误:It looks like you're trying to use TypeScript but do not have the required package(s) installed.意思是试图使用TypeScript,但没有安装所需的包。我们只需运行下列命令即可
先说说先要搭建这个工具的起因吧!最近这段时间分别了学习Typescript和react服务端渲染,但是苦于没有没有实际使用端场景,我就突然想起了将Typescript与Next结合起来搭建一个服务端渲染端工具,一是这样即可以起到练手的作用,二是如果以后有相应业务需求可以直接拿来用。话不多说,我们开始吧!
Next特点
next.js作为一款轻量级的应用框架,主要用于构建静态网站和后端渲染网站,为什么选Next呢?,只因Next有如下几个优点:
创建并初始化项目
这里就不多说了,相信大家都很熟练了
安装React
运行npm run dev命令打开 http://localhost:3000即可查看初始页面。
配置Typescript
将page/index.js修改为index.tsx,并做如下修改
更改package.json启动命令 "dev": "node server.js", 运行npm run dev,你会发现提示一行错误:It looks like you're trying to use TypeScript but do not have the required package(s) installed.意思是试图使用TypeScript,但没有安装所需的包。我们只需运行下列命令即可
再次运行命令打开http://localhost:3000即可看到我们的页面。
引入antd
引入Less
3.引入antd样式
在page文件夹下新建index.less文件,引入antd样式,并在index.tsx中引入,
并在index.tsx中做如下修改
根目录下新建assets文件并新建antd-custom.less
在next.config.js中读取该样式文件,经过less-vars-to-js将less文件的内容作为字符串接收,并返回一个包含所有变量的对象。
next.config.js添加如下内容:
运行启动命令,页面如下图:
引入redux
由于篇幅关系创建store、reducers、saga、action的过程我们就不再这里缀述,感兴趣的同学可以查看github上的代码。我们在这里着重讲一下如何引入store,为了在页面初始化时引入store,需要自定义,在pages文件夹下新建_app.tsx.
_app.tsx帮我们做如下几件事:
因此,在pages文件下新建_app.tsx,引入store,代码如下
最终实现一个计数器与列表,如下图:
自定义错误处理
404和500错误客户端和服务端都会通过error.js组件处理。如果你想改写它,则在pages文件下新建_error.js,当用户访问错误路由时会访问_error页面
总结
到此为止,我们已经基本实现了一个基于Typescript+Ant-Design + Redux+Next.js的服务端渲染框架,也熟悉了一部分next的用法,想要了解更多可以前往官网地址为next.js。希望大家可以有所收获,想要了解更多不同技术实现的服务端渲染框架的同学可以看这里https://github.com/zeit/next.js/tree/7.0.0-canary.8/examples
The text was updated successfully, but these errors were encountered: