深入解析与实践:基于VUE-cli的Element-UI应用指南

一、前言

​ 本文介绍 Element-UI快速入门,基于vue-cli构建的基础项目。关于 vue-cli 构建项目的详细流程,可参考博文:
使用vue脚手架构建项目

二、简介

element-ui 是饿了么前端出品的基于 Vue.js的 后台组件库,方便程序员进行页面快速布局和构建。

Element-UI官方站点: https://element.eleme.cn/#/zh-CN


三、Element-UI使用

1、命令行方式安装库

  1. 创建一个新项目 element-ui-project

    在这里插入图片描述

  2. 当前项目下打开终端, 安装依赖包 ,执行命令npm i element-ui -s,等待安装完成后,打开package.json,可以看到

    在这里插入图片描述

  3. 打开 main.js , 导入Element-UI 相关资源.

    import Vue from 'vue'
    import App from './App.vue'
    import router from './router'
    
    Vue.config.productionTip = false
    
    //导入组件库
    import ElementUI from 'element-ui'
    
    //导入组件库相关样式
    import "element-ui/lib/theme-chalk/index.css"
    
    //配置vue插件,将EI安装到vue上
    Vue.use(ElementUI)
    
    new Vue({
         
      router,
      render: h => h(App)
    }).$mount('#app')
    
    
  4. 测试

    • 打开Element-UI官网,找到Element-UI的样式按钮

      在这里插入图片描述

    • 复制到app.vue的template下

      <template>
        <div id="app">
          <el-row>
            <el-button>默认按钮</el-button>
            <el-button type="primary">主要按钮</el-button>
            <el-button type="success">成功按钮</el-button>
            <el-button type="info">信息按钮</el-button>
            <el-button type="warning">警告按钮</el-button>
            <el-button type="danger">危险按钮</el-button>
          </el-row> 
      
          <nav>
            <router-link to="/">Home</router-link> |
            <router-link to="/about">About</router-link>
          </nav>
          <router-view/>
        </div>
      </template>
      
      <style>
      #app {
        font-family: Avenir, Helvetica, Arial, sans-serif;
        -webkit-font-smoothing: antialiased;
        -moz-osx-font-smoothing: grayscale;
        text-align: center;
        color: #2c3e50;
      }
      
      nav {
        padding: 30px;
      }
      
      nav a {
        font-weight: bold;
        color: #2c3e50;
      }
      
      nav a.router-link-exact-active {
        color: #42b983;
      }
      </style>
      
      
    • 打开页面,测试

      在这里插入图片描述

2、工程改造

  1. 删除components 目录下的 HelloWord.vue组件

  2. 删除App.vue中的部分内容,修改为如下

    <template>
      <div id="app">
      </div>
    </template>
    
    <style>
    </style>
    
    
  3. 删除router文件下的路由文件 index.js部分内容,修改为如下

    import Vue from 'vue'
    import VueRouter from 'vue-router'
    
    Vue.use(VueRouter)
    
    const routes = []
    
    const router = new VueRouter({
         
     routes
    })
    
    export default router
    
    
  4. 删除views目录下的 About.vue 与 Home.vue

  5. 最终呈现为空界面

    在这里插入图片描述

3、安装axios

  1. 终端停止项目,使用 ctrl + c,出现下面提示:

    在这里插入图片描述

    输入y,回车

  2. npm安装:使用npm下载axios包,终端输入指令npm i axios

    在这里插入图片描述

  3. 在main.js文件中导入axios 相关资源

    import Vue from 'vue'
    import App from './App.vue'
    import router from './router'
    
    Vue.config.productionTip = false
    
    //导入组件库
    import ElementUI from 'element-ui'
    
    //导入组件库相关样式
    import "element-ui/lib/theme-chalk/index.css"
    
    //引入axios
    import axios from 'axios'
    
    //配置vue插件,将EI安装到vue上
    Vue.use(ElementUI)
    
    //vue使用axios,需要配置属性
    Vue.prototype.axios = axios;
    
    new Vue({
         
      router,
      render: h => h(App)
    }).$mount('#app')
    
    

四、简单案例

1、需求

通过Dialog制作一个登陆弹窗,包含:

  • 输入框:用户名、密码
  • 登录按钮

如下图所示:

在这里插入图片描述

