linux cpu占用率如何看
308
2022-08-28
使用ant design开发完整的后台系统
这里要说的是ant design的vue版和react版本的使用。这里不考虑到两种框架vue和react的底层。
vue ant design 项目
这是一个测试平台的项目。
因为使用的是整套的框架,那么我们按照vue ant design流程走一波。
推荐使用yarn进行安装~
# 安装脚手架yarn global add @vue/cli# 初始化项目vue create antd-demo# 引入vue ant designyarn add
之后我们就直接在main.js文件中全局引入
// main.jsimport Vue from 'vue'import Antd from 'ant-design-vue'import 'ant-design-vue/dist/antd.less'Vue.use(Antd)
使用axios操作接口。我们可以根据实际情况进行处理:
// request.jsimport Vue from 'vue'import notification from 'ant-design-vue/es/notification'import JSONbig from 'json-bigint' // 处理大数据, 建议大数字后端变成字符串传回// 创建 auth axios 实例const auth = axios.create({ headers: { 'Content-Type': 'application/json;charset=UTF-8', 'X-Requested-With': 'XMLHttpRequest' }, baseURL: 'api', // api base_url timeout: 10 * 60 * 1000, // 请求超时时间 10 分钟 transformResponse: [function (data) { return JSONbig.parse(data) }],})// 请求拦截器auth.interceptors.request.use(config { const token = Vue.ls.get(ACCESS_TOKEN) if (token) { config.headers[ 'Authorization' ] = 'JWT '+ token // 让每个请求携带自定义 token 请根据实际情况自行修改 } return config}, err)// 响应拦截器auth.interceptors.response.use( response { if (response.code === 10140) { loginTimeOut() } else { return response.data } }, error { // 错误处理 // 超时 if(error.response && error.response.status === 500){ notice({ title: `服务端异常 ${error.response.statusText}`, }, 'notice', 'error', 5) return } // ... notice({ title: `${error.response && error.response.data && error.response.data.msg}`, }, 'notice', 'error', 5) })
那么我们来考虑下对接口的管理:
# api目录- api - basic_config - device.js - ... - index.js
上面是api的基本管理的目录,这里呈现device.js和index.js入口文件。
// device.jsimport { auth } from '@/utils/request'export function getDeviceList(params) { return auth({ url: '/path/to/url', method: 'get', params })}export default
接下来我们在原型上挂载接口:
// index.jsimport bc_device from './basis_config/device'// ...const api = { bc_device}export default apiexport const ApiPlugin = {}ApiPlugin.install = function (Vue, options) { Vue.prototype.api = api // 挂载api在原型上
之后,调整下要代理地址:
// vue.config.jsconst HOST = '0.0.0.0';const PORT = '9002';const DEV_URL = '// 测试环境module.exports = { devServer: { host: HOST, port: PORT, false, hotOnly: false, proxy: { // 配置跨域 '/api': { //要访问的跨域的api的域名 target: `${DEV_URL}`, ws: true, changOrigin: true, // pathRewrite: { // '^/api': '' // } } } } // ...
完成上面的配置和修改后,那么我们可以搬砖了...
以刚才配置的bc_device接口为例:
# 部分页面目录- views - basis_config - comp # 这里是私有组件的存放 - device_manage.vue
可以愉快地在搭建好的框架里面添加东西了。 react ant design 项目 使用react ant design开发的项目是一个信息配置后台系统。 这里直接使用Ant Design Pro开发的。 这里的安装方法根据官网执行: # 新建一个空的文件夹作为项目目录,并在目录下执行:yarn create umi# 选择`ant-design-pro`Select the boilerplate type (Use arrow keys)❯ ant-design-pro - Create project with an layout-only ant-design-pro boilerplate, use together with umi block. app - Create project with a simple boilerplate, support typescript. block - Create a umi block. library - Create a library with umi. plugin - Create 我这里结合了typescript来开发,推荐使用。 我们使用集成的umi-request // request.ts/** * request 网络请求工具 * 更详细的 api 文档: */import { getStore, removeStore } from '@/utils/storage';import { extend } from 'umi-request';import { notification } from 'antd';import { stringify } from 'querystring';import { router } from 'umi';/** * 异常处理程序 */const errorHandler = (error: { response: Response; data: { code: number; message: string };}): Response { const { response, data } = error; if (response && response.status) { // const errorText = codeMessage[response.status] || response.statusText; const errorText = data ? data.message : '错误了!'; const { status } = response; notification.error({ message: `请求错误 - ${status}`, description: errorText, }); /** * 10000 IP change * 10001 token timeout */ if (response.status === 401 && (data.code === 10000 || data.code === 10001)) { router.replace({ pathname: '/user/login', search: stringify({ redirect: window.location.href, }), }); removeStore('token'); } } else if (!response) { notification.error({ description: '您的网络发生异常,无法连接服务器', message: '网络异常', }); } return response;};/** * 配置request请求时的默认参数 */const request = extend({ errorHandler, // 默认错误处理 credentials: 'include', // 默认请求是否带上cookie});// 请求拦截器request.interceptors.request.use((url, options) => { const token = getStore('token') || ''; // 401的时候要清空下token if (token) { options.headers = { // 处理header中的token 'Content-Type': 'application/json', Accept: 'application/json', Authorization: `** ${token}`, }; } return { url, options: { ...options }, };});request.interceptors.response.use(async (response: any) => response);export default 处理接口请求: // 接口的部分目录- services - port.ts - import request from '@/utils/request';// 获取配置端口列表export async function getNginxPort(params: object) { return request('/path/to/url', { method: 'get', params, });} 在执行api请求操作之前,我们配置下代理~ // config/proxy.ts/** * 在生产环境 代理是无法生效的,所以这里没有生产环境的配置 * The agent cannot take effect in the production environment * so there is no configuration of the production environment * For details, please see * */export default { dev: { '/api/': { target: ' changeOrigin: true, pathRewrite: { '^': '' 那么我们来实现下分配端口的列表数据请求: // pages/port/index.tsximport React, { Component } from 'react';import { PageHeaderWrapper } from '@ant-design/pro-layout';import { Table, message, Tag, Row, Input, Button } from 'antd';import { SearchOutlined, DeleteOutlined, PlusOutlined, InfoCircleOutlined,} from '@ant-design/icons';import { getNginxPort, postNginxPortItem, deleteNginxPortItem } from '@/services/port';import moment from 'moment';const { confirm } = Modal;interface NginxPortProps {}interface NginxPortState { data: object[]; loading: boolean; current: number; pageSize: number; total: number; showSizeChanger: boolean; showQuickJumper: boolean;}class NginxPort extends Component 好了,可以安静地打代码了。 后话 嗯~ 根据实际情况增加功能,比如图表展示你要选啥实现:echart, bizchart...等等 在使用vue和react版本的ant design开发后台系统,自己还是比较偏向使用react ant design来开发,当然,这是根据团队和业务实际情况来选择。对了,typescript真的挺好用的,都2020年了,可以考虑在项目中引入使用。
版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。
发表评论 record.id} pagination={{ total, current, pageSize, showTotal: (_total) => `共 ${_total} 条数据`, showSizeChanger, showQuickJumper, }} /> ); }}export default NginxPort;
暂时没有评论,来抢沙发吧~