vue+node+elementUI实现注册功能

本文涉及的产品
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
RDS MySQL Serverless 高可用系列,价值2615元额度,1个月
简介: vue+node+elementUI实现注册功能

后端代码 在后端的文件 routes文件夹下的connect.js文件中


// 引入mysql
const mysql = require('mysql');
// 创建连接对象
const connection = mysql.createConnection({
    host     : 'localhost', // 数据库地址
    user     : 'root', // 数据库用户名
    password : 'root', // 数据库密码
    // port: '3306',  // 端口号 默认就是3306 可以不写
    database: 'supersys'  // 数据库的名字
});
// 执行连接方法
connection.connect(() => {
    console.log('数据库连接成功!')
})
// 把连接对象暴露出去
module.exports = connection;


在后端account.js文件中


var express = require('express');
var router = express.Router();
// 引入连接数据库模块 路径是相对路径
const connection = require('./connect')
// 解决跨域问题
// 统一设置响应头 解决跨域问题
router.all('*', (req, res, next) => {
    // 设置响应头 解决跨域(目前最主流的方式)
    res.header('Access-Control-Allow-Origin', '*');
    next();
})
/*
   this.axios.post('http://127.0.0.1:666/account/accountadd', qs.stringify(params))
   accountadd 与前端发送的最末尾的那个是相同的哦   account与后端在app.js分配中的路由是相同的哦
   在app.js中分配的路由
   // 配置路由10行   var accountRouter = require('./routes/account');
   // 配置路由10行   app.use('/account', accountRouter);
*/
router.post('/accountadd', function (req, res, next) {
    // res.send("haha");  //测试路由是否是通的
    // 接收前端发送的添加账号的数据
    let { username, password, usergroup } = req.body;
    console.log(username, password, usergroup);
  // 构造sql语句  // 把数据存入数据库
  const sqlStr = `insert into account(username, password, usergroup) values('${username}', '${password}', '${usergroup}')`;
  connection.query(sqlStr,(err,data)=>{
    if(err) throw err; //err的有值时,说明有错,此时抛出错误
    if (data.affectedRows>0){
      res.send({ "error_code":0, "reason": "插入数据成功" });
    }else{
      // 失败:返回给前端失败的数据对象
      res.send({ "error_code":1, "reason": "插入数据失败" });
    }
  })
});


在后盾app.js中配置


<template>
      <div class="account-add">
        <!-- 面板组件 -->
       <el-card class="box-card">
            <div slot="header" class="clearfix">
                <span>添加账号</span>
            </div>
            <div class="text item">
                <!-- 添加账号表单 -->
                <el-form size="mini" :model="accountAddForm" status-icon :rules="rules" ref="accountAddForm" label-width="100px" class="demo-ruleForm">
                    <!-- 账号 -->
                    <el-form-item label="账号" prop="username">
                        <el-input type="text" v-model="accountAddForm.username" autocomplete="off"></el-input>
                    </el-form-item>
                    <!-- 密码 -->
                    <el-form-item label="密码" prop="password">
                        <el-input type="text" v-model="accountAddForm.password" autocomplete="off"></el-input>
                    </el-form-item>
                    <!-- 确认密码 -->
                    <el-form-item label="确认密码" prop="checkPwd">
                        <el-input type="text" v-model="accountAddForm.checkPwd" autocomplete="off"></el-input>
                    </el-form-item>
                    <!-- 选中用户组 -->
                    <el-form-item label="选择用户组" prop="userGroup">
                        <el-select v-model="accountAddForm.userGroup" placeholder="请选择用户组">
                        <el-option label="普通用户" value="普通用户"></el-option>
                        <el-option label="高级管理员" value="高级管理员"></el-option>
                        </el-select>
                    </el-form-item>
                    <!-- 登录按钮&重置按钮 -->
                    <el-form-item>
                        <el-button type="primary" @click="submitForm('accountAddForm')">添加</el-button>
                        <el-button @click="resetForm('accountAddForm')">重置</el-button>
                    </el-form-item>
                </el-form>
            </div>
        </el-card>
    </div>