2、代码演示

  1. Dialog对话框组件

    在官网找到对应的 组件位置

    在这里插入图片描述

  2. 创建Login.vue组件

    • 在components下创建Login.vue

    • 添加三大模块(template、script、style),并将官网组件的代码复制进来,修改为自己想要的样式

    <template>
    <el-dialog title="登录" :show-close="false" :visible.sync="dialogFormVisible">
        <el-form :model="form">
          <el-form-item label="用户名" :label-width="formLabelWidth">
            <el-input autocomplete="off"></el-input>
          </el-form-item>
          <el-form-item label="密码" :label-width="formLabelWidth">
            <el-input autocomplete="off"></el-input>
          </el-form-item>
        </el-form>
        <div slot="footer" class="dialog-footer">
          <el-button type="primary" @click="dialogFormVisible = false">登录</el-button>
        </div>
      </el-dialog>
    </template>
    
      
      <script>
        export default {
          data() {
            return {
              dialogFormVisible: true,
              formLabelWidth: '120px'
            };
          }
        };
      </script>
    
      <style scoped></style>
    
  3. 配置路由,修改index.js

    import Vue from 'vue'
    import VueRouter from 'vue-router'
    
    import Login from "@/components/Login.vue"
    
    Vue.use(VueRouter)
    
    const routes = [
      //访问 /,也跳转到login
      {
         
        path:'/',
        redirect: 'login' //重定向login
      },
      //登录
      {
         
        path:'/login',
        name:'login',
        component:Login
      }
    ]
    
    const router = new VueRouter({
         
      routes
    })
    
    export default router
    
    
  4. 修改App.vue

    <template>
     <div id="app">
       <!-- router-view 的作用是根据访问的路径,渲染路径匹配到的视图组件 -->
       <router-view></router-view>
     </div>
    </template>
    
    <style>
    </style>
    
    
  5. 编写登录功能,修改Login.vue

    • 双向数据绑定

    • data中定义数据,修改script部分

        <script>
          export default {
            data() {
              return {
                dialogFormVisible: true,
                formLabelWidth: '120px',
                user:{username:"", password:""},
              };
            }
          };
        </script>
      
    • v-model绑定视图和模型,修改template部分,并把登录按钮的点击事件修改为login方法

      <template>
      <el-dialog title="登录" :show-close="false" :visible.sync="dialogFormVisible">
          <el-form :model="form">
            <el-form-item label="用户名" v-model="user.username" :label-width="formLabelWidth">
              <el-input autocomplete="off"></el-input>
            </el-form-item>
            <el-form-item label="密码" v-model="user.password" :label-width="formLabelWidth">
              <el-input autocomplete="off"></el-input>
            </el-form-item>
          </el-form>
          <div slot="footer" class="dialog-footer">
            <el-button type="primary" @click="login">登录</el-button>
          </div>
        </el-dialog>
      </template>
      
    • 编写login方法,使用axios的get发送请求

      • 找到axios对应的方法部分

        在这里插入图片描述

      • 编写代码

  <script>
  export default {
   
    data() {
   
      return {
   
        dialogFormVisible: true,
        formLabelWidth: "120px",
        user: {
    username: "", password: "" },
      };
    },
    methods: {
   
      //登录的方法
      login() {
   
        //定义常量保存url
        const url = "";
  
        //发送请求
        this.axios.get(url, {
   
          //携带的参数
          params: {
   
            username: this.user.username,
            password: this.user.password,
          },
        })
          .then((resp) => {
   
            console.log(resp);
            alert("登录成功");
            //成功 关闭对话框
            this.dialogFormVisible = false;
  
            //进行页面跳转,跳转到首页,在前端进行页面跳转 必须使用路由.
            this.$router.push('index'); 
          })
          .catch((error) => {
   
            //登录失败 提供消息提示
            this.$message.error("对不起!登录失败!");
          });
      },
    },
  };
  </script>

3、使用postman搭建mockserver

  1. 创建mockserver

    在这里插入图片描述

  2. 创建伪服务

    在这里插入图片描述
    点击创建,即可完成创建过程。

  3. 找到自动生成的url复制

在这里插入图片描述

  1. 修改上面组件中请求的url

    <template>
        <el-dialog
          :show-close="false"
          title="用户登录"
          :visible.sync="dialogFormVisible"
        >
          <el-form>
            <el-form-item label="用户名" :label-width="formLabelWidth">
              <el-input v-model="user.username" autocomplete="off"></el-input>
            </el-form-item>
            <el-form-item label="密码" :label-width="formLabelWidth">
              <el-input v-model="user.password" autocomplete="off"></el-input>
            </el-form-item>
          </el-form>
      
          <div slot="footer" class="dialog-footer">
            <el-button type="primary" @click="login">登 录</el-button>
          </div>
        </el-dialog>
      </template>
      
      <script>
      export default {
        data() {
          return {
            dialogFormVisible: true,
            formLabelWidth: "120px",
            user: { username: "", password: "" },
          };
        },
        methods: {
          //登录的方法
          login() {
            //定义常量保存url
            const url = "https://b8f48957-0c66-4905-89b8-69e270594660.mock.pstmn.io/login";
      
            //发送请求
            this.axios(url, {
              //携带的参数
              params: {
                username: this.user.username,
                password: this.user.password,
              },
            })
              .then((resp) => {
                console.log(resp);
                alert("登录成功");
                //成功 关闭对话框
                this.dialogFormVisible = false;
      
                //进行页面跳转,跳转到首页,在前端进行页面跳转 必须使用路由.
                this.$router.push('index'); 
              })
              .catch((error) => {
                //登录失败 提供消息提示
                this.$message.error("对不起!登录失败!");
              });
          },
        },
      };
      </script>
      
      <style scoped></style>
    
    

    注意:这里需要修改为你自己mockserver生成的url

4、测试

在这里插入图片描述

相关推荐

最近更新

  1. TCP协议是安全的吗?

    2024-02-05 01:12:01       18 阅读
  2. 阿里云服务器执行yum,一直下载docker-ce-stable失败

    2024-02-05 01:12:01       19 阅读
  3. 【Python教程】压缩PDF文件大小

    2024-02-05 01:12:01       19 阅读
  4. 通过文章id递归查询所有评论(xml)

    2024-02-05 01:12:01       20 阅读

热门阅读

  1. h.264与h.263的区别

    2024-02-05 01:12:01       32 阅读
  2. C# 更改系统的屏保设置

    2024-02-05 01:12:01       32 阅读
  3. CUDA | Writing and Compiling a CUDA Code

    2024-02-05 01:12:01       28 阅读
  4. 解决pycharm第三方包无法引用的问题

    2024-02-05 01:12:01       34 阅读
  5. js中常用数组去重方法

    2024-02-05 01:12:01       34 阅读
  6. Python这些模块,你了解吗?

    2024-02-05 01:12:01       36 阅读