一起养成写作习惯!这是我参与「掘金日新计划 · 4 月更文挑战」的第13天,点击查看活动详情。
项目启动不起来
项目报 Vue packages version mismatch,启动不起来
解决办法 重新单独安装提示冲突的模块 比如如上的冲突,更新vue-template-compiler, 命令行输入
npm i vue-template-compiler@2.6.10 --save
再重新启动就可以了 npm run dev
vue项目自动读取缓存中的数据,不重新发请求
解决方案: 请求增加时间戳
// 在每个请求上增加时间戳
config.url = `${config.url}?_t=${+new Date()}`
静态资源处理
assets
目录中的文件会被webpack处理解析为模块依赖,只支持相对路径
形式。
background: url(./logo.png)
中,"./logo.png" 是相对的资源路径,将由Webpack解析为模块依赖。
static/
目录下的文件并不会被Webpack处理:它们会直接被复制到最终的打包目录
(默认是dist/static)下。必须使用绝对路径
引用这些文件,这是通过在 config.js 文件中的 build.assetsPublicPath 和 build.assetsSubDirectory 连接来确定的。
任何放在 static/ 中文件需要以绝对路径的形式引用:/static/[filename]。
在我们实际的开发中,总的来说:stac放不会变动的文件
assets放可能会变动的文件
。
组件强制刷新
场景1:当组件动态赋值,dom却不能及时更新,无法及时渲染出正确的结果时,可以采用组件强制刷新的方法模版上绑定key
。
//模版上绑定key
<SomeComponent :key="theKey"/>
//选项里绑定data
data(){
return{
theKey:0
}
}
//刷新key达到刷新组件的目的
theKey++;
场景2:因为组件嵌套太深,导致组件无法刷新或el-option绑定的List数据过多,导致来不及渲染。可以在@change方法内加入官方给出的更新选择框视图方法 $forceUpdate强制更新
//模版上绑定change
<el-select @change="changeContent"/>
// 官方给出的更新选择框视图方法
this.$forceUpdate()
//刷新key达到刷新组件的目的
changeContent (val) {
this.$forceUpdate()
},