Vue2 + ElementUI + axios + VueRouter入门

news/2024/10/3 11:04:38 标签: elementui, 前端, javascript

之前没有pc端开发基础,工作需要使用若依框架进行了一年的前端开发.最近看到一个视频框架一步步集成,感觉颇受启发,在此记录一下学习心得。视频链接:vue2+element ui 快速入门

环境搭建和依赖安装

  1. 安装nodejs
  2. 安装Vue Cli
  3. 使用vue create project 创建vue2工程
  4. 修改C:\Users\guchu.vuerc packageManager 为 npm
  5. 使用npm install axios 安装网络请求框架
  6. npm install vue-router@3(注意:vue2 对应 vue-router@3, vue3对应vue-router@4)
  7. npm i element-ui -S 安装elementUI框架

开发过程

静态登录页面开发

elementuiVue_13">1. 将elementui注入Vue

修改main.js 添加一下内容:

import ElementUi from 'element-ui'
import 'element-ui/lib/theme-chalk/index.css'; 
Vue.use(ElementUi) 

2. 编写静态页面:

新增src/pages/login/index.vue文件

<template>
  <div class="login">
    <el-form label-width="80px" ref="formRef" :model="form" :rules="rules">

      <el-form-item label="用户名" prop="username">
        <el-input v-model="form.username" placeholder="请输入用户名"/>
      </el-form-item>

      <el-form-item label="密码" prop="password">
        <el-input v-model="form.password" placeholder="请输入密码" type="password"/>
      </el-form-item>
      <el-form-item>
        <el-button type="primary" @click="login">登录</el-button>
      </el-form-item>

    </el-form>
  </div>
</template>
<script>
export default {
  name: 'Login',
  data() {
    return {
      form: {
        username: '',
        password: ''
      },
      rules: {
        username: [
          {required: true, message: '用户名不能为空', trigger: 'blur'}
        ],
        password: [
          {required: true, message: '密码不能为空', trigger: 'blur'}
        ]
      }
    }
  },
  methods: {
    login() {
      this.$refs.formRef.validate(valid => {
        if (valid) {
          this.$message({type: 'success', message: '验证通过'})
        } else {
          this.$message({type: 'error', message: '验证失败'})
        }
      })
    }
  }
}
</script>
<style scoped>
.login {
  position: absolute;
  width: 500px;
  height: 500px;
  top: 50%;
  left: 50%;
  transform: translate(-50%, -50%);
}

</style>

知识点说明:

  1. 元素居中
.login {
  position: absolute;
  width: 500px;
  height: 500px;
  top: 50%;
  left: 50%;
  transform: translate(-50%, -50%);
}

top\left从中心点开始布局,然后向左上角移动50%。
2. 表单和数据的双向绑定:model = form
3. 指定表单验证规则 :rules=“rules” prop具体校验字段 this.$refs.formRef.validate进行所有字段校验。

3.路由设置

  1. 新建src/router/index.js
import Vue from 'vue'
import VueRouter from "vue-router"
import Login from '../pages/login'

Vue.use(VueRouter)
const routes = [{
    path: "/login",
    component: Login
}]
const router = new VueRouter({
    routes,
    mode: 'hash'
})
export default router;

  1. main.js进行挂载
import router from './router';
new Vue({
    router,
    render: h => h(App),
}).$mount('#app')
  1. 添加router-view 展示路径对应的组件
<template>
  <div id="app">
    <router-view/>
    <!--    <img alt="Vue logo" src="./assets/logo.png">-->
    <!--    <HelloWorld msg="Welcome to Your Vue.js App"/>-->
  </div>
</template>

http://localhost:8080/#/login

添加网络请求

  1. 拦截网络请求,添加校验头
    新建src/utils/request.js
import axios from 'axios'

const request = axios.create({
    timeout: 5000
})
request.interceptors.request.use(
    config => {
        const token = localStorage.getItem('token')
        if (token) {
            config.headers["authorization"] = token;
        }
        return config;
    }
)
export default request;

  1. 创建login具体网络请求
    新建src/api/login.js
import request from "@/utils/request";

const login = (admin) => {
    return request({
        url: '/dev-api/auth/login',
        method: 'post',
        data: admin
    })
}
export default {
    login
};
  1. vue.config.js 设置代理地址
