建立个人网站并使用vue + node + mysql 实现登录注册修改密码等功能

1.购买服务器和域名

我的服务器和域名是都在腾讯云买的

服务器选的是轻量级的  Windows Server 的操作系统

2.备案

如果买的是国内的服务器需要备案,备案需要审核半个月左右,只要填写一些基本信息,然后等待管局审核通过即可

3.然后就可以通过远程桌面直接访问你的服务器了

 4.通过服务器管理功能进行一些简单的配置就可以使用了

5.然后使用iis配置服务器,不会iis的百度一下,在服务器安装mysql环境和可视化工具,还有node环境,然后就可以先在自己本机的电脑进行操作了,到时候代码写好了直接给复制到服务器上就可以了。

 6. 然后开始使用node js来搭建一个本地的服务,让前端来进行访问。

先来创建一个mysql.js的文件,来连接mysql数据库,直接上代码。

let mysql = require('mysql')
const db_config = {
    host: 'localhost',
    user: 'root',
    password: '122500',
    port: "3306",// 默认使用3306端口号
    database: 'biuder'
}
// 进行数据库交互
function conMysql(sql) {
    let connect = mysql.createConnection(db_config)
    // 开始链接数据库
    connect.connect(function (err) {
        if (err) {
            console.log(`mysql连接失败: ${err}!`)
        } else {
            console.log('mysql连接成功!')
        }
    })
    // 返回一个Promise承诺对象
    return new Promise((resolve, reject) => {
        connect.query(sql, (err, result) => {
            if (err) {
                reject(err)
            } else {
                // 此处需要将返回数据转为JSON再转回来,否则原数据不为任何数据类型
                let res = JSON.parse(JSON.stringify(result))
                closeMysql(connect)
                resolve(res)
            }
        });
    })
}
// 查询成功后关闭mysql
function closeMysql(connect) {
    connect.end((err) => {
        if (err) {
            console.log(`mysql关闭失败:${err}!`)
        } else {
            console.log('mysql关闭成功!')
        }
    })
}
// 导出方法
exports.conMysql = conMysql

 连接上mysql后创建一个app.js的文件

const express = require('express')
let { conMysql } = require('./mysql')
const app = express()
const cors = require('cors')
app.use(cors())
const bodyParser = require('body-parser')
const multiparty = require('connect-multiparty')
app.use(bodyParser.urlencoded({
    extended:true
}));
app.use(bodyParser.json())
app.use(multiparty())
// 启动
app.listen(4000, () => {
    console.log('express server running at http://127.0.0.1:' + 4000);
})
app.get('/getUser', (req, res) => {
    let sql = 'select * from biu'
    conMysql(sql).then(result => {
        res.send(result)
    })
})
class Response {
    constructor(isSucceed, msg, code, data) {
        this.isSucceed = isSucceed;
        this.msg = msg;
        this.code = code;
        this.data = data;
    }
}

然后在终端输入 node app.js 来测试是否连接成功

 具体这个文件夹目录如下

 需要的依赖

 登录功能

// 登录
app.post('/login', (req, res) => {
    let sql = `select * from biu where username = '${req.body.username}'`
    conMysql(sql).then(result => {
        if (result[0].password === req.body.password) {
            let response = new Response(true, '登录成功', 200, result)
            res.send(response)
        } else {
            let response = new Response(false, '用户名或密码错误', 400)
            res.status(400).send(response)
        }
    }).catch(err => {
        res.status(500).send('数据库连接出错!')
    })
})

注册功能

// 注册
app.post('/addUser', (req, res) => {
    let { username, password,biuname} = req.body
    let sql = `insert into biu(username, password,biuname) values('${username}', '${password}', '${biuname}')`
    conMysql(sql).then(result => {
        if(result.affectedRows == 1){
            let response = new Response(true, '注册成功', 200, result)
            res.send(response)
        } else{
            let response = new Response(false, '注册失败,请联系开发者解决')
            res.status(400).send(response)
        }
    }).catch(err => {
        res.status(500).send('数据库连接出错!')
    })
})

修改密码功能

// 修改密码
app.post('/updatePassword', (req, res) => {
    let sql = `update biu set password = '${req.body.newPassword}' where username = '${req.body.username}'`
    conMysql(sql).then(result => {
      if (result.affectedRows == 1) {
        let response = new Response(true, '修改成功', 200, result)
        res.send(response)
      } else {
        let response = new Response(false, '修改失败,请联系开发者解决')
        res.status(400).send(response)
      }
    }).catch(err => {
      res.status(500).send('数据库连接出错!')
    })
})

后台代码就完事了 ,接下来就是前端来进行请求数据

