vue-cli 的配置,由于脚手架的 vue-cli 版本不一致可能导致不适,请注意版本问题
SVG 的显示配置
需要 npm i svg-sprite-loader
在 vue.config 中新加 babel
1 2 3 4 5 6 7 8 9 10 11 12 13 14
| chainWebpack: (config) => { config.module.rule("svg").exclude.add(resolve("src/icons")).end(); config.module .rule("icons") .test(/\.svg$/) .include.add(resolve("src/icons")) .end() .use("svg-sprite-loader") .loader("svg-sprite-loader") .options({ symbolId: "icon-[name]", }) .end(); };
|
resolve 是引入 svg 的一个函数 但是在各种配置中可能不一定相同 有可能使用 vue-cli 已有的 resolve ,最简单的就是自己写一个函数,本质是使用 path 的方法
1 2 3
| function resolve(dir) { return path.join(__dirname, "./", dir); }
|
vue 配置页面预渲染(将页面静态化,便于 seo 读取)
在项目中安装 prerender-spa-plugin
1
| npm i --save prerender-spa-plugin
|
在 vue.config.js 中引入并配置
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29
| const PrerenderSPAPlugin = require("prerender-spa-plugin"); const Renderer = PrerenderSPAPlugin.PuppeteerRenderer; configureWebpack: { plugins: [ new PrerenderSPAPlugin({ staticDir: path.join(__dirname, "dist"), routes: ["/", "/team", "/analyst", "/voter", "/sponsor"], renderer: new Renderer({ inject: { foo: "bar", }, headless: false, renderAfterDocumentEvent: "render-event", renderAfterTime: 10000, timeout: 0, maxConcurrentRoutes: 20, navigationParams: { timeout: 0, }, }), }), ]; }
|