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文件返回的數據。

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