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中配置
// 配置路由 在第8行下面
var accountRouter = require('./routes/account'); //在第28行下配置
// 配置路由
var accountRouter = require('./routes/account');
在前端accountadd.vue文件中
<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>
最终效果图

vue+node+elementUI实现注册功能的更多相关文章
- vue+node+elementUI实现分页功能
第1===>收集当前页码 和 每页显示条数 第2==>发送ajax请求页码 和 每页显示条数发送给后端 第3===>接收后端返回的数据总条数 total 和 当前页码的数据 data ...
- vue+node+mongodb实现的功能
用vue+node +mongodb实现前后台交互的页面代码,已经上传到github上, 地址是: https://github.com/GainLoss/vue-node-mongodb https ...
- vue koa2 mongodb 从零开始做个人博客(一) 登录注册功能前端部分
0.效果演示 插入视频插不进来,就很烦.可以出门右拐去优酷看下(点我!). 1.准备工作 1.1前端框架 前端使用了基于vue.js的nuxt.js.为什么使用nuxt.js? 首先我做的是博客的项目 ...
- vue+node.js+webpack开发微信公众号功能填坑——v -for循环
页面整体框架实现,实现小功能,循环出数据,整体代码是上一篇 vue+node.js+webpack开发微信公众号功能填坑--组件按需引入 修改部门代码 app.vue <yd-flexbox&g ...
- Node.js基础学习四之注册功能
前言:在Node.js学习(二)和(三)中介绍了如何在Node.js 中获取登录的用户名和密码与数据库进行验证并返回数据给客户端 需求:实现注册功能 为了区分登录和注册是两个不同的请求,在端口后面加上 ...
- Node.js实现登录注册功能
使用Node.js + Navicat for mysql实现的登录注册功能 数据库中存在有”user_id,user_name,password,user_img,user_number“字段,其中 ...
- vue+elementUI完成注册及登陆
1. vue怎么引入和配置使用element-ui框架 1.1 使用vue-cli脚手架工具创建一个vue项目 vue init webpack pro01 1.2 npm安装elementUI cd ...
- 一个 Vue + Node + MongoDB 博客系统
源码 耗时半载(半个月)的大项目终于完成了.这是一个博客系统,使用 Vue 做前端框架,Node + express 做后端,数据库使用的是 MongoDB.实现了用户注册.用户登录.博客管理(文章的 ...
- 一步步带你做vue后台管理框架(三)——登录功能
系列教程<一步步带你做vue后台管理框架>第三课 github地址:vue-framework-wz 线上体验地址:立即体验 <一步步带你做vue后台管理框架>第一课:介绍框架 ...
随机推荐
- 36-Docker 的两类存储资源
我们从本章开始讨论 Docker 存储. Docker 为容器提供了两种存放数据的资源: 由 storage driver 管理的镜像层和容器层. Data Volume. 我们会详细讨论它们的原理和 ...
- Centos下YUM源配置及相关问题应用篇
yum源配置在工作中会经常用到,特别是安装数据库时,一个个去安装依赖包比较耗时,直接配置好yum安装即可. (特别提醒:redhat有时会提示系统未注册,要求你注册,这个只对需要连接公网的yum源产生 ...
- Codeforces Global Round 5
传送门 A. Balanced Rating Changes 签到,分正负搞一下就行. B. Balanced Tunnel 题意: 给出\(n\)辆车的进洞顺序和出洞顺序,问有多少量车实现了洞中超车 ...
- WPF DataGrid 双击行 获得绑定数据
原文:WPF DataGrid 双击行 获得绑定数据 1)增加事件 2)增加对象获取 1)事件代码 Datagrid 增加事件 MouseDoubleClick="dataGrid_Mous ...
- servlet重点知识总结
Servlet Java Servlet 是运行在 Web 服务器或应用服务器上的程序,它是作为来自 Web 浏览器或其他 HTTP 客户端的请求和 HTTP 服务器上的数据库或应用程序之间的中间层. ...
- TensorFlow2.0教程-使用keras训练模型
1.一般的模型构造.训练.测试流程 # 模型构造 inputs = keras.Input(shape=(784,), name='mnist_input') h1 = layers.Dense(64 ...
- IT兄弟连 Java语法教程 数据类型3
字符型 在Java中,用于存储字符串的数据类型是char.然而,C/C++程序员要当心:Java中的char与C或C++中的char是不同的.在C/C++中,char的宽度是8位.而在Java中不是这 ...
- EJB组件开发实记(1)
安装JBoss或者Wildfly jdk1.4以上. Eclipes安装插件 JBoss Tools: eclipes Jee photon 在eclipes 内部点击 >>Windows ...
- JMS入门Demo
2.1点对点模式(邮箱) 点对点的模式主要建立在一个队列上面,当连接一个列队的时候,发送端不需要知道接收端是否正在接收,可以直接向ActiveMQ发送消息,发送的消息,将会先进入队列中,如果有接收端在 ...
- hive on spark 常用配置
常用设置 reset; set hive.execution.engine=spark; set hive.map.aggr = false; set hive.auto.convert.join = ...