1,node中間層總結vue
1,ejs引入vue的js,路由層(直接透傳,自定義行的),比較淺層的一層node
中間件的引入ios
const
path =
require(
'path')
const
Koa =
require(
'koa')
const
views =
require(
'koa-views')
const
parser =
require(
'koa-bodyparser')
const
koaStatic =
require(
'koa-static')
const
koaMount =
require(
'koa-mount')
const
app =
new
Koa()
const {
port,
routerRoot } =
require(
'./config/base')
const
middlewares =
require(
'./middlewares/index')
const
register =
require(
'./common/register')
// 公共數據
app.
use(
async (
ctx,
next)
=> {
// ejs模版中使用該變量動態加載對應模版
ctx.
state = {
EJS_ENV: [
'a',
'b',
'c'].
indexOf(
process.
env.
JZ_ENV) !== -
1 ?
'test' :
process.
env.
JZ_ENV }
// 繼續向下匹配路由
await
next()
})
// 入口頁-注意:必須放在路由註冊前面
app.
use(
views(
path.
join(
__dirname,
'./app'), {
extension:
'ejs'
}))
// post參數解析
app.
use(
parser())
// 自定義攔截器
middlewares(
app)
// 模塊註冊
app.
use(
register.
launch())
// 靜態資源支持
app.
use(
koaMount(
`
${
routerRoot
}
/static`,
koaStatic(
path.
join(
__dirname,
'../static'))))
app.
listen(
port)
優勢,一、內網和內網訪問更安全,速度更快,json
二、微信小程序沒有辦法設置cookie,中間層解決這個問題,axios
三、減小沒必要要的發佈,審覈,中間層修改域名 小程序
訪問的接口錯誤的攔截微信小程序
axios.
interceptors.
response.
use(
response
=> {
let
reqInfo =
response.
config
let
isJsonResponse = !((
reqInfo.
responseType &&
reqInfo.
responseType !==
'json'))
let
methods =
reqInfo.
method
let
url =
reqInfo.
url
let
params =
reqInfo.
params ||
''
let
data =
reqInfo.
data ||
''
console.
log(
'interceptors================================')
if (
isJsonResponse &&
response.
data.
code !==
0) {
// 與rd約定,接口成功返回code===0,其他爲失敗
console.
log(
'response===========================' +
response)
logger.
warn(
`
${
methods
}
rd:
${
url
}
params:
${
JSON.
stringify(
params)
}
data:
${
JSON.
stringify(
data)
}
response:
${
JSON.
stringify(
response.
data)
}
`)
logger.
warn(
`header:
${
JSON.
stringify(
reqInfo.
headers)
}
`)
}
else {
(
logger.
info(
`Success
${
methods
}
rd:
${
url
}
params:
${
JSON.
stringify(
params)
}
data:
${
JSON.
stringify(
data)
}
`)
)
}
return
response
},
error
=> {
let
reqInfo =
error.
config
let
params =
reqInfo.
params ||
''
let
data =
reqInfo.
data ||
''
logger.
error(
`
${
reqInfo.
method
}
${
reqInfo.
url
}
params:
${
JSON.
stringify(
params)
}
data:
${
JSON.
stringify(
data)
}
`)
return
Promise.
reject(
error)
})
}
註冊路由,採用router.all安全