Skip to content

Commit a3adbd6

Browse files
authored
Merge pull request #4 from zhengybo/dev
Dev
2 parents adeffdc + 6710451 commit a3adbd6

File tree

8 files changed

+97
-28
lines changed

8 files changed

+97
-28
lines changed

lib/entry/entry-server.js

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,13 @@ import createApp from '@/app'
33
export default context => {
44
return new Promise((resolve, reject) => {
55
const { app, router, store } = createApp()
6-
router.push(context.url)
6+
7+
const { url } = context
8+
const { fullPath } = router.resolve(url).route
9+
if (fullPath !== url) {
10+
return reject({ url: fullPath })
11+
}
12+
router.push(url)
713
store.commit('SET_COOKIE', context.cookie)
814
router.onReady(() => {
915
const matchedComponents = router.getMatchedComponents()

lib/index.js

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
module.exports = (app) => {
22
require('./engine')(app);
33
require('./setup')(app);
4-
app.use(require('./view'));
4+
require('./view')(app);
5+
app.use(require('./render'));
56
}

lib/render.js

Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,26 @@
1+
/**
2+
* 渲染模板
3+
*/
4+
class Render {
5+
6+
constructor(context){
7+
this.context = context;
8+
context.render = this.render.bind(this);
9+
context.renderClient = this.renderClient.bind(this);
10+
}
11+
12+
render(options){
13+
return this.context.app.view.render(this.context, options);
14+
}
15+
16+
renderClient(){
17+
18+
}
19+
20+
}
21+
22+
23+
module.exports = async (context, next) => {
24+
new Render(context);
25+
await next();
26+
}

lib/view/index.js

Lines changed: 16 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -1,35 +1,34 @@
11
/**
2-
* 渲染模板
2+
* 视图
33
*/
44
class view {
5-
constructor(context){
6-
this.context = context;
7-
context.render = this.render.bind(this);
8-
context.renderClient = this.renderClient.bind(this);
5+
constructor(app){
6+
this.app = app;
7+
app.view = this;
98
}
109

11-
render(){
10+
render(ctx, options){
1211
return new Promise((resolve, reject) => {
13-
this.renderToString().then(html => resolve(this.context.body = html));
12+
this.renderToString(ctx, options).then(html => resolve(ctx.body = html)).catch(reject);
13+
}).catch(e => {
14+
let handlerError = this.app.handlerError || function(){};
15+
handlerError.call(ctx, ctx, e)
1416
})
1517
}
1618

17-
renderToString(options){
18-
let { app, url, request : { header : { cookie } } } = this.context,
19+
renderToString(ctx, options){
20+
let { url, request : { header : { cookie } } } = ctx,
1921
opt = Object.assign({ url, cookie }, options);
2022
return new Promise((resolve, reject) => {
21-
app.engine.renderer.renderToString(opt, (err, html) => {
22-
err ? reject(err) : resolve(html);
23-
});
24-
}).catch(e => console.log(e))
23+
this.app.engine.renderer.renderToString(opt, (err, html) => {
24+
err ? reject(err) : resolve(html)
25+
});
26+
})
2527
}
2628

2729
renderClient(){
2830

2931
}
3032
}
3133

32-
module.exports = async (context, next) => {
33-
new view(context);
34-
await next();
35-
}
34+
module.exports = app => new view(app)

middlewares/index.js

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,17 @@
1+
2+
/**
3+
* token检查中间件
4+
*/
5+
async function checkToken(ctx, next){
6+
if(!ctx.header.puid){
7+
ctx.body = {
8+
code : 0
9+
}
10+
}else {
11+
await next();
12+
}
13+
}
14+
15+
16+
17+
export { checkToken }

router/index.js

Lines changed: 17 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -2,21 +2,32 @@
22
const router = require('koa-router')();
33

44
export default (app) => {
5+
/* 处理公用错误 */
6+
app.handlerError = (ctx, e) => {
7+
if(typeof e == 'object'){ // 人为返回错误
8+
ctx.redirect('/404')
9+
return;
10+
}
11+
ctx.throw(500);
12+
}
513

6-
router.get(/^(?!\/(api|dist))\/*/, async (ctx) => {
7-
await ctx.render();
14+
router.get(/^(?!\/(api|dist|404))\/*/, async (ctx) => {
15+
await ctx.render(ctx);
816
})
917

1018
router.get('/api/getUserInfo', async (ctx) => {
1119
ctx.body = {
12-
code : 0,
13-
20+
code : 1,
1421
data : {
15-
name : '我叫mv',
16-
age : 10
22+
name : '我叫mmv'
1723
}
1824
}
1925
})
2026

27+
router.get('/404', async (ctx) => {
28+
await ctx.render();
29+
})
30+
31+
2132
return app.use(router.routes(),router.allowedMethods());
2233
}

src/js/http/axios.js

Lines changed: 11 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,16 @@ const http = store => options => {
1515

1616
isBody && Object.assign(headers, {'Content-Type' : 'application/json' });
1717

18-
return axios({ url, method, data, params, headers })
19-
.then(res => res.data).catch(err => console.log(err));
18+
return new Promise((resolve, reject) => {
19+
axios({ url, method, data, params, headers })
20+
.then(res => res.data)
21+
.then(data => {
22+
if(data.code == 0){
23+
resolve(data)
24+
}
25+
reject({})
26+
})
27+
.catch(err => console.log(err))
28+
});
2029
}
2130
export { http }

src/view/layout/footer.vue

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
<template lang="html">
22
<div id="footer" class="">
3-
我是底部111
3+
我是底部111我我看那边你说传
44
</div>
55
</template>
66

0 commit comments

Comments
 (0)