const {defineConfig} = require('@vue/cli-service')
module.exports = defineConfig({
    lintOnSave: false,
    transpileDependencies: true,
    devServer: {
        proxy: {
            '/dev-api': {
                 target: `http://localhost:28080`,
                changeOrigin: true,
                pathRewrite: {
                    ['^' + process.env.VUE_APP_BASE_API]: '/dev-api'
                }
            }
        },

    }
})

  1. 对网络接口进行集中管理
    新增 src/api/index.js
import login from './login'

export default {
    login,
}

  1. 将api挂在Vue简化import
import api from './api';
Vue.prototype.$api = api;
  1. login页面进行调用
          this.$api.login.login(this.form).then(response => {
            const {code, msg, data} = response.data;
            if (200 === code) {
              this.$message({
                type: 'success',
                message: '登录成功'
              })
              localStorage.setItem('token', data.access_token);
              this.$router.push("/")
            } else {
              this.$message({type: 'error', message: msg})
            }
          })

其他

  1. 编译运行ESLint 报错
    /.eslintrc.js 添加一下内容(没有进行新建)
module.exports = {
    rules: {
        "*": "off"
    },
};

/vue.config.js 添加 lintOnSave:false

const {defineConfig} = require('@vue/cli-service')
module.exports = defineConfig({
    transpileDependencies: true,
    lintOnSave: false,
})


http://www.niftyadmin.cn/n/5688247.html

相关文章

【Kubernetes】常见面试题汇总(五十二)

目录 116. K8S 集群服务暴露失败&#xff1f; 117.外网无法访问 K8S 集群提供的服务&#xff1f; 特别说明&#xff1a; 题目 1-68 属于【Kubernetes】的常规概念题&#xff0c;即 “ 汇总&#xff08;一&#xff09;~&#xff08;二十二&#xff09;” 。 题目 69-…

php函数积累

对称函数 isset 判断数组arr中是否存在键key 返回值true/false isset(name,$arr) unset 删除数组中的键 需存在key不然抛出异常 unset($arr[name]) json_encode 数据转json格式 json_encode($arr) 一般形式 指定字符编码形式 json_decode json格式转原有数据格式 json_d…

IM项目------网关子服务

提示&#xff1a;文章写完后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 文章目录 前言所需模块长连接管理模块新增连接管理通过用户ID获取长连接通过长连接获取用户ID和会话ID删除连接管理 服务器搭建业务代码编写 前言 入口网关子服务主要负责三…

薄膜凸起和开裂是同一种应力导致的吗?

知识星球里的学员问&#xff1a;我们产线上薄膜出了质量问题&#xff0c;都一概归结为应力过大。麻烦讲讲应力的种类&#xff0c;以及不同种类的应力会造成哪些薄膜问题&#xff1f; 内应力的种类&#xff1f; 内应力的分类很多&#xff0c;如果我们按作用的效果来分&#xff…

CSP-S 2022 T1假期计划

CSP-S 2022 T1假期计划 先思考暴力做法&#xff0c;题目需要找到四个不相同的景点&#xff0c;那我们就枚举这四个景点&#xff0c;判断它们之间的距离是否符合条件&#xff0c;条件是任意两个点之间的距离是否大于 k k k&#xff0c;所以我们需要求出任意两点之间的距离。常用…

01_SQLite

文章目录 ** SQLite 存储各类和数据类型 **** SQLite 五种亲缘类型** SQLite 创建数据表删除数据表插入数据信息从数据表中获取数据&#xff0c;以结果表的形式返回数据&#xff08;结果集&#xff09;updatedistinctorder bygroup byhaving触发器删除一个触发器&#xff08;tr…

Pikichu-xss实验案例-通过xss获取cookie

原理图&#xff1a; pikachu提供了一个pkxss后台&#xff1b; 该后台可以把获得的cookie信息显示出来&#xff1b; 查看后端代码cookie.php&#xff1a;就是获取cookie信息&#xff0c;保存起来&#xff0c;然后重定向跳转到目标页面&#xff1b;修改最后从定向的ip&#xff0…

【React】入门Day02 —— 表单控制、组件通信、副作用管理与自定义 Hook

本文主要介绍了 React 的相关知识&#xff0c;包括表单控制、组件通信、副作用管理、自定义 Hook 以及 Hooks 使用规则等内容&#xff0c;并通过一些案例进行了说明&#xff0c;以下是详细总结&#xff1a; 1. React 表单控制 受控绑定 import React, { useState } from reac…