Vue.js 代码优化:在文章详情页自动执行并显示加载状态
Vue.js 代码优化:在文章详情页自动执行并显示加载状态
本文介绍如何优化 Vue.js 代码,使其仅在文章详情页内加载完成后自动执行,并快速显示检测的结果。同时,添加 loading 状态,提升用户体验。
原始代码:
var icydm_pancheck = new Vue({
el:'.icydm-pancheck',
data:{
data_text:'',
data:'',
},
//插件初始化开始
// created() {
// this.pancheck()
// },
mounted(){
if(!this.$refs.pancheck)return;
let post_id = this.$refs.pancheck.getAttribute('data-id')
this.$https.post(b2_global.site_info.admin_ajax,'id='+post_id+'&action=icydm_pancheck').then(res=>{
this.data=res.data;
}
)
},
methods:{
pancheck(){
if(this.data){
Qmsg['success'](this.data,{html:true});
}else{
Qmsg['success']('正在检查中,请稍后点击...', {html:true});
}
}
}
})
优化后的代码:
var icydm_pancheck = new Vue({
el:'.icydm-pancheck',
data:{
data_text:'',
data:'',
loading:false //添加loading状态
},
mounted(){
//判断当前页面是否是文章详情页
if(document.querySelector('.single-post')){
let post_id = this.$refs.pancheck.getAttribute('data-id');
this.loading = true; //显示loading
this.$https.post(b2_global.site_info.admin_ajax,'id='+post_id+'&action=icydm_pancheck').then(res=>{
this.data=res.data;
this.loading = false; //请求数据完成后隐藏loading
});
}
},
methods:{
pancheck(){
if(this.data){
Qmsg['success'](this.data,{html:true});
}else{
Qmsg['success']('正在检查中,请稍后点击...', {html:true});
}
}
}
});
优化说明:
- 判断页面类型: 在
mounted钩子函数中添加一个判断,判断当前页面是否是文章详情页。通过查询'.single-post'元素的存在来判断。 - 添加loading状态: 在
data中添加loading属性,初始值为false。在请求数据之前将loading设置为true,显示 loading 状态。数据请求完成后,将loading设置为false,隐藏 loading 状态。 - 仅在文章详情页执行: 只有在判断为文章详情页时,才执行
pancheck方法,确保代码在正确页面执行。
使用说明:
在文章详情页的模板中,添加一个 div 元素,并使用 class 属性设置为 icydm-pancheck。例如:
<div class='icydm-pancheck'></div>
代码示例:
完整代码:
<!DOCTYPE html>
<html>
<head>
<title>Vue.js 代码优化</title>
<script src='https://cdn.jsdelivr.net/npm/vue@2.6.14/dist/vue.js'></script>
</head>
<body>
<div id='app'>
<div class='icydm-pancheck'></div>
</div>
<script>
var icydm_pancheck = new Vue({
el:'.icydm-pancheck',
data:{
data_text:'',
data:'',
loading:false //添加loading状态
},
mounted(){
//判断当前页面是否是文章详情页
if(document.querySelector('.single-post')){
let post_id = this.$refs.pancheck.getAttribute('data-id');
this.loading = true; //显示loading
this.$https.post(b2_global.site_info.admin_ajax,'id='+post_id+'&action=icydm_pancheck').then(res=>{
this.data=res.data;
this.loading = false; //请求数据完成后隐藏loading
});
}
},
methods:{
pancheck(){
if(this.data){
Qmsg['success'](this.data,{html:true});
}else{
Qmsg['success']('正在检查中,请稍后点击...', {html:true});
}
}
}
});
</script>
</body>
</html>
注意事项:
- 请根据实际情况修改
single-post类名和admin_ajax地址。 - 确保
Qmsg对象已定义,否则需要进行相应的修改。 $https是假设您已经引入了 axios 库,并定义了$https变量。
通过以上优化,代码更加简洁高效,用户体验也得到了提升。
其他优化建议:
- 使用 Vuex 状态管理,更好地管理数据和状态。
- 使用 Webpack 或 Parcel 等打包工具,简化开发流程。
- 使用 CSS 预处理器,提高 CSS 代码可维护性。
- 使用代码 lint 工具,保证代码质量。
希望本文能够帮助您更好地优化 Vue.js 代码。如果您有任何问题,请随时提出。
原文地址: http://www.cveoy.top/t/topic/oUmS 著作权归作者所有。请勿转载和采集!