element-UI

2023-11-07

常用组件

vue-admin里封装的组件,插件等,统一注册在framework/vab/index.js里,main.js再导入framework/vab,就可以全局使用framework/vab里的内容了

如果想全局使用自己封装的组件,可以放到vab/components里,比如多个页面需要用到的头像组件Avatar,这里有

另,也可以直接使用element-UI的组件,放在了vab/plugins里,全局的样式方法注册在framwork/plugins/vab,里面是对element-UI的一些方法重新封装注册,简便写法,直接在前面加base+大写首字母

vab.js除了element-UI外,还糅杂了store,token等,相当于框架内的main.js。因为framework/vab/index.js导入注册框架除了i18n和store的内容,main.js又导入了framework/vab/index.js,所以最后,其实都是注册到了main.js,不过还是不建议乱注册,不然很难找。

ps:token注册也在这里可以直接this.$baseToken( )获取token,csy-vue去掉了,只剩下框架里的插件的注册,之后如果需要getToken考虑直接在main.js注册,更加统一,符合阅读习惯,framwork/plugins/vab.js就只放element.UI的全局再封装方法。

import Vue from 'vue'
import { loadingText, messageDuration } from '@/config'
import { Loading, Message, MessageBox, Notification } from 'element-ui'
import { dependencies } from '../../../../package.json'

还有,framework/extra里有VabChart,如果要使用得自己去注册,可以和icon一样直接注册在framework/vab/index.js里

最后,样式变量在framework/style/variables里;全局样式定义在framework/style/vab.scss里

