我是靠谱客的博主 自由自行车,最近开发中收集的这篇文章主要介绍完整流程!用node.js和Vue.cli配合,布置服务器,并从数据库取数据传送到前端。,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

最近自己想设计一个网站,之前一直都是写前端,今天用到后端,有个简单的增删查减接口,记录一下。

首先通过脚手架生成了一个初始项目。结构如下:

 config这个文件是我自己建的。在这个文件夹下面建三个文件名分别为:

                        ​​​​​​​        ​​​​​​​        ​​​​​​​        ​​​​​​​        

 然后在文件下安装依赖

npm install cors
npm i express
npm install mysql

安装完之后在三个文件下贴上我的代码(里面有注释) 

// server.js创建服务器并将请求的路由拦截传回数据

//server.js


/* // express使用cors跨域
// CORS是一个W3C标准,全称是"跨域资源共享"(Cross-origin resource sharing)。它允许浏览器向跨源服务器,发出XMLHttpRequest请求,从而克服了AJAX只能同源使用的限制。只要服务器实现了CORS接口,就可以跨源通信。
 */

//1.导入express包
const express = require("express");
const cors = require('cors');
const { findUser, findById, saveUser, deleteById } = require('./config/users')

//2.创建web服务器
const app = express();
//express内置的json转换方法,用来解析post请求的参数
app.use(express.urlencoded({ extended: false }));
app.use(express.json());
// 处理跨域
app.use(cors());
//3.使用服务器名.listen()方法启动服务器
app.listen(8800, () => {
  console.log("服务器启动于http://127.0.0.1");
})

// 拦截get请求,post请求同理
// 查询所有的用户
app.get('/user/findAll', (req, res) => {  // res 是成功后的回调函数
  findUser((result) => {
    // 将从数据库里面查询出来的数据返回给前端
    res.end(JSON.stringify(result))
  })
 
})

// 拦截get请求,post请求同理
// 根据id查询用户信息
app.get('/user/findById', (req, res) => {  // res 是成功后的回调函数
  findById(req.query.id,(result) => {
    // 将从数据库里面查询出来的数据返回给前端
    res.end(JSON.stringify(result))
  })
})

// 拦截get请求,post请求同理
// 根据id删除用户
app.get('/user/deleteById', (req, res) => {  // res 是成功后的回调函数
  deleteById(req.query.id,(result) => {
    // 将从数据库里面查询出来的数据返回给前端
    res.end(JSON.stringify(result))
  })
})
// 新增用户或修改用户
app.post('/user/saveOrUpdate', (req, res) => {  // res 是成功后的回调函数
    saveUser(req.body, (result) => {
      console.log('增加用户参数:',req.body);
      res.send(JSON.stringify(result))
    })
})




//dbconfig.js 配置连接数据库参数

var mysql = require('mysql');  //导入mysql包模块
    let db = mysql.createPool({
        host:'localhost',//主机ip
        port:'3306',//端口号
        user:'root',//数据库的用户名
        password:'root',//数据库的密码
        database: 'userlogin'//数据库的名字
    })
module.exports = {
    db
}

//users.js这个文件下写的是增删查改的四个接口

// 封装dao层
const { db } = require('./dbconfig');

// 查询所有的用户
let findUser = (callback) => {
    db.getConnection((err, connection) => {
        if (err) {
            console.log(err);
        } else {
            let sql = 'select * from user'
            connection.query(sql, (err, result) => {
                if (err) {
                    console.log(err)
                } else {
                    callback(result)
                    connection.release()
                    connection.destroy()
                }
            })
        }
    })
}

// 根据id查询用户信息
let findById = (id, callback) => {
    db.getConnection((err, connection) => {
        if (err) {
            console.log(err);
        } else {
            let sql = 'select * from user where id=?'
            connection.query(sql, [id], (err, result) => {
                if (err) {
                    console.log(err)
                } else {
                    callback(result)
                    connection.release()
                    connection.destroy()
                }
            })
        }
    })
}

