一,新建一个工程 ------ 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 中的所有操作,如下图所示:
大功告成!!!
接下来,执行你的后台、后台工程,接下来在浏览器中输入localhost:8080即可在控制台看到,product.js文件返回的数据。