简单来说,i18n,store,token等方法的注册,直接放在main.js,组件相关的就不再注册在main.js了,直接在框架里的对应位置注册(自定义组件直接放在vab/components,是可以不用每一个都得去注册的,framework/vab/index.js做了一个封装可以自动导入

// 加载插件
const Plugins = require.context('./plugins', true, /\.js$/)
Plugins.keys().map(Plugins)


// 加载组件
const Components = require.context('.', true, /\.vue$/)
Components.keys()
.map(Components)
.forEach((item) => {
if (item.default.name && item.default.name !== 'Layouts')
Vue.component(item.default.name, item.default)
})

理论上js,也可以像上一面一样封装,但是因为js里,可能一个文件包含多个方法,注册一般是注册常用方法,方便使用,还是直接放在main.js,而且剥离了组件,其实main.js内容少了很多,不影响阅读,查看非常方便,如果项目再大型,可以考虑再封装试试。

自定义组件写在vab/components,自定义样式写在framework/style/vab.scss,vab/index.js封装了注册,自定义后,不用再注册

elementUI方法再封装且注册在framwork/plugins/vab.js,可以到在这个文件看方法名

element-UI文档:

https://element-plus.gitee.io/#/zh-CN/component/form

标签,属性,事件,方法

布局

x轴el-row和row-col

常用在x轴排列,24格分割,还可以响应式布局5阶

:gutter="10"
:xs="8" :sm="6" :md="4" :lg="3" :xl="1"

靠左,右,上,下VabQueryForm

<VabQueryForm>
  <VabQueryFormLeftPanel></VabQueryFormLeftPanel>
<VabQueryForm>

触发事件

点击el-button

@click,@mouseenter,@mouseleave

常用plain

type五种:primary,success,info,warning,danger

放上去会变色,点击后保持放上去的颜色,再点击别的地方,颜色会变回来

和切换框不同:切换框用按钮结合单选框组

登录按钮带加载中::loading=“true”

大小:medium(默认)smallmini

hover(el-popover)

hover或者点击显示小对话框

@show显示时 @hide @after-enter显示动画播放完毕 @after-leave隐藏动画

双向绑定

选择el-radio

@change

el-radio

单选框:border(可以加size)

el-check-box :indeterminate="isIndeterminate"全选

切换框(按钮形式结合单选框组)

// radio被选中的label值

<el-radio-group v-model="radio">
  <el-radio-button label="上海"></el-radio-button>
  <el-radio-button label="北京"></el-radio-button>
  <el-radio-button label="广州"></el-radio-button>
  <el-radio-button label="深圳"></el-radio-button>
</el-radio-group>

还有各种选择期:下拉,级连,switch,slider,时间,日期,评分等,都和el-radio一样的道理

输入el-input

@blur,@focus,

@change值改变,失去焦点,按下回车触发(常用于提交请求)搜索框,提交用户常需更改的内容

@input值改变触发

@clear

<el-input
  placeholder="请输入内容"
  v-model="input">
</el-input>

clearable

show-password

debounce=“300”去抖延时,使用change后,大网站,防止受频繁请求攻击,考虑

上传文件图片等el-upload

slot方式:把类似下面的代码(template #xxxx),放在两个标签中间,指定放在标签里面的哪个位置,相当于开槽,prefix内前,suffix内后,prepend外前,append外后

<template #suffix>

带输入建议 el-autocomplete :fetch-suggestion

表单el-form

el-form,el-form-item等形式

el-form上加:rules=“rules”

el-form-item的;label(小标题)和prop(用于rules)

rules:{ prop值:[ { }, { } ] }

后台管理,用到很多表单,可以封装到rules.js中,但其实不是很建议,因为大部分表单的prop都有对应的实体,大部分都是不同的,虽然判断的内容差不多,但是prop的值不同,这样rules.js就很多,再导入到页面,不方便页面的阅读,可以考虑,将复杂多样的验证或用到比较多的放到rules里作为模版,比如手机号码验证,常规的required和blur即验证。

表单经常会再结合上面选择和输入等多种形式,放于表单,用于post请求

验证函数是一个promise,可以传入回调函数(回调前,记得把this赋值到别的变量比如that上),验证成功即会fulfilled,执行回调函数的内容,如果是提交post请求等异步操作,记得要用async-await

this.$refs[formName].validate( (valid) => { } )

如果formName确定的话,建议用object.的形式,[’ ']容易忘记加双引号

遮罩

加载中<el-table v-loading=“loading”

drawer遮罩

iframe:SfIframe封装示例

<template>
    <div class="iframe-show" >
        <div class="iframe-title">{{title}}
          <vab-remix-icon slot="prefix" class="iframe-setwin" icon="close-fill" @click="close"/>
        </div>

       <div class="iframe-container">
        <slot/>		// 用槽封装组件,放父组件的内容
       </div>
    </div>
</template>

<script>
  export default {
    name: 'SfIframe',
    props: {
        title:{
            type:String,
            default:'',
            required: true,
        }
    },
    methods:{
      close() {
        this.$emit('close')		// 将子组件的消息传递给父组件
      }
    }
  }
</script>

使用

<sf-iframe v-if="iframeVisible" title="编辑" @close="closeiframe">

奇怪名字为什么不一样,之后测试后,再看看能不能统一

弹框互动

置于页面最上方

消息提示(自动消失)

this.$notify ( object ) 边角

this.$message ( object ) 正上方小横条

弹出窗口(有确定按钮)

一般这种弹出窗口是需要对接后台数据的

$confirm then传入确认后需要执行的回调函数this和异步(小弹框)

				this.$confirm('此操作将永久删除该文件, 是否继续?', '提示', {
          confirmButtonText: '确定',
          cancelButtonText: '取消',
          type: 'warning'
        }).then(() => {
          this.$message({
            type: 'success',
            message: '删除成功!'
          });
        }).catch(() => {
          this.$message({
            type: 'info',
            message: '已取消删除'
          });
        });

el-dialog大部分时候里面嵌套了表单了,防止用户误点击旁边的操作,:close-on-click-modal = ‘false’

但el-dialog放在iframe里,要再加 :append-to-body = ‘true’

美观展示

折叠面板

走马灯

时间线,分割线

卡片(其实就是加了阴影)

图标

elementUI

<i class="el-icon-edit"></i>

VabIcon

<VabIcon slot="prefix" icon="smartphone-line" />

AliIcon

<AliIcon :type="'jinggao1'" :color="'#ccc'" size="80" width="85" height="85" />

图表

表格:data = [ { }, ]

<el-table ref="tableSort" v-loading="payList.isLoading" height="418" :data="payList.list">
  <el-table-column align="center" label="排名" prop="index" width="55">
    // 插槽
    <template #default="{ $index }">
			{{ $index + 1 }}
    </template>
  </el-table-column>
  <el-table-column align="center" label="商品名称" prop="title" />
  <el-table-column align="center" label="支付金额" prop="num" />
</el-table>

VabChart:data在options里

<VabChart :options="options" theme="vab-echarts-theme" style="width:100%" />
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

element-UI 的相关文章

随机推荐

  • Linux虚拟机 Ubuntu16 cheese命令打开摄像头黑屏,以及mjpg-stream框架不显示视频界面。

    在Linux虚拟机 Ubuntu16打开笔记本的摄像头时 用 ubuntu16的cheese命令显示黑屏 如下图 解决方法 1 查看虚拟机是否已经已连接上摄像头 显示断开连接 连接主机 D 则虚拟机已连接上摄像头 2 确认摄像头 笔记本的摄
  • 搭建环境【2】windows主机和ubuntu互传文件的4种方法

    我的ubuntu系统是安装在 VMware 虚拟机中的 两者之间经常要互传文件 下面介绍4种常用的互传文件方法 1 共享文件夹方式互传 在虚拟机中需要开启共享文件夹的功能 首先虚拟机中的ubuntu要求是已经开机了的状态 然后进行设置 虚拟
  • 山东轻工业学院高校俱乐部主席“我和我的CSDN高校俱乐部”

    今天天气不错 上午收到了CSDN邮寄过来的2012年度优秀主席证书以及奖品 心情也不错 感谢CSDN教育事业部全体同事一年来对我们工作的支持与帮助 同时也感谢那些奋战在一线的兄弟姐妹们 你们为轻工学院CSDN高校俱乐部所做的一切 我永远铭记
  • ThreadLocal - ThreadlMap与弱引用

    ThreadLocal源码 在看ThreadLocal源码的时候 其中嵌套类ThreadLocalMap中的Entry继承了WeakReferenc static class ThreadLocalMap static class Entr
  • C++ string字符串修改和替换方法详解

    字符串内容的变化包括修改和替换两种 本节将分别讲解字符串内容的修改和字符串内容的替换 字符串内容的修改 可以通过使用多个函数修改字符串的值 例如 assign operator erase 交换 swap 插入 insert 等 另外 还可
  • 使用Guava RateLimiter限流以及源码解析

    前言 在开发高并发系统时有三把利器用来保护系统 缓存 降级和限流 缓存 缓存的目的是提升系统访问速度和增大系统处理容量 降级 降级是当服务出现问题或者影响到核心流程时 需要暂时屏蔽掉 待高峰或者问题解决后再打开 限流 限流的目的是通过对并发
  • win10 graphedit存储的路径

    如果安装郭windows SDK的话 可能的存储位置为C Program Files x86 Windows Kits 10 bin x86 C Program Files x86 Windows Kits 10 bin x64
  • 【C语言学习教程---2】C语言的数据类型

    事物的难度远远低于对事物的恐惧 上一篇文章已经介绍说明了Visual C 的安装和使用 链接如下 C语言学习教程 1 VC 6 0的安装和创建简单C语言工程文件教程 文末有程序代码免费的获取方式 本篇文章开始正式讲解和介绍C语言的知识 在学
  • 安装破解版的edraw max

    一 简介 project是一款好用的项目管理工具 二 安装过程 1 下载安装包 安装软件 安装后先不要运行 https pan baidu com share init surl gKfohSW8XEn 9cYLwnJwdQ h3um 2
  • git:git clone -b提示remote branch master not found in upstream origin

    问题 如标题 解决办法 检查下分支名是否写错了 git创建时有时候不一定有master分支 而是main分支 需要注意
  • Selenium webdriver的无头模式(headless)可能导致cookies内容缺失,以及解决措施

    无头模式 headless 是selenium的webdriver浏览器驱动的一项功能 允许浏览器不出现而仍可访问网页 并与之交互 这对于运行自动化测试或网络抓包大有用处 因为运行速度更快 占用资源更少 但是笔者发现在无头模式下运行时 浏览
  • 高性能mysql一.mysql系统结构和概念

    文章目录 1 1Mysql逻辑架构 1 1 1连接管理和安全性 1 1 2优化与执行 1 2并发控制 1 2 1读写锁 1 2 2锁粒度 1 3事务 1 3 1隔离级别 1 3 2死锁 1 3 3事务日志 1 3 4mysql中的事务 1
  • uni-app 下拉条件筛选菜单组件sl-filter app端不能正常显示

    1 使用uniapp的sl filter组件时 在浏览器中可以正常看到下拉筛选组件如下图1 2 在app中无法看到条件筛选控件 如下图2 3 找到sl filter中sl filter vue中的 created onReady 方法 将
  • MSP430F5529学习笔记(5)——按键切换灯的亮灭

    MSP430F5529学习笔记 4 按键点灯 目录 官方示例代码 内容解析 BIT0的含义 解析 按键消抖 增加的宏定义 问题 解决办法 官方示例代码 官方视频教程里面的代码如下 我做了些许的调整 但是是一样的 只需要看while 1 中的
  • 机器学习概论 聚类算法实现(实验四)

    一 实验目的 1 熟悉使用numpy模块生成二维正态分布 2 掌握kmeans聚类的代码实现 3 熟悉numpy的使用 4 熟悉matplotlib的使用 二 实验设备 计算机 CPU四核i7 6700处理器 内存8G SATA硬盘2TB硬
  • fedora下一些与网络配置相关的文件和命令

    http thethe blog 51cto com 498901 145966 1 如果您在命令行下启动网络服务 应该是 root localhost beinan etc init d network start root localh
  • latex之使用texstudio 编辑算法伪代码

    latex安装一定要记得设置环境变量 另外texstudio配置变量设置请看latex安装和texstudio latex语法没怎么学 随便找个模板跟着玩的 入门案例如下贴出来的 方便以后查找 使用 首先推荐一下网址 https priva
  • 半导体(芯片制造)材料概述

    引用 1 https zhuanlan zhihu com p 371609556 2 https zhuanlan zhihu com p 374110990 3 https www eet china com mp a91416 htm
  • Opencv时间计算

    OpenCV中的时间计算 OpenCV提供了两个函数 cv getTickCount 和cv getTickFrequency 其中 getTickCount 表示的是从某一事件后 比如开机后 系统时钟的嘀嗒数 getTickFrequen
  • element-UI

    常用组件 vue admin里封装的组件 插件等 统一注册在framework vab index js里 main js再导入framework vab 就可以全局使用framework vab里的内容了 如果想全局使用自己封装的组件 可