一、Ant Design Pro 初瞭解node
說到ant design pro,得先了解一下ant design是個什麼東西?ant design螞蟻金服基於react打造的一個服務於企業級產品的UI框架。而ant design pro呢?就是基於Ant Design這個框架
搭建的中後臺管理控制檯的腳手架 。react
ant design pro官方文檔:https://pro.ant.design/docs/getting-started-cngit
二、安裝github
默認你本地已安裝好node和git環境npm
$ git clone --depth=1 https://github.com/ant-design/ant-design-pro.git my-project
$ cd my-project
三、目錄結構json
├── config # umi 配置,包含路由,構建等配置 ├── mock # 本地模擬數據 ├── public │ └── favicon.png # Favicon ├── src │ ├── assets # 本地靜態資源 │ ├── components # 業務通用組件 │ ├── e2e # 集成測試用例 │ ├── layouts # 通用佈局 │ ├── models # 全局 dva model │ ├── pages # 業務頁面入口和經常使用模板 │ ├── services # 後臺接口服務 │ ├── utils # 工具庫 │ ├── locales # 國際化資源 │ ├── global.less # 全局樣式 │ └── global.js # 全局 JS ├── tests # 測試工具 ├── README.md └── package.json
四、讓你的項目run起來!redux
npm start
同時,若是你的本地安裝了yarn,也能夠使用yarn來啓動api
打開瀏覽器訪問 http://localhost:8000瀏覽器
五、開始項目你的項目框架
一、如何開發你的新頁面
a.在src/pages 目錄下新建你的模塊與頁面
b.在config目錄下router.config.js文件中配置菜單路由
c.國際化
在src目錄下的locals配置新菜單欄目所對應的中文信息
二、與服務端進行交互
a、請求流程
src/pages/newProject/new.js
import React, { PureComponent } from 'react'; //引入阿里dva框架 import { connect } from 'dva'; //調用了 dva 所封裝的 react-redux 的 @connect 裝飾器,用來接收綁定的 list 這個 model 對應的 redux store @connect(({ list, loading }) => ({ list, loading: loading.models.list, })) class CardList extends PureComponent { componentDidMount() { const { dispatch } = this.props; //dispatch分發器調用models發起請求,具體流程是dispatch=>models=>services dispatch({ type: 'list/fetch', //list 爲model 中的namespace,fetch爲方法名 payload: { count: 8, }, }); }
src/pages/newProjec/models
import { queryFakeList } from '@/services/api' export default { namespace: 'list', //state 存儲數據收到 Action 之後,會更新數據 state: { list: [], }, effects: { // @param payload 參數 // @param call 執行異步函數調用接口 // @param put 發出一個 Action,相似於 dispatch 將服務端返回的數據傳遞給上面的state *fetch({ payload }, { call, put }) { const response = yield call(queryFakeList, payload) yield put({ type: 'queryList', //reducers 中的方法 payload: Array.isArray(response) ? response : [], }) }, } reducers: { queryList(state, action) { return { ...state, list: action.payload, //更新state中的數據 } }, }
src/services/api.js
import { stringify } from 'qs' //對服務端發起請求 export async function queryFakeList(params) { return request(`/api/fake_list?${stringify(params)}`) }