17vue3实战-----使用配置文件生成简易页面
17vue3实战-----使用配置文件生成简易页面
- 1.写在前面
- 2.背景
- 3.实现
- 3.1界面效果
- 3.2新建config配置文件
- 3.3封装组件
- 3.4使用组件
1.写在前面
后台管理系统的开发很简单。无论是用户模块、部门模块、角色模块还是其它模块,界面和业务逻辑都相对比较简单,我会省略这些模块的搭建过程,而着重去讲述一些比较复杂或者新颖的技术点。
2.背景
在后台管理项目,经常会出现以下情况:

在很多模块中,都有类似以上红色区域的情况。这些表单的个数、种类(可能是select、input…)、具体内容都不同。但他们却又有一些相关的地方。如果一个一个界面搭建会比较麻烦,如果能通过配置文件将红色区域的东西表达出来,根据配置文件来确定红色区域的页面,那这万事大吉了。
3.实现
3.1界面效果
这里我以部门模块为例,以下有两个input和一个date-picker。

3.2新建config配置文件
在department新建config配置文件:

department/config/search.config.ts:
const searchConfig = {formItems: [{type: 'input',prop: 'name',label: '部门名称',placeholder: '请输入查询的部门名称',initialValue: 'bbb'},{type: 'input',prop: 'leader',label: '部门领导',placeholder: '请输入查询的领导名称'},{type: 'date-picker',prop: 'createAt',label: '创建时间'}]
}
export default searchConfig
3.3封装组件
将红色搜索区域封装成一个组件:

