Skip to content

Commit 119b274

Browse files
Add server-side rendering (via bundleRenderer, as this is what the Vue docs recommend, and apparently the only way it does encapsulation)
1 parent 360688f commit 119b274

File tree

14 files changed

+117
-51
lines changed

14 files changed

+117
-51
lines changed
Lines changed: 6 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,10 @@
1-
import './css/site.css';
21
import Vue from 'vue';
3-
import router from './router';
4-
5-
const App = require('./components/app/app.vue.html');
2+
import VueRouter from 'vue-router';
3+
import { routes } from './routes';
4+
Vue.use(VueRouter);
65

76
new Vue({
8-
el: 'app',
9-
render: h => h(App, { props: {} }),
10-
router: router
7+
el: '#app-root',
8+
router: new VueRouter({ mode: 'history', routes: routes }),
9+
render: h => h(require('./components/app/app.vue.html'))
1110
});
Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,16 @@
1+
import Vue from 'vue';
2+
import VueRouter from 'vue-router';
3+
import { createServerRenderer, RenderResult } from 'aspnet-prerendering';
4+
import { createBundleRenderer } from 'vue-server-renderer';
5+
import { routes } from './routes';
6+
Vue.use(VueRouter);
7+
8+
export default function(context: any) {
9+
const router = new VueRouter({ mode: 'history', routes: routes })
10+
router.push(context.url);
11+
12+
return new Vue({
13+
render: h => h(require('./components/app/app.vue.html')),
14+
router: router
15+
});
16+
}
Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,18 @@
1+
import { createServerRenderer, RenderResult } from 'aspnet-prerendering';
2+
import { createBundleRenderer } from 'vue-server-renderer';
3+
const path = require('path');
4+
const bundleRenderer = createBundleRenderer(path.resolve('ClientApp/dist/vue-ssr-bundle.json'), {
5+
template: '<!--vue-ssr-outlet-->'
6+
});
7+
8+
export default createServerRenderer(params => {
9+
return new Promise<RenderResult>((resolve, reject) => {
10+
bundleRenderer.renderToString(params, (error, html) => {
11+
if (error) {
12+
reject(error);
13+
} else {
14+
resolve({ html: html });
15+
}
16+
});
17+
});
18+
});
Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
<template>
2-
<div class="container-fluid">
2+
<div id='app-root' class="container-fluid">
33
<div class="row">
44
<div class="col-sm-3">
55
<menu-component />
@@ -9,7 +9,6 @@
99
</div>
1010
</div>
1111
</div>
12-
1312
</template>
1413

1514
<script src="./app.ts"></script>
File renamed without changes.

templates/VueSpa/ClientApp/components/navmenu/navmenu.vue.html

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -33,3 +33,5 @@
3333
</div>
3434
</div>
3535
</template>
36+
37+
<style src="./navmenu.css" />

templates/VueSpa/ClientApp/router.ts

Lines changed: 0 additions & 13 deletions
This file was deleted.
Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
export const routes = [
2+
{ path: '/', component: require('./components/home/home.vue.html') },
3+
{ path: '/counter', component: require('./components/counter/counter.vue.html') },
4+
{ path: '/fetchdata', component: require('./components/fetchdata/fetchdata.vue.html') }
5+
];

templates/VueSpa/Views/Home/Index.cshtml

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2,8 +2,10 @@
22
ViewData["Title"] = "Home Page";
33
}
44

5-
<app>Loading...</app>
5+
<div asp-prerender-module="ClientApp/dist/main-server">
6+
<div id='app-root'>Loading...</div>
7+
</div>
68

79
@section scripts {
8-
<script src="~/dist/main.js" asp-append-version="true"></script>
10+
<script src="~/dist/main-client.js" asp-append-version="true"></script>
911
}

templates/VueSpa/Views/Shared/_Layout.cshtml

Lines changed: 0 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -6,9 +6,6 @@
66
<title>@ViewData["Title"] - WebApplicationBasic</title>
77

88
<link rel="stylesheet" href="~/dist/vendor.css" asp-append-version="true" />
9-
<environment names="Staging,Production">
10-
<link rel="stylesheet" href="~/dist/site.css" asp-append-version="true" />
11-
</environment>
129
</head>
1310
<body>
1411
@RenderBody()

0 commit comments

Comments
 (0)