# 项目问题
# 解决
- 减少
data
里面定义的变量 - 多个弹窗Modal的时候,控制弹窗显示的变量只需要一个,通过弹窗类型来决定哪个弹窗显示。
# 用过的插件
babel-plugin-transform-remove-console
compression-webpack-plugin
style-resources-loader
如果你想自动化导入文件 (用于颜色、变量、
mixin
……),你可以使用style-resources-loader
// vue.config.js
const path = require('path')
module.exports = {
chainWebpack: config => {
const types = ['vue-modules', 'vue', 'normal-modules', 'normal']
types.forEach(type => addStyleResource(config.module.rule('scss').oneOf(type)))
},
}
function addStyleResource (rule) {
rule.use('style-resource')
.loader('style-resources-loader')
.options({
patterns: [
path.resolve(__dirname, './src/styles/mixins.scss'),
],
})
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
vue-loader
是什么?
vue
文件的一个加载器,跟template/js/style
转换成js
模块。
TIP
preserveWhitespace
去掉代码空格减少包体积transformToRequire
场景:以前在写
Vue
的时候经常会写到这样的代码:把图片提前require
传给一个变量再传给组件
用了这个之后就可以直接;
// page 代码可以简化为
<template>
<div>
<avatar img-src="./assets/default-avatar.png"></avatar>
</div>
</template>
1
2
3
4
5
6
2
3
4
5
6
前提是需要在vue.config.js
设置:
module.exports = {
pages,
chainWebpack: config => {
config
.module
.rule('vue')
.use('vue-loader')
.loader('vue-loader')
.tap(options => {
options.transformAssetUrls = {
avatar: 'img-src',
}
return options;
});
}
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
image-webpack-loader
在
vue
项目中除了可以在webpack.base.conf.js
中url-loader
中设置limit
大小来对图片处理,对小于limit
的图片转化为base64
格式,其余的不做操作。所以对有些较大的图片资源,在请求资源的时候,加载会很慢,我们可以用image-webpack-loader
来压缩图片
# vue初始化页面闪动问题
使用vue
开发时,在vue
初始化之前,由于div
是不归vue
管的,所以我们写的代码在还没有解析的情况下会容易出现花屏现象,看到类似于的字样,虽然一般情况下这个时间很短暂,但是我们还是有必要让解决这个问题的。
[v-cloak] {
display: none;
}
1
2
3
2
3
<div v-cloak>
{{ message }}
</div>
1
2
3
2
3
# vuex数据刷新丢失
# 图片加载失败
场景:有些时候后台返回图片地址不一定能打开,所以这个时候应该加一张默认图片
// page 代码
<img :src="imgUrl" @error="handleError" alt="">
<script>
export default{
data(){
return{
imgUrl:''
}
},
methods:{
handleError(e){
e.target.src=reqiure('图片路径') //当然如果项目配置了transformToRequire,参考上面 27.2
}
}
}
</script>
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
← 前端面试其他常见问题 🦐皮项目总结 →