前端学习笔记vue

Vue2+Express+MySQL构建前后端分离项目

2017-09-25  本文已影响477人  简小咖

需要用到

前端:
Vue-cli 快速构建项目,开发前端页面
Vue-Resource 与后端交互
后端:
Node + Express 仅用于编写API给前端提供数据
MySQL 创建数据库

开始准备工作

安装Vue-Cli
http://www.jianshu.com/p/5c9b489d4103
之前已经写过关于Vue的安装,点击连接
直到npm run dev运行起来
vue2本身是基于nodeJs的,此时node也已经安装好了
Express 是基于 Node.js平台,快速、开放、极简的 web 开发框架,待会再安装相关依赖

搭建后端Express服务器

在根目录下创建server文件
1、db.js 数据库mysql连接配置
// 数据库连接配置

module.exports = {
    mysql: {
        host: 'localhost',     //mysql地址127.0.0.1
        user: 'root',     //连接mysql的用户名和密码
        password: '',
        database: 'mycake',   //数据库名
        port: '3306',   //mysql端口号
    }
}

如果以上信息不太清楚,或者还未安装mysql,请参考
http://www.jianshu.com/p/023f3a758c05
2、index.js Express 服务器入口文件

// node 后端服务器
const cakeList = require('./api/cakeList');
const addUser= require('./api/addUser');
const express = require('express');
const app = express();
// 后端api路由
app.use('/api/cake', cakeList);
app.use('/api/user', addUser);
// 监听端口
app.listen(3000);
console.log('success listen at port:3000......');

3、创建api文件夹
cakeList.js 关于cake查询所有数据的api

var models = require('../db');
var express = require('express');
var router = express.Router();
var mysql = require('mysql');
// 连接数据库
var conn = mysql.createConnection(models.mysql);
conn.connect();
// 增加cakelist接口
router.get('/cakelist', (req, res) => {
    var sql ="select * from cake";
    conn.query(sql, (err, result)=>{
        if (err) {
            console.log(err);
        }
        if (result) {
            console.log(result);
            res.json(result);
        }
    })
});
module.exports = router;

4、安装express+mysql的依赖
在根目录下

npm install express mysql  --save

注意:--save安装后并将其保存到依赖列表中,如果不保存依赖列表可以忽略不写,不写--save就是临时安装某个依赖
此时进入 server 文件夹下
执行 node index
看到 success listen at port:3000……即服务端启动成功。

编写前端vue

1、Hello.vue 页面

<template>
  <div class="hello">
    <h1>{{ msg }}</h1>
  </div>
</template>
<script>
export default {
  name: 'hello',
  data () {
    return {
      msg: 'Welcome to Your Vue.js App'
    } 
  },
  created:function (){
        this.$http.get('/api/cake/cakelist')
       .then((response) => {
        console.log(response.data);
      })
    }
}
</script>

2、安装vue-resource
vue-resource相当于jquery中的ajax
只有安装vue-resource,$http.get才能生效,不然就会报错

npm install vue-resource --save

在main.js中引入vue-resource

import VueResource from 'vue-resource'
Vue.use(VueResource)

来看一下完成后的目录结构


image.png

从图上可以看出,前后端是完全分离式开发
此时还不能运行,因为服务器在3000端口上,8081端口访问不到,这样运行就会报Not Found 404错误

配置跨域

config/index.js
proxyTable参数,用来设置地址映射表

  dev: {
    env: require('./dev.env'),
    port: 8081,
    autoOpenBrowser: true,
    assetsSubDirectory: 'static',
    assetsPublicPath: '/',
    proxyTable: {
      '/api': {
        target: 'http://127.0.0.1:3000/api/',
        changeOrigin: true,
        pathRewrite: {
            '^/api': ''
        }
      }
    },

即请求/api时就代表‘http://localhost:3000/api/’,
注意:这里最好使用http://127.0.0.1,因为我写http://localhost也会报同样的错误
现在我们可以运行啦npm run dev,记住:之前的启动服务器千万不要关闭,再开一个终端运行

image.png
这是我的结果,说明连接后端成功啦,可以继续完成更多的api和页面啦
此项目地址:https://github.com/ortion/vue2mycake
上一篇下一篇

猜你喜欢

热点阅读