框架篇: React + React-Router + antd + nodejs + express框架搭建(nodejs做前后端server)
<p><span style="font-size: 16px"><strong>前提: nodejs >= 10.0; </strong></span></p><p><span style="font-size: 16px">这里不推荐用官网的yarn安装antd的模块,因为后续会出错,错误如图:</span></p>
<p><img src="https://img2018.cnblogs.com/blog/1154698/201906/1154698-20190628074603362-1260098764.png"></p>
<p> </p>
<p><span style="font-size: 16px">也不推荐用npx方法来搭建react骨架,也会出错,让我们开始吧!!</span></p>
<p> </p>
<hr>
<p style="text-align: center"><span style="font-size: 18px"><strong> </strong></span></p>
<p style="text-align: center"><span style="font-size: 18px"><strong>前端React+Antd框架搭建</strong></span></p>
<p> </p>
<p><span style="font-size: 16px"><strong>1.安装并启动create-react-app骨架应用</strong></span></p>
<p><span style="font-size: 16px"> </span></p>
<p><span style="font-size: 16px">打开cmd按顺序执行以下指令:</span></p>
<p><span style="font-size: 16px"> </span></p>
<p><span style="font-size: 16px">npm install -g create-react-app (全局安装create-react-app, 默认会安装在C盘个人用户下)</span></p>
<p><span style="font-size: 16px">create-react-app my-app (此步安装my-app以及需要的模块到当前文件夹下)</span></p>
<p><span style="font-size: 16px">cd my-app (进入到my-app目录)</span></p>
<p><span style="font-size: 16px">npm start (启动react项目Demo,可输入localhost:3000进入看demo)</span></p>
<p><span style="font-size: 16px">结果如图所示:</span></p>
<p><img src="https://img2018.cnblogs.com/blog/1154698/201906/1154698-20190617215325172-517243316.png"></p>
<p> </p>
<p><span style="font-size: 16px"><strong>2.引入antd</strong></span></p>
<p> </p>
<p><span style="font-size: 16px">①npm install antd --save-dev</span></p>
<p><span style="font-size: 16px"> </span></p>
<p><span style="font-size: 16px">②修改 <code>src/App.js</code>,引入 antd 的按钮组件,代码如下:</span></p>
<div class="cnblogs_code">
<pre>import React, { Component } from 'react'<span>;
import Button from 'antd/lib/button'<span>;
import './App.css'<span>;
class App extends Component {
render() {
return<span> (
<div className="App">
<Button type="primary">Button</Button>
</div>
<span> );
}
}
export default App;</span></span></span></span></span></pre>
</div>
<p> </p>
<p><span style="font-size: 16px">③修改 <code>src/App.css</code>,在文件顶部引入 <code>antd/dist/antd.css</code>。</span></p>
<p> </p>
<div class="cnblogs_code">
<pre>@import '~antd/dist/antd.css';
.App {
text-align: center;
}</pre>
</div>
<p> </p>
<p><span style="font-size: 16px">④执行npm run start,结果如图</span></p>
<p><img src="https://img2018.cnblogs.com/blog/1154698/201906/1154698-20190630103055085-585577868.png"></p>
<p> </p>
<p><span style="font-size: 16px"><strong>3.高级配置</strong></span></p>
<p><span style="font-size: 16px"> </span></p>
<p><span style="font-size: 16px">我们现在已经把组件成功运行起来了,但是在实际开发过程中还有很多问题,例如上面的例子实际上加载了全部的 antd 组件的样式(对前端性能是个隐患)。</span></p>
<p><span style="font-size: 16px">此时我们需要对 create-react-app 的默认配置进行自定义,这里我们使用 react-app-rewired (一个对 create-react-app 进行自定义配置的社区解决方案)。</span></p>
<p><span style="font-size: 16px">引入 react-app-rewired 并修改 package.json 里的启动配置。由于新的 react-app-rewired@2.x 版本的关系,我们还需要安装 customize-cra。</span></p>
<p><span style="font-size: 16px"> </span></p>
<p><span style="font-size: 16px">①npm install react<span class="token operator">-app<span class="token operator">-rewired customize<span class="token operator">-cra --save-dev</span></span></span></span></p>
<p><span style="font-size: 16px"> </span></p>
<p><span style="font-size: 16px">②更改package.json</span></p>
<div class="cnblogs_code">
<pre>/* package.json */
"scripts": {
- "start": "react-scripts start",
+ "start": "react-app-rewired start",
- "build": "react-scripts build",
+ "build": "react-app-rewired build",
- "test": "react-scripts test",
+ "test": "react-app-rewired test",
}</pre>
</div>
<p> </p>
<p><span style="font-size: 16px">③然后在项目根目录创建一个 <code>config-overrides.js</code> 用于修改默认配置。</span></p>
<div class="cnblogs_code">
<pre>module.exports = function<span> override(config, env) {
// do stuff with the webpack config...
return<span> config;
};</span></span></pre>
</div>
<p><span style="font-size: 16px"> </span></p>
<p><span style="font-size: 16px">④引入babel插件,执行指令:npm install babel-plugin-import --save-dev</span></p>
<p><span style="font-size: 16px"> </span></p>
<p><span style="font-size: 16px">⑤更改config-overrides.js文件</span></p>
<div class="cnblogs_code">
<pre>const { override, fixBabelImports } = require('customize-cra'<span>);
module.exports =<span> override(
fixBabelImports('import'<span>, {
libraryName: 'antd'<span>,
libraryDirectory: 'es'<span>,
style: 'css'<span>,
}),
);</span></span></span></span></span></span></pre>
</div>
<p> </p>
<p><span style="font-size: 16px">⑥移除前面在 <code>src/App.css</code> 里全量添加的 <code>@import '~antd/dist/antd.css',并且</code>修改App.js</span></p>
<div class="cnblogs_code">
<pre>import React, { Component } from 'react'<span>;
import { Button } from 'antd'<span>;
import './App.css'<span>;
class App extends Component {
render() {
return<span> (
<div className="App">
<Button type="primary">Button</Button>
</div>
<span> );
}
}
export default App;</span></span></span></span></span></pre>
</div>
<p><span style="font-size: 16px"> </span><span style="font-size: 18px"><strong> </strong></span></p>
<p><span style="font-size: 16px">⑦执行命令npm run start,发觉服务已正常启动,至此我们的react+antd框架已搭建完毕</span></p>
<p> </p>
<hr>
<p> </p>
<p style="text-align: center"><strong><span style="font-size: 18px">后台nodejs+express框架搭建与服务合一</span></strong></p>
<p style="text-align: center"> </p>
<p style="text-align: left"><span style="font-size: 16px"><strong><strong>1.express骨架搭建</strong></strong></span></p>
<p style="text-align: left"> </p>
<p style="text-align: left">①我们在react根目录下建立server文件夹,如图</p>
<p style="text-align: left"><img src="https://img2018.cnblogs.com/blog/1154698/201906/1154698-20190630113801134-188091814.png"></p>
<p> </p>
<p><span style="font-size: 16px">②我们cd进server文件夹,执行express骨架生成器指令:npm install express-generator -g</span></p>
<p><span style="font-size: 16px"> </span></p>
<p><span style="font-size: 16px">③执行语句:express --view=pug .</span></p>
<p><span style="font-size: 16px"> </span></p>
<p><span style="font-size: 16px">④执行语句:npm install,执行完了后,我们执行npm run start(这里先关掉react的服务),执行结果如图:</span></p>
<p><img src="https://img2018.cnblogs.com/blog/1154698/201906/1154698-20190630114513108-1128412784.png"></p>
<p> </p>
<p><strong><span style="font-size: 16px">2.服务合一</span></strong></p>
<p> </p>
<p><span style="font-size: 16px">①到这一步,让我们想想,前后端同样是以nodejs+server为基础的,难道我们需要起两个服务不成?当然不对啊。</span></p>
<p><span style="font-size: 16px"> 我们重新进到react的根目录,执行指令:npm run build</span></p>
<p><span style="font-size: 16px"> </span></p>
<p><span style="font-size: 16px">②我们将根目录build目录下的文件全部拷贝至server/public目录,然后我们刷新一下网页。诶,出来了。</span></p>
<p> </p>
<p><span style="font-size: 16px">③在最终部署服务环节时,我们即需要用服务合一的方法来部署运行服务(非开发阶段使用,开发阶段使用在下一章会讲解)。</span></p>
<p><img src="https://img2018.cnblogs.com/blog/1154698/201906/1154698-20190630120331259-1689389304.png"></p>
<p> </p>
<hr>
<p> </p>
<p> </p>
<p><strong><span style="font-size: 16px">后续:诶,标题不是有router么?怎么没有router相关的么?到这里,其实我们已经把相关框架大致都搭好啦。</span></strong></p>
<p> </p>
<p><strong><span style="font-size: 16px">下一章我们讲具体该如何运用这个框架进行开发,就不放在这章讲了,不然太长啦!!</span></strong></p><br><br>
来源:https://www.cnblogs.com/tianshu/p/11108576.html
頁:
[1]