问题是,如果将“ /”添加到预渲染的路由中,然后在非“ /”页面上刷新,将导致浏览器使用预渲染的索引文件内容。
如何配置Vue和PSPA以便预先渲染根,而Vue知道使用原始(空)index.html文件来渲染未渲染的路由?
我试图在/ public中添加index.template文件,然后将其添加到PSPA配置中:
indexPath: path.join(__dirname, 'dist', 'index.template.html'),
但这无法建立。这是正确的方法吗?
答案 0 :(得分:1)
我将提供一般解决方案。此解决方案还可以帮助使用prerender-spa插件加载时遇到“白闪”的人们,记录在这里:https://github.com/chrisvfritz/prerender-spa-plugin/issues/193
解决此问题的步骤是:
indexPath: path.join(__dirname, 'dist', 'app.html')
chainWebpack: config => {
if (process.env.NODE_ENV !== 'production') return
config
.plugin('html')
.tap(args => {
args[0].template = path.join(__dirname, 'public', 'index.html');
args[0].filename = 'app.html';
return args
})
}
"rewrites": [
{
"source": "**",
"destination": "/app.html"
},
{
"source": "/",
"destination": "/index.html"
}
]
构建后,您的/ dist文件夹将具有一个app.html文件和一个index.html文件。
只要有人刷新您网站上尚未预渲染的页面,就会使用app.html文件。 app.html文件应该是“干净的”并且不包含任何预渲染的信息。
index.html文件仅在根目录下使用,并且具有所有预渲染的内容。
答案 1 :(得分:0)
根据https://github.com/SolarLiner/vue-cli-plugin-prerender-spa#backend-routing-configuration-for-deployments上的文档,您应该在服务器配置中简单地将预呈现的路由指向index.html
,将未预呈现的路由指向app.html
。