components/page-search/page-search.vue:
<template><div class="search"><!-- 1.输入搜索关键字的表单 --><el-form:model="searchForm"ref="formRef":label-width="searchConfig.labelWidth ?? '80px'"size="large"><el-row :gutter="20"><template v-for="item in searchConfig.formItems" :key="item.prop"><el-col :span="8"><el-form-item :label="item.label" :prop="item.prop"><template v-if="item.type === 'input'"><el-inputv-model="searchForm[item.prop]":placeholder="item.placeholder"/></template><template v-if="item.type === 'date-picker'"><el-date-pickerv-model="searchForm[item.prop]"type="daterange"range-separator="-"start-placeholder="开始时间"end-placeholder="结束时间"/></template><template v-if="item.type === 'select'"><el-selectv-model="searchForm[item.prop]":placeholder="item.placeholder"style="width: 100%"><template v-for="option in item.options" :key="option.value"><el-option :label="option.label" :value="option.value" /></template></el-select></template></el-form-item></el-col></template></el-row></el-form><!-- 2.重置和搜索的按钮 --><div class="btns"><el-button icon="Refresh" @click="handleResetClick">重置</el-button><el-button icon="Search" type="primary" @click="handleQueryClick">查询</el-button></div></div>
</template><script setup lang="ts">
import { reactive, ref } from 'vue'
import type { ElForm } from 'element-plus'// 定义自定义事件/接收的属性
interface IProps {searchConfig: {labelWidth?: stringformItems: any[]}
}
const props = defineProps<IProps>()
// 定义form的数据
const initialForm: any = {}
for (const item of props.searchConfig.formItems) {initialForm[item.prop] = item.initialValue ?? ''
}
const searchForm = reactive(initialForm)...
</script><style lang="less" scoped>
...
</style>
3.4使用组件
<template><div class="department"><page-search//将配置传给子组件:search-config="searchConfig"@query-click="handleQueryClick"@reset-click="handleResetClick"/>...</div>
</template><script setup lang="ts" name="department">
import { ref } from 'vue'
import PageSearch from '@/components/page-search/page-search.vue'
import searchConfig from './config/search.config'
...
</script>
<style scoped></style>
其它模块也是一样配置,比如角色模块:
const searchConfig = {formItems: [{type: 'input',prop: 'name',label: '角色名称',placeholder: '请输入查询的角色名称',initialValue: 'abc'},{type: 'input',prop: 'leader',label: '权限介绍',placeholder: '请输入查询的权限介绍'},{type: 'date-picker',prop: 'createAt',label: '创建时间'}]
}export default searchConfig
甚至有些时候还需要动态改动配置,这些都可以自己去思考。
相关文章:
17vue3实战-----使用配置文件生成简易页面
17vue3实战-----使用配置文件生成简易页面 1.写在前面2.背景3.实现3.1界面效果3.2新建config配置文件3.3封装组件3.4使用组件 1.写在前面 后台管理系统的开发很简单。无论是用户模块、部门模块、角色模块还是其它模块,界面和业务逻辑都相对比较简单,我会省略这些模…...
计算机视觉的研究方向、发展历程、发展前景介绍
以下将分别从图像分类、目标检测、语义分割、图像分割(此处应主要指实例分割)四个方面,为你介绍研究生人工智能计算机视觉领域的应用方向、发展历程以及发展前景。 文章目录 1.图像分类应用方向发展历程发展前景 2.目标检测应用方向发展历程…...
“mysqld --initialize --console ”执行不成功情况总结和解决措施
我的MYSQL版本是9.0.1出现类似下列的报错: 2024-10-29T01:09:55.942951Z 0 [System] [MY-015017] [Server] MySQL Server Initialization - start. 2024-10-29T01:09:55.950379Z 0 [Warning] [MY-010915] [Server] NO_ZERO_DATE, NO_ZERO_IN_DATE and ERROR_FOR_DIV…...
深入探索现代CSS:从基础到未来趋势
引言:CSS的进化之路 CSS(层叠样式表)自1996年诞生以来,已从简单的样式描述语言发展为构建现代Web体验的核心技术。截至2023年,超过98%的网站使用CSS3技术,其发展历程见证了Web从静态文档到富交互应用的蜕变…...
STM32 Unix时间戳
Unix时间戳 Unix 时间戳(Unix Timestamp)定义为从UTC/GMT的1970年1月1日0时0分0秒开始所经过的秒数,不考虑闰秒 时间戳存储在一个秒计数器中,秒计数器为32位/64位的整型变量 世界上所有时区的秒计数器相同,不同时区通过…...
SpringSecurity高级用法
SpringSecurity的高级用法,包括自定义loginUrl携带参数,自定义认证校验逻辑,自定义权限校验逻辑。 示例项目 https://github.com/qihaiyan/springcamp/tree/master/spring-advanced-security 一、概述 在项目实际开发过程中,Spr…...
qwen2.5-vl-7B视觉大模型 私有化部署webUI
服务器选用:算力云 部署qwen2.5-vl-7B,24g显卡跑不起图,单问问题就占20g左右。有能力可以用大点的显卡 一、下载模型 Qwen2.5-VL-7B-Instruct 有conda ,可以在conda下操作,不知道conda的同学可以参考本博主之前的文章…...
java安全中的类加载
java安全中的类加载 提前声明: 本文所涉及的内容仅供参考与教育目的,旨在普及网络安全相关知识。其内容不代表任何机构、组织或个人的权威建议,亦不构成具体的操作指南或法律依据。作者及发布平台对因使用本文信息直接或间接引发的任何风险、损失或法律纠…...
如何在Windows中配置MySQL?
MySQL是一个广泛使用的开源关系型数据库管理系统,它支持多种操作系统平台,其中包括Windows。无论是开发者进行本地开发,还是管理员为应用程序配置数据库,MySQL都是一个非常流行的选择。本篇文章将详细介绍如何在Windows操作系统中…...
Docker Desktop 镜像源配置
1 打开配置页面 2 docker engine 镜像配置位置 3、替换镜像内容 {"registry-mirrors": ["https://hub-mirror.c.163.com","https://mirror.ccs.tencentyun.com","https://05f073ad3c0010ea0f4bc00b7105ec20.mirror.swr.myhuaweicloud.c…...
125,【1】攻防世界unserialize3
进入靶场 代码 <?php // 定义一个名为 xctf 的类 class xctf {// 定义一个公共属性 $flag,初始值为字符串 111public $flag 111;// 定义 __wakeup() 魔术方法// 当使用 unserialize() 函数反序列化对象时,会自动调用 __wakeup() 方法// 在这个方法…...
2025年数据资产管理解决方案:资料合集,从基础知识到行业应用的全面解析
在数字化时代,数据已成为企业最宝贵的资产之一。如何有效地管理和利用这些数据,将其转化为实际的经济价值,已成为企业面临的重要课题。 本文将通过数据资产解决方案、数据资产行业报告白皮书、数据资产政策汇编、数据资产基础知识以及数据资…...
Python与R机器学习(1)支持向量机
以下是对Python与R在支持向量机(SVM)实现上的核心区别分析及完整示例代码: 一、核心差异对比 特征Python (scikit-learn)R (e1071/kernlab)核心库sklearn.svm.SVC/SVRe1071::svm() 或 kernlab::ksvm()语法范式面向对象(先初始化模…...
Render上后端部署Springboot + 前端Vue 问题及解决方案汇总
有一个 Vue 前端 和 Spring Boot 后端的动态网页游戏,当前在本地的 5173 端口和运行。你希望生成一个公开链接,让所有点击链接的人都能访问并玩这个游戏。由于游戏原本需要在本地执行 npm install 后才能启动,你现在想知道在部署时是选择 Ren…...
朝天椒USB服务器:解决加密狗远程连接
本文探讨朝天椒USB服务器用Usb Over Network技术,解决加密狗在虚拟机、云主机甚至异地的远程连接问题。 在企业数字化转型的浪潮中,加密狗作为防止软件盗版的重要手段,广泛应用于各类软件授权场景。然而,随着企业超融合进程不断加…...
Unity Shader Feature
Shader Feature 设置Keyword //0:Red 1:Green 2:Blue Mat.SetInt(“_Color”,0); 需要在创建时进行设置,运行时不可设置 Shader "Unlit/KeywordEnum" {Properties{[KeywordEnum(Red,Green,Blue)] _Color("Color",int) 0}SubShader{Pass{HLSL…...
前端开发环境
vscde nrm 切换源管理 nvm 切换node版本工具 nodemon node运行js文件热更新 pxcook 易用的自动标注工具, 生成前端代码, 设计研发协作利器,比PS轻量 TypeScript 安装tsc 它的作用就是将ts文件编译为js文件 npm i typescript -g 输入tsc -v能够看到东西,就说明好了 …...
c语言判断一个文件的文件格式
在 Linux 下使用 C 语言判断一个文件的文件格式,通常需要检查文件的头信息(也称为“幻数”或“魔数”)。不同的文件格式在文件头有特定的字节序列,这些字节序列可以用来确定文件的类型。以下是一个基本的示例,展示了如…...
厘米和磅的转换关系
在排版和设计领域,厘米(cm)和磅(pt)都是常用的长度度量单位,它们之间的转换关系基于特定的换算标准,下面为你详细介绍: 基本换算关系 磅是印刷行业常用的长度单位,1英寸…...
汽车与AI深度融合:CES Asia 2025前瞻
在科技飞速发展的当下,汽车与AI的融合正成为行业变革的关键驱动力。近日,吉利、极氪、岚图、智己等多家车企纷纷官宣与DeepSeek模型深度融合,其中岚图知音更是将成为首个搭载该模型的量产车型,这无疑是汽车智能化进程中的重要里程…...
用easyExcel如何实现?
要使提供的 ExcelModelListener 类来解析 Excel 文件并实现批量存储数据库的功能,需要结合 EasyExcel 库来读取 Excel 数据。具体来说,可以使用 EasyExcel.read() 方法来读取 Excel 文件,并指定 ExcelModelListener 作为事件监听器。 下面是…...
停止回答 TypeError: (0 , _vue.defineComponent) is not a function
在 Vue.js 中遇到 TypeError: (0 , _vue.defineComponent) is not a function 错误通常意味着 defineComponent 函数没有被正确导入或者你的 Vue 版本不支持该函数。 解决步骤 检查 Vue 版本 defineComponent 是 Vue 3 中的一个功能,用于创建组件。确保你正在使用…...
数据结构与算法-单链表
链表 参考学习:B站-逊哥带你学编程 单链表 单链表-存储结构 typedef int ElemType;typedef struct node{ElemType data;struct node *next; }Node;单链表-初始化 Node *initList() {Node *head (Node *)malloc(sizeof(Node));head->data 0;head->next …...
ASP.NET Core 如何使用 C# 向端点发出 POST 请求
使用 C#,将 JSON POST 到 REST API 端点;如何从 REST API 接收 JSON 数据。 本文需要 ASP .NET Core,并兼容 .NET Core 3.1、.NET 6和.NET 8。 要从端点获取数据,请参阅本文。 使用 . 将 JSON 数据发布到端点非常容易HttpClien…...
DeepSeek模型R1服务器繁忙,怎么解决?
在当今科技飞速发展的时代,人工智能领域不断涌现出令人瞩目的创新成果,其中DeepSeek模型无疑成为了众多关注焦点。它凭借着先进的技术和卓越的性能,在行业内掀起了一股热潮,吸引了无数目光。然而,如同许多前沿技术在发…...
GlusterFS 深度洞察:从架构原理到案例实践的全面解读(上)
文章目录 一.GlusterFS简介二.GlusterFS原理架构三.适用场景四.Glusterfs与其他存储产品对比五.部署GlusterFS集群六. 使用heketi将glusterfs接入k8s作为后端存储 一.GlusterFS简介 GlusterFS是一个免费的开源分布式文件系统,具有无中心节点、堆栈式设计、全局统一…...
更新无忧:用 Docker 数据卷确保 Open WebUI 数据持久化
在使用 Docker 部署 Open WebUI 时,如何在更新容器的同时确保数据不丢失,始终是工程师们关注的焦点。每次拉取新版镜像、停止并重启容器时,如果没有正确挂载数据卷,配置和数据库数据极易流失,给生产环境带来不必要的麻…...
zyNo.22
常见Web漏洞解析 命令执行漏洞 1.Bash与CMD常用命令 (1)Bash 读取文件:最常见的命令cat flag 在 Bash 中,cat 以及的tac、nl、more、head、less、tail、od、pr 均为文件读取相关命令,它们的区别如下: …...
idea如何使用AI编程提升效率-在IntelliJ IDEA 中安装 GitHub Copilot 插件的步骤-卓伊凡
idea如何使用AI编程提升效率-在IntelliJ IDEA 中安装 GitHub Copilot 插件的步骤-卓伊凡 问题 idea编译器 安装copilot AI工具 实际操作 在 IntelliJ IDEA 中安装 GitHub Copilot 插件的步骤如下: 打开 IntelliJ IDEA: 打开你的 IntelliJ IDEA 应用…...
有哪些PHP开源框架属于是“高开疯走”的?
“高开疯走”是一个网络流行语或者谐音梗。可能是指一开始起点很高(高开),然后发展迅速或者变得非常牛(疯走)。 在PHP生态中,一些框架面对市场的风起云涌,能持续保持高质量发展,切实…...
