Vue.js: Element UI 与 Vuetify 比对

举报
zhoulive 发表于 2020/10/22 11:10:37 2020/10/22
【摘要】 使用过Vuetify与ElementUI之后,浅谈两者在开发中的优点与缺点。

1、Element UI(目前版本:2.13.2)

ElementUI官网:Element - 网站快速成型工具

GitHub仓库:https://github.com/ElemeFE/element

image.png


正如官方介绍所说的,Element UI框架组件具有很强的“一致性”特征,默认情况下为浅蓝色风格配色,组件标签用“el-”开头,通常只需要组合添加几个组件就能生成比较不错的设计布局

<template>
  <div>
    <el-radio-group v-model="radio1">
      <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>
  </div>
  <div style="margin-top: 20px">
    <el-radio-group v-model="radio2" size="medium">
      <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>
  </div>
  <div style="margin-top: 20px">
    <el-radio-group v-model="radio3" size="small">
      <el-radio-button label="上海"></el-radio-button>
      <el-radio-button label="北京" disabled ></el-radio-button>
      <el-radio-button label="广州"></el-radio-button>
      <el-radio-button label="深圳"></el-radio-button>
    </el-radio-group>
  </div>
  <div style="margin-top: 20px">
    <el-radio-group v-model="radio4" disabled size="mini">
      <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>
  </div>
</template>

<script>
  export default {
    data () {
        return {
            radio1: '上海',        
            radio2: '上海',        
            radio3: '上海',        
            radio4: '上海'
      };
    }
  }</script>

image.png

从整体上保持高度一致,很适合快速建站的小伙伴们,代码不多,只需要简单的设定属性以及绑定数据,配合上ElementUI的布局设计,前端实现网站还不分分钟的事情 ,代码实现相对之前辛苦的写样式的确是省事不少。


要说不方便的地方嘛。。。还的确有,某种程度上还有点不好解决,就是屏幕适应的问题。

image.png

正常的看这几个图还行,但把窗口大小调整后。。。emmm,有点不忍直视了

image.png

是吧,这缩放之后就有点尴尬的。所以开始尝试寻找一款能针对屏幕做适配的Vue框架(大佬可以自己适配,我就是个嫌麻烦的菜鸡~~)


2、Vuetify(目前版本:2.3.15)

最新版本v2.3.15官网地址:Vuetify - A Material Design Framework for Vue,js

旧版v2.x官网地址: Vuetify - A Material Design Framework for Vue,js

GitHub仓库:https://github.com/vuetifyjs/vuetify

Vuetify 是 Vue.js 的头号组件库,自 2016 年以来一直在积极开发。该项目的目标是为用户提供使用 Material Design specification 构建丰富且引人入胜的 web 应用程序所需的一切。它通过一致的更新周期、对以前版本的长期支持 (LTS)、响应式社区参与、丰富的资源生态系统和对高质量组件的贡献来实现这一点。


一个尤雨溪大大推荐的框架,使用时的体会简直就是屏幕适配的最好框架(大概没有之一吧),放一个效果图看看就知道了:

image.png


image.png


image.png


image.png


这是模拟三种情况下的视图,分别是PC、平板与手机,三种窗口之间缩放可直接切换

image.png

官方制定了五种屏幕适配解决方案

{
  // Breakpoints
  xs: boolean
  sm: boolean
  md: boolean
  lg: boolean
  xl: boolean

  // Conditionals
  xsOnly: boolean
  smOnly: boolean
  smAndDown: boolean
  smAndUp: boolean
  mdOnly: boolean
  mdAndDown: boolean
  mdAndUp: boolean
  lgOnly: boolean
  lgAndDown: boolean
  lgAndUp: boolean
  xlOnly: boolean

  // true if screen width < mobileBreakpoint
  mobile: boolean
  mobileBreakpoint: number

  // Current breakpoint name (e.g. 'md')
  name: string

  // Dimensions
  height: number
  width: number

  // Thresholds
  // Configurable through options
  {
    xs: number
    sm: number
    md: number
    lg: number
  }

  // Scrollbar
  scrollBarWidth: number}

使用实例如下,使用hidden-?-and-down类可以隐藏某类设备及其像素以下的组件

例如

桌面版AppBar:

<v-app-bar
    app
    class="hidden-sm-and-down "
    color="primary"
    dark
    elevate-on-scroll
    shrink-on-scroll
>
......
</v-app-bar>

手机版AppBar:

<v-app-bar
    app
    class="hidden-md-and-up"
    collapse-on-scroll
    color="primary"
    dark
    elevate-on-scroll
    extended
>
......
<v-app-bar>

3、总结

总得来说,两种都是非常优秀的框架,一种是饿了么团队开源的一款统一设计风格快速建站框架,一款是基于MaterialDesign设计理念的一款多分辨率显示适配的框架,两者都有其优势,且侧重点都不一样。ElementUI更侧重创建一组风格统一、高效且易于上手的理念,而Vuetify框架讲究多平台适配,与Google设计MaterialDesign设计风格搭配到一起,代码量会比Element稍微大一些,但对于自己做屏幕分辨率适配还是轻松不少。(啊,对了,最新的Vuetify框架还没有中文文档,这一点上自然比不上ElementUI这种本土框架,后期会慢慢适配的,近日想学习Vuetify框架,但英语水平也不是那么好的话,可以进入官网后点击下图红色划线部分进入旧版文档)

image.png

【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。