Vue 整合 element-ui

Posted 坨之歌

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Vue 整合 element-ui相关的知识,希望对你有一定的参考价值。

element-ui 安装

npm i element-ui -S

安装 css 之类的相关的依赖

npm install  sass-loader@7.3.1 node-sass --save-dev 

引入使用

标红色的部分是引入的代码. 在项目的 main.js 里面

// The Vue build version to load with the `import` command
// (runtime-only or standalone) has been set in webpack.base.conf with an alias.
import Vue from \'vue\'
import App from \'./App\'
import router from \'./router\'
import ElementUI from \'element-ui\'
import \'element-ui/lib/theme-chalk/index.css\'

Vue.use(ElementUI)
Vue.config.productionTip = false

/* eslint-disable no-new */
new Vue({
  el: \'#app\',
  router,
  components: {App},
  template: \'<App/>\',
  render: h => h(App)
})

简单的登录页面实现以及校验功能

主要是使用 element-ui 的form 组件功能的验证以及一些消息提示

<template>
  <el-form ref="form" :model="form" :rules="rules" class="login-box">
    <h3 class="login-title">欢迎登录</h3>
    <el-form-item label="账号" prop="name">
      <el-input type="text" aria-placeholder="请输入用户名" v-model="form.name"></el-input>
    </el-form-item>
    <el-form-item label="密码" prop="password">
      <el-input type="password" aria-placeholder="请输入密码" v-model="form.password"></el-input>
    </el-form-item>
    <el-form-item>
      <el-button type="primary" @click="submitForm(\'form\')">登录</el-button>
    </el-form-item>

  </el-form>
</template>

<script>
  export default {
    name: "Login",
    data() {
      return {
        form: {
          name: "",
          password: ""
        },
        rules: {
          name: [
            {required: true, message: \'请输入用户名称\', trigger: \'blur\'},
          ],
          password: [
            {required: true, message: \'请输入密码\', trigger: \'blur\'},
          ]
        }
      }
    },
    methods: {
      submitForm(formName) {
        this.$refs[formName].validate((valid) => {
          if (valid) {
            this.$router.push("/main")
          } else {
            this.$message({
              message: \'用户名或者密码未填\',
              type: \'warning\'
            });
            return false;
          }
        });
      },
    }
  }
</script>

<style scoped>
  .login-box {
    width: 350px;
    margin: 150px auto;
    border: 1px solid #DCDFE6;
    padding: 20px;
    border-radius: 5px;
    box-shadow: 0 0 30px #DCDFE6;
  }

  .login-title {
    text-align: center;
  }

</style>

展示效果

校验失败的提示效果, 成功后就自动跳转到 /main 页面, 即首页页面的组件

首页简单实现布局以及相关子路由 

布局

基于官方的示例, 实现一个简单的左侧导航栏, 右侧内容展示, 头部展示一个title 的一个布局

相关代码

main.vue 

main 组件还是用 element-ui 的相关方法来拼

<template>
  <div>
    <el-container>
      <el-aside width="200px">
        <el-menu :default-openeds="[\'1\']">
          <el-submenu index="1">
            <template slot="title"><i class="el-icon-message"></i>羊驼产品</template>
            <el-menu-item-group>
              <el-menu-item index="1-1">
                <router-link to="/member/type">羊驼型号</router-link>
              </el-menu-item>
              <el-menu-item index="1-2">

                <router-link to="/member/list">羊驼列表</router-link>
              </el-menu-item>

            </el-menu-item-group>
          </el-submenu>
          <el-submenu index="2">
            <template slot="title"><i class="el-icon-message"></i>羊驼园区</template>
            <el-menu-item-group>
              <el-menu-item index="2-1">园区分布</el-menu-item>
              <el-menu-item index="2-2">园区列表</el-menu-item>
            </el-menu-item-group>
          </el-submenu>
        </el-menu>

      </el-aside>
      <el-container>
        <el-header style="text-align: right; font-size: 12px">
          <el-dropdown>
            <i class="el-icon-setting" style="margin-right: 15px"></i>
            <el-dropdown-menu slot="dropdown">
              <el-dropdown-item>用户中心</el-dropdown-item>
              <el-dropdown-item>退出登录</el-dropdown-item>
            </el-dropdown-menu>
          </el-dropdown>
          <span>admin</span>
        </el-header>

        <el-main>
          <router-view/>
        </el-main>
      </el-container>
    </el-container>
  </div>


</template>

<script>
  export default {
    name: "Main"
  }
</script>

<style scoped>
  .el-header {
    background-color: #B3C0D1;
    color: #333;
    line-height: 60px;
  }

  .el-aside {
    color: #333;
  }
</style>

 index.js 的路由

/main 下的子路由用   children  来作为关键字传入

import Vue from \'vue\'
import Router from \'vue-router\'
import Login from "../views/Login";
import Main from "../views/Main";
import MemberList from "../views/Member/MemberList";
import MemberType from "../views/Member/MemberType";


Vue.use(Router)

export default new Router({
  routes: [
    {
      path: \'/login\',
      name: \'Login\',
      component: Login
    },
    {
      path: \'/main\',
      name: \'Main\',
      component: Main,
      children: [
        {
          path: \'/member/list\',
          name: \'MemberList\',
          component: MemberList
        },
        {
          path: \'/member/type\',
          name: \'MemberType\',
          component: MemberType
        }
      ]
    },

  ]
})

 

 

 

 

 

 

 

 

--------------------orz 前方施工

 

以上是关于Vue 整合 element-ui的主要内容,如果未能解决你的问题,请参考以下文章

electron-vue + element-ui构建桌面应用

改造vue-quill-editor: 结合element-ui上传图片到服务器

spring boot + vue + element-ui全栈开发入门——集成element-ui

《分布式微服务电商》专题(十三)-电商项目前端Vue整合ElementUI快速开发

vue系列---vue项目如何使用element-ui?

vue增强第三方UI库(element-ui)