大熊君JavaScript插件化开发------(实战篇之DXJ UI ------ ProcessBar)

本文主要是介绍大熊君JavaScript插件化开发------(实战篇之DXJ UI ------ ProcessBar),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

一,开篇分析

Hi,大家好!大熊君又和大家见面了,还记得前两篇文章吗。主要讲述了以“jQuery的方式如何开发插件”,以及过程化设计与面向对象思想设计相结合的方式是

如何设计一个插件的,两种方式各有利弊取长补短,本系列文章是以学习为导向的,具体场景大家自己定夺使用方式。那么今天从这篇文章开始,我们就以实例

的方式带着大家由浅入深的开发属于自己的插件库。嘿嘿嘿,废话少说,进入正题。直接上实际效果图:

    

 

大家看到了吧,这是一个进度条插件,在我们日常开发中,有时我们会有一个装载数据的进度提示,如果无任何响应势必造成用户

的体验形式以及用户的可交互性不是很好,所以今天模拟一个嘿嘿嘿。下面就具体分析一下吧。

 

  

(二),实例分析

  (1),首先确定这个插件做什么事。下面看一下插件的调用方式,以及配置参数说明。如下代码:

    

new ProcessBar($("#pb"),{callback : function(){alert("装载数据完成!") ;}
}).init() ;

  我这里只是一个简单的实例,所以就一个参数,那就是进度加载完要做的事,在回调中做实现部分的逻辑处理,例如跳转到相关的页面:

new ProcessBar($("#pb"),{callback : function(){window.location = "xxx.html" ;}
}).init() ;

  第一个是dom节点对象,这里以jQuery的方式获取,第二个是插件参数选项,"callback"代表进度加载完要做的事,在回调中做实现部分的逻辑处理。

  

 

三,完整代码以供学习,本代码已经过测试,包括目录结构以及相关的文件。

  (1),html代码:

    

<div id="pb"><span></span><div class="pc"></div>
</div>

  

(2),css代码:

  

#pb {padding:2px;margin: 0 auto;width: 560px;height: 32px;position:relative;border:1px solid #777;text-align: center;color: #ff3300;font-family: "微软雅黑" ;font-size: 24px;font-weight:bold;
}
#pb span {position:absolute;top:0;left:45%;
}
#pb .pc {background-color: #00008B;width:0px;height: 32px;
}

  

  (3),js代码:

  

new ProcessBar($("#pb"),{   // 调用代码在jQuery ready 中完成callback : function(){alert("装载数据完成!") ;}
}).init() ;
function ProcessBar(elem,opts){this.elem = elem ;this.opts = opts ;this.tid = null ;this.tnum = 10 ;this.precent = 1 ;this.currentWidth = 0 ;
} ;
var pbProto = ProcessBar.prototype ;
pbProto.getElem = function(){return this.elem ;
} ;
pbProto.getOpts = function(){return this.opts ;
} ;
pbProto.init = function(){this._fnProcessHandler();
} ;
pbProto._fnProcessHandler = function(){var that = this ;var cb = this.getOpts()["callback"] ;this._setProcessIncWidth(this.currentWidth= this.currentWidth + this._getIncrementNum()) ;this._setPrecentText(this.precent.toString()) ;if(this.precent < 100){this.tid = window.setTimeout(function(){that._fnProcessHandler.call(that) ;},this.tnum) ;}else{this._resetTimeout() ;$.isFunction(cb) && cb() ;}this.precent = this.precent + 1 ;
} ;
pbProto._getIncrementNum = function(){return this.getElem().width() / 100 ;
} ;
pbProto._setPrecentText = function(precent){this.getElem().find("span").text("%" + precent) ;
} ;
pbProto._setProcessIncWidth = function(width){this.getElem().find(".pc").css("width",width + "px") ;
} ;
pbProto._resetTimeout = function(){window.clearTimeout(this.tid) ;this.tid = null ;
} ;

  

  

 

 

(四),最后总结

  (1),面向对象的思考方式合理分析功能需求。

  (2),以类的方式来组织我们的插件逻辑。

  (3),不断重构上面的实例,如何进行合理的重构那?不要设计过度,要游刃有余,推荐的方式是过程化设计与面向对象思想设计相结合。

    (4),下篇文章中会扩展相关功能,比如添加“text”这个属性,用户自己设置相关的提示文字信息,让体验更加完美。

 

 

                   哈哈哈,本篇结束,未完待续,希望和大家多多交流够沟通,共同进步。。。。。。呼呼呼……(*^__^*)       