// 新增用户或修改用户
let saveUser = (data, callback) => {
    db.getConnection((err, connection) => {
        if (err) {
            console.log(err);
        } else {
            if (data.id) {
                // 修改
                let sql = 'update user set username=?,password=?,email=? where id=?'
                connection.query(sql, [data.username, data.password, data.email, data.id], (err, result) => {
                    if (err) {
                        console.log(err)
                    } else {
                        result.code = 200
                        result.message = '编辑成功'
                        callback(result)
                        connection.release()
                        connection.destroy()
                    }
                })
            } else {
                // 保存
                let sql = 'insert into user(id,username,password,email) values(?,?,?,?)'
                connection.query(sql, [null, data.username, data.password, data.email], (err, result) => {
                    if (err) {
                        console.log(err)
                    } else {
                        result.code = 200
                        result.message = '添加成功'
                        callback(result)
                        connection.release()
                        connection.destroy()
                    }
                })
            }
        }
    })
}

// 根据id删除用户
let deleteById = (id, callback) => {
    db.getConnection((err, connection) => {
        if (err) {
            console.log(err);
        } else {
            let sql = 'delete from user where id = ?'
            connection.query(sql, [id], (err, result) => {
                if (err) {
                    console.log(err)
                } else {
                    callback(result)
                    connection.release()
                    connection.destroy()
                }
            })
        }
    })
}

module.exports = {
    findUser,
    findById,
    saveUser,
    deleteById
}

全部写完后执行server.js文件,服务器就开启了。

node server.js

至此,服务后台全部布置好,前端需要调用接口怎么写呢示例:

//查询所有数据
//get后面第一个参数填入URL和我们定义好的接口就可以了
  this.$http.get('http://127.0.0.1:8800/user/findAll')
        .then(function (response) {
          // 处理成功情况,打印参数
          console.log(response.data);
          
        })
        .catch(function (error) {
          // 处理错误情况
          console.log(error);
        })
//根据id查询数据,示例中id:1就是查询数据库中id为1的数据
this.$http.get('http://localhost:8800/user/findById',{id:1})
        .then((res)=>{
            console.log(res.data);
        })
//新增数据
this.$http.post('http://127.0.0.1:8800/user/saveOrUpdate',{
					username: 'xiongj',
					password: "123456",
          email:'197877551@qq.com'
				})
//修改数据
this.$http.post('http://127.0.0.1:8800/user/saveOrUpdate',{
                          id: '2'
					username: 'xiongj',
					password: "123456",
          email:'197877551@qq.com'
				})
//删除数据
this.$http.get('http://localhost:8800/user/deleteById?id='+id)
           .then((res)=>{
            console.log('删除成功!');
        })

为啥用this.$http呢,那是因为用axios每个文件都要引入一遍,很麻烦,我直接在main.js中把axios挂载到Vue实例上了。

//main.js

import Vue from 'vue'
import App from './App.vue'


import ElementUI from 'element-ui';
import 'element-ui/lib/theme-chalk/index.css';


//全局引入axios挂载到Vue实例的属性上
import axios from 'axios';
Vue.prototype.$http = axios;

Vue.use(ElementUI);
Vue.config.productionTip = false

new Vue({
  render: h => h(App),
}).$mount('#app')

所以在这里

this.$http.get() 就等同于 axios.get()

----------------------------------------------------------------------------------------------------------------------------

呼~终于写完了,这是第二次修改后的,之前文章有些细节上的问题,现在都改好了,希望能帮助到大家。????

最后

以上就是自由自行车为你收集整理的完整流程!用node.js和Vue.cli配合,布置服务器,并从数据库取数据传送到前端。的全部内容,希望文章能够帮你解决完整流程!用node.js和Vue.cli配合,布置服务器,并从数据库取数据传送到前端。所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(46)

评论列表共有 0 条评论

立即
投稿
返回
顶部