一,新建一個工程 ------ 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文件返回的數據。