转载于:https://www.cnblogs.com/bigbearbb/p/4279477.html

这篇关于大熊君JavaScript插件化开发------(实战篇之DXJ UI ------ ProcessBar)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/237209

相关文章

Spring Boot Maven 插件如何构建可执行 JAR 的核心配置

《SpringBootMaven插件如何构建可执行JAR的核心配置》SpringBoot核心Maven插件,用于生成可执行JAR/WAR,内置服务器简化部署,支持热部署、多环境配置及依赖管理... 目录前言一、插件的核心功能与目标1.1 插件的定位1.2 插件的 Goals(目标)1.3 插件定位1.4 核

基于Python开发一个图像水印批量添加工具

《基于Python开发一个图像水印批量添加工具》在当今数字化内容爆炸式增长的时代,图像版权保护已成为创作者和企业的核心需求,本方案将详细介绍一个基于PythonPIL库的工业级图像水印解决方案,有需要... 目录一、系统架构设计1.1 整体处理流程1.2 类结构设计(扩展版本)二、核心算法深入解析2.1 自

java使用protobuf-maven-plugin的插件编译proto文件详解

《java使用protobuf-maven-plugin的插件编译proto文件详解》:本文主要介绍java使用protobuf-maven-plugin的插件编译proto文件,具有很好的参考价... 目录protobuf文件作为数据传输和存储的协议主要介绍在Java使用maven编译proto文件的插件

浏览器插件cursor实现自动注册、续杯的详细过程

《浏览器插件cursor实现自动注册、续杯的详细过程》Cursor简易注册助手脚本通过自动化邮箱填写和验证码获取流程,大大简化了Cursor的注册过程,它不仅提高了注册效率,还通过友好的用户界面和详细... 目录前言功能概述使用方法安装脚本使用流程邮箱输入页面验证码页面实战演示技术实现核心功能实现1. 随机

SpringBoot开发中十大常见陷阱深度解析与避坑指南

《SpringBoot开发中十大常见陷阱深度解析与避坑指南》在SpringBoot的开发过程中,即使是经验丰富的开发者也难免会遇到各种棘手的问题,本文将针对SpringBoot开发中十大常见的“坑... 目录引言一、配置总出错?是不是同时用了.properties和.yml?二、换个位置配置就失效?搞清楚加

前端如何通过nginx访问本地端口

《前端如何通过nginx访问本地端口》:本文主要介绍前端如何通过nginx访问本地端口的问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录一、nginx安装1、下载(1)下载地址(2)系统选择(3)版本选择2、安装部署(1)解压(2)配置文件修改(3)启动(4)

HTML中meta标签的常见使用案例(示例详解)

《HTML中meta标签的常见使用案例(示例详解)》HTMLmeta标签用于提供文档元数据,涵盖字符编码、SEO优化、社交媒体集成、移动设备适配、浏览器控制及安全隐私设置,优化页面显示与搜索引擎索引... 目录html中meta标签的常见使用案例一、基础功能二、搜索引擎优化(seo)三、社交媒体集成四、移动

HTML input 标签示例详解

《HTMLinput标签示例详解》input标签主要用于接收用户的输入,随type属性值的不同,变换其具体功能,本文通过实例图文并茂的形式给大家介绍HTMLinput标签,感兴趣的朋友一... 目录通用属性输入框单行文本输入框 text密码输入框 password数字输入框 number电子邮件输入编程框

HTML img标签和超链接标签详细介绍

《HTMLimg标签和超链接标签详细介绍》:本文主要介绍了HTML中img标签的使用,包括src属性(指定图片路径)、相对/绝对路径区别、alt替代文本、title提示、宽高控制及边框设置等,详细内容请阅读本文,希望能对你有所帮助... 目录img 标签src 属性alt 属性title 属性width/h

CSS3打造的现代交互式登录界面详细实现过程

《CSS3打造的现代交互式登录界面详细实现过程》本文介绍CSS3和jQuery在登录界面设计中的应用,涵盖动画、选择器、自定义字体及盒模型技术,提升界面美观与交互性,同时优化性能和可访问性,感兴趣的朋... 目录1. css3用户登录界面设计概述1.1 用户界面设计的重要性1.2 CSS3的新特性与优势1.