diff --git a/templates/VueSpa/ClientApp/boot-client.ts b/templates/VueSpa/ClientApp/boot-client.ts index b86ea2a..aa5e0a8 100644 --- a/templates/VueSpa/ClientApp/boot-client.ts +++ b/templates/VueSpa/ClientApp/boot-client.ts @@ -1,11 +1,10 @@ -import './css/site.css'; import Vue from 'vue'; -import router from './router'; - -const App = require('./components/app/app.vue.html'); +import VueRouter from 'vue-router'; +import { routes } from './routes'; +Vue.use(VueRouter); new Vue({ - el: 'app', - render: h => h(App, { props: {} }), - router: router + el: '#app-root', + router: new VueRouter({ mode: 'history', routes: routes }), + render: h => h(require('./components/app/app.vue.html')) }); diff --git a/templates/VueSpa/ClientApp/boot-server-bundle.ts b/templates/VueSpa/ClientApp/boot-server-bundle.ts new file mode 100644 index 0000000..ad2a7cb --- /dev/null +++ b/templates/VueSpa/ClientApp/boot-server-bundle.ts @@ -0,0 +1,16 @@ +import Vue from 'vue'; +import VueRouter from 'vue-router'; +import { createServerRenderer, RenderResult } from 'aspnet-prerendering'; +import { createBundleRenderer } from 'vue-server-renderer'; +import { routes } from './routes'; +Vue.use(VueRouter); + +export default function(context: any) { + const router = new VueRouter({ mode: 'history', routes: routes }) + router.push(context.url); + + return new Vue({ + render: h => h(require('./components/app/app.vue.html')), + router: router + }); +} diff --git a/templates/VueSpa/ClientApp/boot-server.ts b/templates/VueSpa/ClientApp/boot-server.ts new file mode 100644 index 0000000..bbe4e4c --- /dev/null +++ b/templates/VueSpa/ClientApp/boot-server.ts @@ -0,0 +1,18 @@ +import { createServerRenderer, RenderResult } from 'aspnet-prerendering'; +import { createBundleRenderer } from 'vue-server-renderer'; +const path = require('path'); +const bundleRenderer = createBundleRenderer(path.resolve('ClientApp/dist/vue-ssr-bundle.json'), { + template: '' +}); + +export default createServerRenderer(params => { + return new Promise((resolve, reject) => { + bundleRenderer.renderToString(params, (error, html) => { + if (error) { + reject(error); + } else { + resolve({ html: html }); + } + }); + }); +}); diff --git a/templates/VueSpa/ClientApp/components/app/app.vue.html b/templates/VueSpa/ClientApp/components/app/app.vue.html index 65a2ff9..6a108b8 100644 --- a/templates/VueSpa/ClientApp/components/app/app.vue.html +++ b/templates/VueSpa/ClientApp/components/app/app.vue.html @@ -1,5 +1,5 @@ diff --git a/templates/VueSpa/ClientApp/css/site.css b/templates/VueSpa/ClientApp/components/navmenu/navmenu.css similarity index 100% rename from templates/VueSpa/ClientApp/css/site.css rename to templates/VueSpa/ClientApp/components/navmenu/navmenu.css diff --git a/templates/VueSpa/ClientApp/components/navmenu/navmenu.vue.html b/templates/VueSpa/ClientApp/components/navmenu/navmenu.vue.html index 33a6e50..642a522 100644 --- a/templates/VueSpa/ClientApp/components/navmenu/navmenu.vue.html +++ b/templates/VueSpa/ClientApp/components/navmenu/navmenu.vue.html @@ -33,3 +33,5 @@ + +