react: nextJs koa project basic structure
<p>1、init nextJs project</p><p>npm init</p>
<p>npm install react react-dom next</p>
<p>config script in package.json</p>
<div class="cnblogs_code">
<pre>"dev": "next"
"start": "next start"
"build": "next build"</pre>
</div>
<p>npm run dev</p>
<p>result: 404 page not found</p>
<p>2、index.js entry file</p>
<div class="cnblogs_code">
<pre>export <span style="color: rgba(0, 0, 255, 1)">default</span> () => <span>hello react next<span></pre>
</div>
<p>result: hello react next</p>
<p>3、koa server</p>
<p>npm install koa koa-router</p>
<div class="cnblogs_code">
<pre>const Koa = require('koa'<span style="color: rgba(0, 0, 0, 1)">);
const next </span>= require('next'<span style="color: rgba(0, 0, 0, 1)">);
const dev </span>= process.env.NODE_ENV !== "production"<span style="color: rgba(0, 0, 0, 1)">;
</span><span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)">创建next app处于开发状态</span>
const app =<span style="color: rgba(0, 0, 0, 1)"> next({ dev });
const handle </span>=<span style="color: rgba(0, 0, 0, 1)"> app.getRequestHandler();
</span><span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)">页面加载编译完成后在处理请求</span>
app.prepare().then(() =><span style="color: rgba(0, 0, 0, 1)"> {
const server </span>= <span style="color: rgba(0, 0, 255, 1)">new</span><span style="color: rgba(0, 0, 0, 1)"> Koa();
</span><span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)">中间件的使用</span>
server.use(async (context, next) =><span style="color: rgba(0, 0, 0, 1)"> {
</span><span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)">request,response,req,res;await next() 执行下一个中间件</span>
<span style="color: rgba(0, 0, 0, 1)"> await handle(context.req, context.res);
context.respond </span>= <span style="color: rgba(0, 0, 255, 1)">false</span><span style="color: rgba(0, 0, 0, 1)">;
});
server.listen(</span>3000, () =><span style="color: rgba(0, 0, 0, 1)"> {
console.log(</span>"koa server listening on 3000"<span style="color: rgba(0, 0, 0, 1)">)
})
})</span></pre>
</div>
<p>update script</p>
<p>"dev": "node server.js"</p>
<p>4、next with antd and css</p>
<p>npm install antd @zeit/next-css babel-plugin-import</p>
<p>for css config next.config.js</p>
<div class="cnblogs_code">
<pre>const withCss = require('@zeit/next-css'<span style="color: rgba(0, 0, 0, 1)">);
</span><span style="color: rgba(0, 0, 255, 1)">if</span> (<span style="color: rgba(0, 0, 255, 1)">typeof</span> require !== 'undefined'<span style="color: rgba(0, 0, 0, 1)">) {
require.extensions[</span>'.css'] = file =><span style="color: rgba(0, 0, 0, 1)"> {}
}
module.exports </span>= withCss({})</pre>
</div>
<p>for antd config .babelrc</p>
<div class="cnblogs_code">
<pre><span style="color: rgba(0, 0, 0, 1)">{
</span>"presets": ["next/babel"<span style="color: rgba(0, 0, 0, 1)">],
</span>"plugins"<span style="color: rgba(0, 0, 0, 1)">: [
[
</span>"import"<span style="color: rgba(0, 0, 0, 1)">,
{
</span>"libraryName": "antd"<span style="color: rgba(0, 0, 0, 1)">,
</span>"style": "css"<span style="color: rgba(0, 0, 0, 1)">
}
]
]
}</span></pre>
</div>
<p>test valid </p>
<p>app.js</p>
<div class="cnblogs_code">
<pre>import App from "next/app"<span style="color: rgba(0, 0, 0, 1)">;
import </span>"antd/dist/antd.css"<span style="color: rgba(0, 0, 0, 1)">;
export </span><span style="color: rgba(0, 0, 255, 1)">default</span> App</pre>
</div>
<p>update index.js</p>
<div class="cnblogs_code">
<pre>import { Button } from "antd"<span style="color: rgba(0, 0, 0, 1)">;
export </span><span style="color: rgba(0, 0, 255, 1)">default</span> () => <Button type="primary">hello world</Button></pre>
</div>
<p> </p><br><br>
来源:https://www.cnblogs.com/Nyan-Workflow-FC/p/11028788.html
頁:
[1]