?為了應對業務的復雜性,提高前端的渲染能力,故在項目中引入nodejs做中間層,前端承接vue,后端對接Java。
至于為什么這么搞,網上有好多文章都在討論,可以說仁者見仁智者見智,這里我們不在深究。
這里主要記錄一下,我在項目中嘗試使用這種結構遇到的問題:
1.前端的vue工程采用axios請求中間層node服務會遇到跨域問題
解決方法:打開vue工程的index.js配置文件添加如下配置
assetsSubDirectory: 'static',
assetsPublicPath: '/',
proxyTable: {'/api': {target: 'http://localhost:3000',changeOrigin: true,pathRewrite: {'^/api': ''}}
},
2.中間層使用axios請求后端接口時需要等待接口返回后,在傳遞數據給前端,這里就需要使用同步請求機制
解決方法:采用 async, await 方式,如下
var express = require('express')
var router = express.Router()
var http = require('../config/http')router.get('/getFarmTargets', async (req, res, next) => {console.log('進入請求')var result = {}result.targets = await http.get('/cim/cimInfos/survey?orgId=1115').then(response => response.data.code === 0 ? response.data.data : null)result.introductions = await http.get('/cim/introductions', { orgId: 1115 }).then(response => response.data.code === 0 ? response.data.data : null)console.log('回調外層2:' + JSON.stringify(result))res.json({code: '0',msg: '',data: result})next()
})
先記錄到這兒,未完待續......
?
?