Element-ui与Vue结合——合理节约时间

1,953 阅读4分钟

   随着逐渐深入学习前端知识,对于所谓的写页面,不仅仅局限于传统的前端三件套。我们也可以利用vue框架,react框架去辅助我们写页面,而今天我学习了使用Element-ui组件式开发页面,这个方法大大节约了我们写页面时所花费的时间。

ELement-ui

   Elment-ui(element-plus.org/zh-CN/compo…) 它是一套广泛使用的,开源的用户界面组件库,特别是基于Vue.js框架的Web应用程序设计。它是由饿了么前端团队开发和维护的,旨在加速开发Web界面的开发过程,提供一致性和高质量的用户体验.

   首先我们进入Element-ui的官方网站,就会发现这里有各种各样的的组件

image.png

我们可以根据页面所需要的功能从中挑取对应的组件 下面我们就根据登录界面来从Element-ui组件库中获取我们所需的组件

image.png

使用ELement-ui组件库中的组件,我们需要在我们Vscode中安装好Element-ui组件库,在Element-ui官网的指南中

image.png

我们可以看到左侧的菜单栏,找到基础部分的安装

image.png

在这里我们可以看到使用包管理器这里有告诉我们如何安装Element-ui组件库,当然我们也可以直接通过浏览器的HTML标签直接导入ELement-ui了

image.png

这里我推荐使用包管理器的方式来使用Element-ui

image.png

在安装之前我们也要考虑一下浏览器版本的兼容性,因为Vue 3不再支持IE11,ELement Puls也不再支持IE浏览器, 指南中也有提示我们支持的浏览器的版本

image.png

看完使用包管理器之后,我们回到Vscode,找到我们的项目文件,在终端打开该项目文件然后输入

image.png

下载完成之后,我们可以看到在我们package.json文件依赖部分

image.png

就有了Element-ui的依赖。(我这里是使用了命令行创建了一个Vue项目,在命令行中,询问我们是否需要Router部分,我选择了是) 那么安装好之后,我们就正式开始快速搭建一个登录界面。

在这之前,我们需要进行一些配置,在main.js文件中,我们需要导入element-plus,以及使用ElementPlus

import { createApp } from 'vue'

import './assets/reset.css'
import ElementPlus from 'element-plus'
import 'element-plus/dist/index.css'

import App from './App.vue'
import router from './router'

const app = createApp(App)


app.use(router)
app.use(ElementPlus)
app.mount('#app')

把一些必需品导入,在script部分我们导入

import {reactive} from 'vue'
import {ElMessage} from 'element-plus'
import {useRouter} from 'vue-router'

就好了,reactive是把引用类型变成响应式数据,EleMessage是Element-ui组件库中一个消息提示用法

我们创建一个Login.vue的vue文件.让我们想想,一个登录页面需要什么,一个账号输入框,一个密码输入框,一个登录按钮,一个注册按钮,四个部分就可以实现一个简单的登录页面对吧。这四个部分其实都很简单,但是我就是不想自己手写,我们就去Element-ui组件库中找。

image.png

这是输入框的基础版本,密码框的话也有

image.png

我们又如何拿到它们的代码呢,在这些样式最底层的最右边有一个<>这样的符号

image.png

点开我们就可以看到它们的源码了。

image.png

而我们只需要复制

image.png

这一句代码就好了 同样的获取按钮,我们就去找按钮组件就好了

image.png

我们可以从其源码中,任选喜欢的按钮就好了。

<template>
    <div class="login">

        <div class="login-wrap">
            <h2>旅梦后台管理系统</h2>
            <el-row>
                <el-input v-model="state.account" placeholder="请输入账号" />
            </el-row>
            <el-row>
                <el-input v-model="state.password" placeholder="请输入密码" />
            </el-row>

            <el-row>
                <el-button type="primary" @click="signIn">登录</el-button>
                <el-button>注册</el-button>
            </el-row>
        </div>

    </div>
</template>

其中"el-row"是指这一整行的布局

image.png

    <el-row>
         <el-input v-model="state.account" placeholder="请输入账号" />
     </el-row>

对于前面说到的ElMessage是ELement-ui中常用于用户主动操作后,程序给予的反馈

image.png

登录成功我们看这一部分就好了

image.png

下面是源码奉上:

<template>
    <div class="login">

        <div class="login-wrap">
            <h2>旅梦后台管理系统</h2>
            <el-row>
                <el-input v-model="state.account" placeholder="请输入账号" />
            </el-row>
            <el-row>
                <el-input v-model="state.password" placeholder="请输入密码" />
            </el-row>

            <el-row>
                <el-button type="primary" @click="signIn">登录</el-button>
                <el-button>注册</el-button>
            </el-row>
        </div>

    </div>
</template>

<script setup>
import {reactive} from 'vue'
import {ElMessage} from 'element-plus'
import {useRouter} from 'vue-router'
const  state = reactive({
    account:'admin',
    password:'123'
})
const router = useRouter()
const signIn=()=>{
    if(state.account && state.password){
        ElMessage({
        message: '登录成功',
        type: 'success',
            })
        router.push('/home')
    }
}
</script>

<style lang="css" scoped>
.login{
    width:100vw;
    height: 100vh;
    display: flex;
    justify-content: center;
    align-items: center;
}
.login-wrap{
    width:400px;
    background-color: #eee;
    text-align:center;
    padding:20px;
    box-sizing: border-box;
    opacity: 0.6;
    border-radius:20px;
}
h2{
    line-height:3;
    font-size:20px;
}
.el-row{
    width:80%;
    margin:0 auto;
    margin-bottom:30px;
    justify-content: center;
    align-items: center;
    justify-content: space-between;
}
.el-button{
    width:40%;
    border-radius:15px;
}
</style>