官方githubhtml
坑點vue
例如:webpack
<body> <div id="app"></div> </body> // app.vue <template> <div id="app"></div> </template>
由於預渲染時會消耗掉第一個 id,生成初始的html,若是須要後續的交互,那麼app.vue 裏也須要一個 id 供 vue 建立實例git
// webpack plugins new PrerenderPlugin({ // 生成 html 的文件夾 staticDir: '/absolute/path', // 須要訪問的 html 文件名 indexPath: 'xxx.html', // 渲染後輸出 html 的文件夾,暫時只能輸出 index.html,不能更名字 // 因爲不能更名字,能夠先輸出到緩存文件夾,再用 copy-webpack-plugin 更名 outputDir: '/output/dir', // 須要渲染的路由 routes: ['/'], // html文件壓縮 minify: { minifyCSS: true, removeComments: true, }, // 渲染器 renderer: new Renderer({ // 多個觸發條件的話第一個纔有效 // 觸發渲染的時間,用於獲取數據後再保存渲染結果 renderAfterTime: 5000, // 觸發渲染的事件, document.dispatch(new Event('vue-mounted')) // renderAfterDocumentEvent: 'vue-mounted', // 觸發渲染的元素,該元素生成後就保存渲染結果 // renderAfterElementExists: '#app', // 是否打開瀏覽器,false 是打開。可用於 debug 檢查渲染結果 // headless: false, }), server: { // 代理,用於發送請求,設置與 webpack-dev-server 並不徹底相同 proxy: { '/api': { target: 'http://localhost:' + config.prod.port || 3050, pathRewrite: { '^/api': '/', }, }, // proxy的屬性用於express: app.use(key, proxy[key]) // '/:foo': { target }, 能夠不匹配 '/' }, }, })