vue+express+mysql

Vue + express + mysql主要要注意这么几个问题:

  • 跨域问题
  • 连接数据库
  • 用户接口
  • sql语句

一、node后端服务器

在项目根目录下建立server,作为后端的服务部分。

首先建立db.js:

// 数据库连接配置
module.exports = {
    mysql: {
        host: '192.168.0.222',
        port: "3308",
        user: 'root',
        password: '123456',
        database: 'ele_test',
    }
}

然后建立index.js:

// node 后端服务器

const userApi = require('./api/userApi');  
const bodyParser = require('body-parser');
const express = require('express');
const app = express();

app.use(bodyParser.json());
app.use(bodyParser.urlencoded({extended: false}));

//解决跨域  
app.all('*', function(req, res, next) {
	res.header("Access-Control-Allow-Origin", "*");
	res.header("Access-Control-Allow-Headers", "X-Requested-With");
	res.header("Access-Control-Allow-Methods", "PUT,POST,GET,DELETE,OPTIONS");
	res.header("X-Powered-By", ' 3.2.1')
	res.header("Content-Type", "application/json;charset=utf-8");
	next();
});

// 后端api路由
app.use('/api', userApi);

// 监听端口
app.listen(3000);
console.log('success listen at port:3000......');

sqlMap.js:

// sql语句
var sqlMap = {
    // 用户
    user: {
        add: 'insert into t_test(id, name) values (566, ?)'
    }
}

module.exports = sqlMap;

在server文件夹下建立api文件夹,api文件夹下建立userApi.js:

var models = require('../db');
var express = require('express');
var router = express.Router();
var mysql = require('mysql');
var $sql = require('../sqlMap');

// 连接数据库
var conn = mysql.createConnection(models.mysql);

conn.connect();
var jsonWrite = function(res, ret) {
    if(typeof ret === 'undefined') {
        res.json({
            code: '1',
            msg: '操作失败'
        });
    } else {
        res.json(ret);
    }
};

// 增加用户接口
router.post('/addUser', (req, res) => {
    var sql = $sql.user.add;
    var params = req.body;
    console.log(params,"===");
    conn.query(sql, [params.username], function(err, result) {
        if (err) {
            console.log(err);
        }
        if (result) {
            jsonWrite(res, result);
        }
    })
});

module.exports = router;

二、前端部分

1.安装

安装express:npm install express --save

安装mysql: npm install body-parser --save

安装body-parser: npm install body-parser --save

2.main.js中注册

全局引入并且注册axios

安装:npm install axios --save

注册:

import axios from 'axios'

Vue.prototype.$http = axios;
3.配置跨域
devServer: {
    proxy: {  //配置跨域
      '/api': {
        target: 'http://localhost:3000/api',
        changeOrigin: true,
        pathRewrite: {
          '^/api': ''
        }
      }
    }
  },

这部分很重要,如果target填写的有问题,就会产生一些问题,最初我填写的不是localhost,然后报错403。

4.编写测试部分
<template>
  <div class="hello">
    <h1>{{ msg }}</h1>
    <form>
      <input type="text" name="username" v-model="userName"> <br> 
      <a href="javascript:;" @click="addUser">提交</a>
    </form>
  </div>
</template>

<script>
export default {
  name: 'hello',
  data () {
    return {
      msg: 'Welcome to Your Vue.js App',
      userName: '', 
    }
  },
  methods: {
    addUser() {
      var name = this.userName; 
      this.$http.post('/api/addUser', {
        username: name,
      },{}).then((response) => {
        console.log(response);
      })
    }
  }
}
</script>

三、启动服务

然后进入server目录下,将node服务启动起来node index

然后将前端也启动起来,进入对应的test页面即可。

参考链接:https://segmentfault.com/a/1190000012186439

  • 3
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
Vue是一种用于构建用户界面的开源JavaScript框架。它可以帮助开发人员构建交互式的单页应用程序。Nodemon是一个用于自动监视文件更改并重新启动应用程序的工具。它在开发过程中非常有用,可以提高开发效率。通过全局安装Nodemon,我们可以在终端上输入"nodemon app.js"来启动项目。MySQL是一种广泛使用的开源关系型数据库管理系统。它可以用于存储和管理数据。在前后端交互的项目中,MySQL可以用于存储和检索数据。所以,如果你需要在Vue项目中使用Nodemon和MySQL,你可以通过全局安装Nodemon并在终端上启动项目,然后使用MySQL作为后端数据库来存储和检索数据。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* [vue+node+mysql全栈项目完整记录](https://blog.csdn.net/u012848304/article/details/128713937)[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^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 33.333333333333336%"] - *2* [vue+express+mysql+elementUI实现前后端交互增删改查](https://blog.csdn.net/qyl_0316/article/details/127903797)[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^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 33.333333333333336%"] - *3* [基于nodejs+express+vue+mysql的前后端分离在线订餐系统源码+sql数据库.zip](https://download.csdn.net/download/liufang_imei/88001467)[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^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 33.333333333333336%"] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

echo忘川

谢谢老板们

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

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

打赏作者

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

抵扣说明:

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

余额充值