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}); 
			}
		}
	}
});

优化说明:

  1. 判断页面类型:mounted 钩子函数中添加一个判断,判断当前页面是否是文章详情页。通过查询 '.single-post' 元素的存在来判断。
  2. 添加loading状态:data 中添加 loading 属性,初始值为 false。在请求数据之前将 loading 设置为 true,显示 loading 状态。数据请求完成后,将 loading 设置为 false,隐藏 loading 状态。
  3. 仅在文章详情页执行: 只有在判断为文章详情页时,才执行 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 代码。如果您有任何问题,请随时提出。

Vue.js 代码优化:在文章详情页自动执行并显示加载状态

原文地址: http://www.cveoy.top/t/topic/oUmS 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录