項目建立於2018年1月底,到如今已經接近半年,在此寫下半年來項目的實踐過程以及本身對前端的學習與體悟。html
框架: React
前端
路由: React-Router 4
vue
狀態管理: Redux
react
UI組件庫: Ant Design
vue-cli
由於平臺的前端技術選型,所以挑選了React
爲技術框架。並使用create-react-app
快速搭建工程。create-react-app
爲fackbook官方出品的快速搭建React
工程的命令行工具,能夠減小寫各類配置的過程,似於vue
的vue-cli
和angular
的angular-cli
。redux
而在使用create-react-app
,須要使用eject
暴露全部配置項,好自定義我的的Webpack
配置。後端
首先咱們並不打算將React
讓Webpack
打包,而使用第三方的CDN,直接在HTML
文件以script
標籤引入。在此咱們選用用友的tinper公共靜態資源庫。bash
改動Webpack
配置文件服務器
externals: {
'react': 'React',
'react-dom': 'ReactDOM',
'react-router-dom': 'ReactRouterDOM',
'redux': 'Redux',
'react-redux': 'ReactRedux'
}
複製代碼
而若引入第三方CDN,須要分引入爲生產環境仍是開發環境的代碼。 如在生產環境下要引入//design.yonyoucloud.com/static/react/16.0.0/umd/react.production.min.js
而在開發環境引入//design.yonyoucloud.com/static/react/16.2.0/umd/react.development.js
。react-router
選用ejs-compiled-loader
,這樣另咱們能夠在HTML
文件使用ejs
模板引擎。
繼續改動Webpack
配置文件
new HtmlWebpackPlugin({
inject: true,
template: `!!ejs-compiled-loader!${paths.appHtml}`,
}),
複製代碼
在HTML
使用模板引擎
<% if (process.env.NODE_ENV === 'production') { %>
<script src="//design.yonyoucloud.com/static/react/16.2.0/umd/react.production.min.js"></script>
<script src="//design.yonyoucloud.com/static/react-dom/16.2.0/umd/react-dom.production.min.js"></script>
<% } %>
<% if (process.env.NODE_ENV === 'development') { %>
<script src="//design.yonyoucloud.com/static/react/16.2.0/umd/react.development.js"></script>
<script src="//design.yonyoucloud.com/static/react-dom/16.2.0/umd/react-dom.development.js"></script>
<% } %>
複製代碼
最後,設置Webpack
的別名,讓後續引用的地方減小路徑的複雜度。
alias: {
'root': path.resolve(__dirname, '../src'),
'@': path.resolve(__dirname, '..')
},
複製代碼
如在src
文件夾下有兩個文件夾a
和b
,假若b
下的m.js
須要引用a
下的n.js
,須要import X from ‘../a/n.js’
,設置別名後可寫爲root/a/n.js
。
能夠看出先後端是有很強的耦合關係,後端須要依賴前端請求,前端須要依賴後端響應。不過此處後端是能夠輕鬆模擬前端請求,如POSTMAN
等。剩下的解決要點爲如何給前端模擬數據。所以,咱們在設計接口約定數據後構建另外一個簡單的Server
,這個Server
會簡單的響應前端請求,根據約定返回模擬的數據。咱們將這個Server
成爲Mock Server
。
其中Mock Server
可分紅本地及遠程。
本地的Mock Server
須要每一個前端在本身電腦上部署服務器,且若後臺改動API,後臺沒法同步維護Mock Server
與Real Server
。
所以打算創建遠程的Mock Server
(其實還有個關鍵是我使用用友配的電腦開發,在本地部署的話電腦配置。。。)不過此步驟咱們也能夠省略了,用友的大前端技術團隊提供了Mock平臺。
他的功能十分齊全,具有權限管理,Mock Server,數據導入等等的功能。