吉祥鸟一雪钦 發表於 2019-6-15 20:46:00

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> () =&gt; &lt;span&gt;hello react next&lt;span&gt;</pre>
</div>
<p>result: &nbsp;hello react next</p>
<p>3、koa server</p>
<p>npm install &nbsp;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(() =&gt;<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) =&gt;<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, () =&gt;<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 =&gt;<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&nbsp;</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> () =&gt; &lt;Button type="primary"&gt;hello world&lt;/Button&gt;</pre>
</div>
<p>&nbsp;</p><br><br>
来源:https://www.cnblogs.com/Nyan-Workflow-FC/p/11028788.html
頁: [1]
查看完整版本: react: nextJs koa project basic structure