框架篇: React + React-Router + antd + nodejs + express框架搭建(nodejs做前后端server)


前提: nodejs >= 10.0; 

這里不推薦用官網的yarn安裝antd的模塊,因為后續會出錯,錯誤如圖:

 

也不推薦用npx方法來搭建react骨架,也會出錯,讓我們開始吧!!

 


 

前端React+Antd框架搭建

 

1.安裝並啟動create-react-app骨架應用

 

打開cmd按順序執行以下指令:

 

npm install -g create-react-app   (全局安裝create-react-app, 默認會安裝在C盤個人用戶下)

create-react-app my-app (此步安裝my-app以及需要的模塊到當前文件夾下)

cd my-app (進入到my-app目錄)

npm start (啟動react項目Demo,可輸入localhost:3000進入看demo)

結果如圖所示:

 

2.引入antd

 

①npm install antd --save-dev

 

②修改 src/App.js,引入 antd 的按鈕組件,代碼如下:

import React, { Component } from 'react';
import Button from 'antd/lib/button'; import './App.css'; class App extends Component { render() { return ( <div className="App"> <Button type="primary">Button</Button> </div>  ); } } export default App;

 

③修改 src/App.css,在文件頂部引入 antd/dist/antd.css

 

@import '~antd/dist/antd.css';

.App {
  text-align: center;
}

 

④執行npm run start,結果如圖

 

3.高級配置

 

我們現在已經把組件成功運行起來了,但是在實際開發過程中還有很多問題,例如上面的例子實際上加載了全部的 antd 組件的樣式(對前端性能是個隱患)。

此時我們需要對 create-react-app 的默認配置進行自定義,這里我們使用 react-app-rewired (一個對 create-react-app 進行自定義配置的社區解決方案)。

引入 react-app-rewired 並修改 package.json 里的啟動配置。由於新的 react-app-rewired@2.x 版本的關系,我們還需要安裝 customize-cra

 

①npm install react-app-rewired customize-cra --save-dev

 

②更改package.json

/* 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",
}

 

③然后在項目根目錄創建一個 config-overrides.js 用於修改默認配置。

module.exports = function override(config, env) {
  // do stuff with the webpack config...
  return config; };

 

④引入babel插件,執行指令:npm install babel-plugin-import --save-dev

 

⑤更改config-overrides.js文件

const { override, fixBabelImports } = require('customize-cra');


module.exports = override( fixBabelImports('import', { libraryName: 'antd', libraryDirectory: 'es', style: 'css', }), );

 

⑥移除前面在 src/App.css 里全量添加的 @import '~antd/dist/antd.css',並且修改App.js

import React, { Component } from 'react';
import { Button } from 'antd'; import './App.css'; class App extends Component { render() { return ( <div className="App"> <Button type="primary">Button</Button> </div>  ); } } export default App;

  

⑦執行命令npm run start,發覺服務已正常啟動,至此我們的react+antd框架已搭建完畢

 


 

后台nodejs+express框架搭建與服務合一

 

1.express骨架搭建

 

①我們在react根目錄下建立server文件夾,如圖

 

②我們cd進server文件夾,執行express骨架生成器指令:npm install express-generator -g

 

③執行語句:express --view=pug .

 

④執行語句:npm install,執行完了后,我們執行npm run start(這里先關掉react的服務),執行結果如圖:

 

2.服務合一

 

①到這一步,讓我們想想,前后端同樣是以nodejs+server為基礎的,難道我們需要起兩個服務不成?當然不對啊。

 我們重新進到react的根目錄,執行指令:npm run build

 

②我們將根目錄build目錄下的文件全部拷貝至server/public目錄,然后我們刷新一下網頁。誒,出來了。

 

③在最終部署服務環節時,我們即需要用服務合一的方法來部署運行服務(非開發階段使用,開發階段使用在下一章會講解)。

 


 

 

后續:誒,標題不是有router么?怎么沒有router相關的么?到這里,其實我們已經把相關框架大致都搭好啦。

 

下一章我們講具體該如何運用這個框架進行開發,就不放在這章講了,不然太長啦!!


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM