sav-vue-demo
Version:
sav vue demo
219 lines (180 loc) • 5.98 kB
JavaScript
import Koa from 'koa';
import bodyParser from 'koa-bodyparser';
import favicon from 'koa-favicon';
import staticCache from 'koa-static-cache';
import { Router, get } from 'sav-router';
import { schemaPlugin } from 'sav-router-schema';
import { viewPlugin } from 'sav-router-view';
import { vuePlugin } from 'sav-vue';
import { gen, props } from 'sav-decorator';
import { resolve } from 'path';
var _dec;
var _dec2;
var _dec3;
var _class;
var _class2;
function _applyDecoratedDescriptor(target, property, decorators, descriptor, context) {
var desc = {};
Object['ke' + 'ys'](descriptor).forEach(function (key) {
desc[key] = descriptor[key];
});
desc.enumerable = !!desc.enumerable;
desc.configurable = !!desc.configurable;
if ('value' in desc || desc.initializer) {
desc.writable = true;
}
desc = decorators.slice().reverse().reduce(function (desc, decorator) {
return decorator(target, property, desc) || desc;
}, desc);
if (context && desc.initializer !== void 0) {
desc.value = desc.initializer ? desc.initializer.call(context) : void 0;
desc.initializer = undefined;
}
if (desc.initializer === void 0) {
Object['define' + 'Property'](target, property, desc);
desc = null;
}
return desc;
}
let posts = [{
id: 1,
title: 'post 1 title',
content: 'post 1 content'
}, {
id: 2,
title: 'post 2 title',
content: 'post 2 content'
}];
let Article = (_dec = props({
vue: true
}), _dec2 = get(), _dec3 = get('post/:postId'), gen(_class = _dec(_class = (_class2 = class Article {
posts() {
return {
title: '文章列表',
posts
};
}
post({ params }) {
return {
title: '文章预览',
post: posts[params.postId - 1]
};
}
}, (_applyDecoratedDescriptor(_class2.prototype, 'posts', [_dec2], Object.getOwnPropertyDescriptor(_class2.prototype, 'posts'), _class2.prototype), _applyDecoratedDescriptor(_class2.prototype, 'post', [_dec3], Object.getOwnPropertyDescriptor(_class2.prototype, 'post'), _class2.prototype)), _class2)) || _class) || _class);
var _dec$1;
var _dec2$1;
var _dec3$1;
var _class$1;
var _class2$1;
function _applyDecoratedDescriptor$1(target, property, decorators, descriptor, context) {
var desc = {};
Object['ke' + 'ys'](descriptor).forEach(function (key) {
desc[key] = descriptor[key];
});
desc.enumerable = !!desc.enumerable;
desc.configurable = !!desc.configurable;
if ('value' in desc || desc.initializer) {
desc.writable = true;
}
desc = decorators.slice().reverse().reduce(function (desc, decorator) {
return decorator(target, property, desc) || desc;
}, desc);
if (context && desc.initializer !== void 0) {
desc.value = desc.initializer ? desc.initializer.call(context) : void 0;
desc.initializer = undefined;
}
if (desc.initializer === void 0) {
Object['define' + 'Property'](target, property, desc);
desc = null;
}
return desc;
}
let Account = (_dec$1 = props({
vue: true
}), _dec2$1 = get(), _dec3$1 = get(), gen(_class$1 = _dec$1(_class$1 = (_class2$1 = class Account {
login() {
return {
title: '登录',
message: 'Welcome to Sign In'
};
}
register() {
return {
title: '注册',
welcome: {
title: 'Welcome to Sign Up'
}
};
}
}, (_applyDecoratedDescriptor$1(_class2$1.prototype, 'login', [_dec2$1], Object.getOwnPropertyDescriptor(_class2$1.prototype, 'login'), _class2$1.prototype), _applyDecoratedDescriptor$1(_class2$1.prototype, 'register', [_dec3$1], Object.getOwnPropertyDescriptor(_class2$1.prototype, 'register'), _class2$1.prototype)), _class2$1)) || _class$1) || _class$1);
var _dec$2;
var _dec2$2;
var _dec3$2;
var _class$2;
var _class2$2;
function _applyDecoratedDescriptor$2(target, property, decorators, descriptor, context) {
var desc = {};
Object['ke' + 'ys'](descriptor).forEach(function (key) {
desc[key] = descriptor[key];
});
desc.enumerable = !!desc.enumerable;
desc.configurable = !!desc.configurable;
if ('value' in desc || desc.initializer) {
desc.writable = true;
}
desc = decorators.slice().reverse().reduce(function (desc, decorator) {
return decorator(target, property, desc) || desc;
}, desc);
if (context && desc.initializer !== void 0) {
desc.value = desc.initializer ? desc.initializer.call(context) : void 0;
desc.initializer = undefined;
}
if (desc.initializer === void 0) {
Object['define' + 'Property'](target, property, desc);
desc = null;
}
return desc;
}
let Home = (_dec$2 = props({
vue: true,
route: {
path: ''
}
}), _dec2$2 = get('~'), _dec3$2 = get(), gen(_class$2 = _dec$2(_class$2 = (_class2$2 = class Home {
index() {
return {
title: '主页'
};
}
about() {
return {
title: '关于'
};
}
}, (_applyDecoratedDescriptor$2(_class2$2.prototype, 'index', [_dec2$2], Object.getOwnPropertyDescriptor(_class2$2.prototype, 'index'), _class2$2.prototype), _applyDecoratedDescriptor$2(_class2$2.prototype, 'about', [_dec3$2], Object.getOwnPropertyDescriptor(_class2$2.prototype, 'about'), _class2$2.prototype)), _class2$2)) || _class$2) || _class$2);
var pages = [Account, Article, Home];
let port = 3000;
let app = new Koa();
app.use(favicon(resolve(__dirname, '../favicon.ico')));
app.use(staticCache(resolve(__dirname, '../static'), {
maxAge: 365 * 24 * 60 * 60
}));
app.use(bodyParser());
let BUILD_VUE_ROUTER = !!process.env.BUILD_VUE_ROUTER;
let router = new Router({
case: 'camel',
viewRoot: resolve(__dirname, 'views'),
vueRoot: resolve(__dirname, 'views'),
vueDest: resolve(__dirname, '../static/js'),
vueLiveCompiled: !BUILD_VUE_ROUTER && process.env.NODE_ENV !== 'production'
});
router.use(schemaPlugin);
router.use(vuePlugin);
router.use(viewPlugin);
router.declare([].concat(pages));
app.use(router.route());
if (!BUILD_VUE_ROUTER) {
app.listen(port);
console.log(`server: http://localhost:${port}`);
}
export { router };