UNPKG

sav-vue-demo

Version:
219 lines (180 loc) 5.98 kB
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 };