Vue+Express 搭建前后端分离项目

一,新建一个工程 ------ myApp

二,在该工程中通过 Express 创建一个后端项目 ------ myExpApp

三,在该工程中通过 Vue 创建一个前端项目 ------ myVueApp

项目目录如下:

myApp
|
|----myExpApp
|----myVueApp

四,后台正常执行自己的项目,设置路由文件等等等。。。

五,前端正常编写自己的Vue组件,xxx.vue等等等。。。

 

前端想要通过 ajax 请求后台数据,这是会有一个跨域问题

因为前端的Vue项目运行使用的是 localhost:8080 端口、后台Express项目运行使用的是localhost:3000端口。

8080端口来请求3000端口中的内容引起跨域问题。

可通过以下步骤解决:

一、前端准备 ------ 使用axios模块发起ajax请求:

在前端引入axios模块,前端工程myVueApp文件夹下执行:npm install axios

然后再 main.js 中:

import axios from 'axios'


var url = "http://localhost:3000";
axios
  .get(url + "/product")
  .then(function (response) {
    window.console.log(response);
  })
  .catch(function (error) {
    window.console.log(error);
  });

然后,前端先到此,现在不必执行,后台还没准备好。

二、后台准备 ------ 使用cors模块支持跨域

注意:Node中支持跨域的方式有很多种,大家可以自行百度,这里使用的是比较简单的跨域支持方式。

后台在routers文件夹中新建 product.js 文件,对前端的请求做支持。

product.js 文件中的内容如下:

var express = require('express');
var router = express.Router();

router.get('/', function(req, res, next) {
  var dataMsg = {
    code:0,
    data:{name:'白骨精',age:'23'},
    msg:"请求成功"
  }
  res.json(dataMsg);
});

module.exports = router;

然后在 app.js 文件中做如下配置:

var productRouter = require('./routes/product');

app.use('/product', productRouter);

再然后,为了支持跨域,引入cors模块,终端执行:npm install cors

模块加载完毕之后,在 app.js 中引入并使用:

var cors = require('cors');


app.use(cors()); 

app.js 中的所有操作,如下图所示:

app.js中的设置

大功告成!!!

接下来,执行你的后台、后台工程,接下来在浏览器中输入localhost:8080即可在控制台看到,product.js文件返回的数据。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章