新建文件夹 创建vue项目

具体下载的依赖如下

main.js配置

import { createApp } from 'vue'
import './style.css'
import './phone.css'
import App from './App.vue'
import router from './router'
import ElementPlus from 'element-plus'
import * as ElementPlusIconsVue from '@element-plus/icons-vue'
import 'element-plus/dist/index.css'
import zhCn from 'element-plus/dist/locale/zh-cn.mjs'
import axios from 'axios';
import VueAxios from 'vue-axios';
import loginLogic from './js/loginlogic'
const app = createApp(App)
app.use(ElementPlus, {
    locale: zhCn,
})
for (const [key, component] of Object.entries(ElementPlusIconsVue)) {
    app.component(key, component)
}
app.use(router)
app.use(VueAxios, axios)

app.config.globalProperties.loginLogic = loginLogic;
// app.config.globalProperties.baseURL = "http://127.0.0.1:4000";      // 本地
app.config.globalProperties.baseURL = "http://你自己服务器的ip:服务器的端口";  // 服务器
const proxy = app.mount("#app")
export default proxy

登录页的关键代码

登录

login(){
      if (this.userLoginForm.verifyNum === "") {
        this.$message({
          message: '大哥填验证码啊😓',
          type: 'warning'
        });
      } else if (this.userLoginForm.verifyNum !== this.loginLogic.identCode) {
        this.$message.error('验证码填错了,重填去😓');
      } else {
        if(this.userLoginForm.username != '' && this.userLoginForm.password != ''){
          this.axios.post( this.baseURL + '/login', this.userLoginForm).then((res) => {
            this.$message({
              message: res.data.msg,
              type: 'success'
            });
            this.$router.push("/Index");
          })
          .catch((err) => {
            this.$message.error('账号或密码填错了,重填去😓');
          })
        } else {
          this.$message({
            message: '不填账号密码拿啥登录呢???😡😡',
            type: 'warning'
          });
        }
      }
    },

注册

 zclogin(){
      if(this.userLoginformzc.username != '' && this.userLoginformzc.password != '' &&                     
         this.userLoginformzc.biuname != '') {
          this.axios.post(this.baseURL + '/addUser', this.userLoginformzc).then(res => {
            this.$message({
              message: res.data.msg,
              type: 'success'
            });
            this.logindl = true
            this.loginzc = false
          })
          .catch((err) => {
            this.$message.error(err.response.data.msg);
          })
      }else{
        this.$message({
          message: '请输入账号密码昵称',
          type: 'warning'
        });
      }
    },

完成后的效果  做了部分机型的兼容处理

登录 pc端

手机端

 注册也用什么区别

登录成功后跳转至首页,目前这个东西只做到这里了,备案后一定要把备案号给整在网页底部,不然管局审核会给你把网站暂时封掉。开发完成后只要把你本地的ip换成你服务器的地址,然后将代码文件都放到服务器就可以了,还有mysql数据库的sql文件。

 

线上地址: 

咕噜咕噜http://biu.nn1225.club/

  • 2
    点赞
  • 22
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 2
    评论
Vue+Node+MySQL是一种常见的前后端开发组合。Vue是一种流行的JavaScript框架,用于构建用户界面。Node是一个基于Chrome V8引擎的JavaScript运行时环境,用于构建服务器端应用程序。MySQL是一种关系型数据库管理系统,用于存储和管理数据。 在这个组合中,Vue通常用于构建前端界面,包括用户界面和交互逻辑。Node用于构建后端服务器,处理前端发送的请求,并与数据库进行交互。MySQL用于存储和管理数据。 在你提供的引用中,\[1\]是一个Node服务器端的代码示例,用于处理添加用户的请求,并将用户信息插入到数据库中。\[2\]是一个MySQL连接示例,用于连接到数据库并暴露连接对象供接口操作数据库时使用。\[3\]提供了一个简单的目录结构示例,展示了如何在Node工程中进行数据库操作。 综上所述,Vue+Node+MySQL是一种常见的前后端开发组合,用于构建Web应用程序。Vue负责前端界面,Node负责后端服务器,MySQL负责数据存储和管理。通过这种组合,可以实现前后端的数据交互和处理。 #### 引用[.reference_title] - *1* [vue+node+mysql项目开发(包括部署到服务器)](https://blog.csdn.net/juvialoxer/article/details/114012421)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insert_down1,239^v3^insert_chatgpt"}} ] [.reference_item] - *2* *3* [vue+node+mysql+nginx+express完成云服务器前后端分离搭建](https://blog.csdn.net/weixin_43480867/article/details/103255855)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insert_down1,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

不愁发量

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值