抱歉,您的浏览器无法访问本站

本页面需要浏览器支持(启用)JavaScript


了解详情 >

Mr.wang

Time flies and people come and go

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({
// 生成文件的路径,也可以与webpakc打包的一致。
// 下面这句话非常重要!!!
// 这个目录只能有一级,如果目录层次大于一级,在生成的时候不会有任何错误提示,在预渲染的时候只会卡着不动。
staticDir: path.join(__dirname, "dist"),
// 对应自己的路由文件,比如a有参数,就需要写成 /a/param1。
routes: ["/", "/team", "/analyst", "/voter", "/sponsor"],
// 这个很重要,如果没有配置这段,也不会进行预编译
renderer: new Renderer({
inject: {
foo: "bar",
},
headless: false,
// 在 main.js 中 document.dispatchEvent(new Event('render-event')),两者的事件名称要对应上。
renderAfterDocumentEvent: "render-event",
renderAfterTime: 10000, //超时时间
timeout: 0,
maxConcurrentRoutes: 20, //打包页面的最大数
navigationParams: {
timeout: 0,
},
}),
}),
];
}

评论