</template>
<script>
// 引入qs库
import qs from 'qs';
    export default {
        data() {
    // 自定义密码的验证
    const pass = (rule, value, callback) => {
      if (value === "") {
        callback(new Error("请输入密码"));
      } else if (value.length < 3 || value.length > 6) {
        callback(new Error("长度在 3 - 6 位"));
      } else {
        if (this.accountAddForm.checkPwd !== "") {
          this.$refs.accountAddForm.validateField("checkPwd");
        }
        callback();
      }
    };
    // 自定义确认密码的验证
    const checkPass = (rule, value, callback) => {
      if (value === "") {
        callback(new Error("请再次输入密码"));
      } else if (value !== this.accountAddForm.password) {
        callback(new Error("两次密码不一致"));
      } else {
        callback();
      }
    };
    return {
      // 添加账号表单数据
      accountAddForm: {
        username: "",
        password: "",
        checkPwd: "",
        userGroup: ""
      },
      // 验证规则
      rules: {
        // 账号
        username: [
          { required: true, message: "请输入账号", trigger: "blur" },
          { min: 3, max: 6, message: "长度在 3 - 6 位", trigger: "blur" }
        ],
        // 密码
        password: [{ required: true, validator: pass, trigger: "blur" }],
        // 确认密码
        checkPwd: [{ required: true, validator: checkPass, trigger: "blur" }],
        // 用户组
        userGroup: [
            { required: true, message: '请选择用户组', trigger: 'change' }
        ]
      }
    };
  },
  methods: {
    // 点击登录按钮 触发这个函数
    submitForm(formName) {
      // 获取表单组件 调用验证方法
      this.$refs[formName].validate(valid => {
        // 如果所有验证通过 valid就是true
        if (valid) {
          // 收集用户输入的所有账号数据
          let params = {
            username: this.accountAddForm.username,
            password: this.accountAddForm.password,
            usergroup: this.accountAddForm.userGroup
          };
          // 使用axios发送数据给后端
          this.axios.post('http://127.0.0.1:666/account/accountadd', qs.stringify(params))
            .then(response => {
              // 接收后端返回的错误码 和 提示信息  error_code是错误玛   reason是提示的信息
              let { error_code,  reason } = response.data;
              // 根据后端响应的数据判断
              if (error_code === 0) {
               // 弹出成功的提示  下面这3行代码时eleUI自带的样似  它表示弹出的是成功的信息哦
                this.$message({
                  type: 'success',
                  message: reason
                });
                // 跳转到账号管理列表
                this.$router.push('/accountmanage')
              } else {
                // 弹出失败的提示  这也是eleUI自带的样似哦
                this.$message.error(reason);
              }
            })
            .catch(err => {
              console.log(err)
            })
        } else {
          // 否则就是false
          return false;
        }
      });
    },
    // 点击重置按钮 触发这个函数
    resetForm(formName) {
      // this.$refs.loginForm.resetFields() 获取整个表单组件 调用重置方法
      this.$refs[formName].resetFields();
    }
  }
}
</script>
<style lang="less">
.account-add {
  .el-card {
    .el-card__header {
      text-align: left;
      font-size: 20px;
      font-weight: 600;
      background-color: #f1f1f1;
    }
    .el-card__body {
        text-align: left;
      .el-form {
        width: 290px;
        .el-form-item {
            margin-bottom: 24px;
        }
      }
    }
  }
}
// 控制头部的标题部分
.el-main{
  line-height: 25px;
}
</style>


最终效果图


1425695-20190528004347497-1260449570.jpg


相关实践学习
基于CentOS快速搭建LAMP环境
本教程介绍如何搭建LAMP环境,其中LAMP分别代表Linux、Apache、MySQL和PHP。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助 &nbsp; &nbsp; 相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
相关文章
|
1天前
|
JSON 数据可视化 数据库
vue3+threejs+koa可视化项目——实现登录注册(第三步)
vue3+threejs+koa可视化项目——实现登录注册(第三步)
42 5
|
1天前
|
JavaScript
|
1天前
|
资源调度
Vue3导入表格功能
Vue3导入表格功能
|
1天前
|
JavaScript 前端开发
vue制作拍照、录像功能
vue制作拍照、录像功能
11 0
|
1天前
|
JavaScript 开发者 UED
Vue入门到关门之第三方框架elementui
ElementUI是一个基于Vue.js的组件库,包含丰富的UI组件如按钮、表格,强调易用性、响应式设计和可自定义主题。适用于快速构建现代化Web应用。官网:[Element.eleme.cn](https://element.eleme.cn/#/zh-CN)。安装使用时,需在项目中导入ElementUI和其样式文件。
16 0
|
1天前
|
JavaScript
vue启动报错解决Syntax Error: Error: Node Sass version 7.0.1 is incompatible with ^4.0.0.
vue启动报错解决Syntax Error: Error: Node Sass version 7.0.1 is incompatible with ^4.0.0.
|
1天前
|
JavaScript
Vue实战-将通用组件注册为全局组件
Vue实战-将通用组件注册为全局组件
7 0
|
1天前
|
JavaScript
vue3表格编辑(数据回显)和删除功能实现
vue3表格编辑(数据回显)和删除功能实现
12 1
|
1天前
|
JavaScript 前端开发 IDE
vue3基础: 组件注册
vue3基础: 组件注册
12 0
|
1天前
|
存储 JavaScript 前端开发
使用vue实现一个添加和编辑的功能
使用vue实现一个添加和编辑的功能
13 1