如何预渲染多个 Vue 应用页面?
How to pre-render multiple Vue app pages?
我正在尝试(未成功)在使用 Vue CLI 构建的同一项目中预渲染多个 Vue 应用程序的 HTML。由于多种原因,我不想使用 Vue Router 或 Nuxt 等。
我试过使用 prerender-spa-plugin,但由于我不使用路由,它只预呈现索引。
我的 vue.config.js 看起来像这样:
const path = require('path');
const PrerenderSPAPlugin = require('prerender-spa-plugin');
const Renderer = PrerenderSPAPlugin.PuppeteerRenderer;
module.exports = {
pages: {
index: 'src/index.js',
about: 'src/about.js',
},
configureWebpack: {
plugins: [
new PrerenderSPAPlugin({
staticDir: path.join(__dirname, 'dist'),
routes: ['/'],
postProcess(route) {
route.html = route.html.replace('</script><div>', '</script><div id="app" data-server-rendered="true">');
return route;
},
renderer: new Renderer({
headless: true,
renderAfterDocumentEvent: 'render-event',
}),
}),
],
},
};
和我的 index.js 和 about.js 基本上是这样的:
import Vue from 'vue';
import App from './Index.vue';
new Vue({
render: h => h(App),
mounted() {
document.dispatchEvent(new Event('render-event'));
},
}).$mount('#app');
我也有独特的 public/ index.html 和 about.html 页面。
prerender-spa-plugin 的 routes
参数似乎无法识别 '/about.html'
之类的东西。有没有简单的方法实现多个预渲染页面?
我是否必须与 SSR 模块搏斗?
提前致谢。
我找到的解决方案是多次调用 new PrerenderSPAPlugin
,每条路线一个。
我也面临同样的问题,我有静态 html 使用 vue 组件,我想在输出构建目录中预渲染 vue 组件。我在构建过程中使用 laravel-mix 包。
您能否 post 完整的解决方案,即多次调用新的 PrerenderSPAPlugin,每个路由一个。
如果我能获得完整的 webpack.config.js,我将很容易理解并使用 laravel-mix 实现相同的内容。
我正在尝试(未成功)在使用 Vue CLI 构建的同一项目中预渲染多个 Vue 应用程序的 HTML。由于多种原因,我不想使用 Vue Router 或 Nuxt 等。
我试过使用 prerender-spa-plugin,但由于我不使用路由,它只预呈现索引。
我的 vue.config.js 看起来像这样:
const path = require('path');
const PrerenderSPAPlugin = require('prerender-spa-plugin');
const Renderer = PrerenderSPAPlugin.PuppeteerRenderer;
module.exports = {
pages: {
index: 'src/index.js',
about: 'src/about.js',
},
configureWebpack: {
plugins: [
new PrerenderSPAPlugin({
staticDir: path.join(__dirname, 'dist'),
routes: ['/'],
postProcess(route) {
route.html = route.html.replace('</script><div>', '</script><div id="app" data-server-rendered="true">');
return route;
},
renderer: new Renderer({
headless: true,
renderAfterDocumentEvent: 'render-event',
}),
}),
],
},
};
和我的 index.js 和 about.js 基本上是这样的:
import Vue from 'vue';
import App from './Index.vue';
new Vue({
render: h => h(App),
mounted() {
document.dispatchEvent(new Event('render-event'));
},
}).$mount('#app');
我也有独特的 public/ index.html 和 about.html 页面。
prerender-spa-plugin 的 routes
参数似乎无法识别 '/about.html'
之类的东西。有没有简单的方法实现多个预渲染页面?
我是否必须与 SSR 模块搏斗?
提前致谢。
我找到的解决方案是多次调用 new PrerenderSPAPlugin
,每条路线一个。
我也面临同样的问题,我有静态 html 使用 vue 组件,我想在输出构建目录中预渲染 vue 组件。我在构建过程中使用 laravel-mix 包。 您能否 post 完整的解决方案,即多次调用新的 PrerenderSPAPlugin,每个路由一个。
如果我能获得完整的 webpack.config.js,我将很容易理解并使用 laravel-mix 实现相同的内容。