为operamasks增加HTML扩展方式的组件调用

本文探讨了EasyUI组件的效率问题,并介绍如何利用OperaMasks替代存在问题的组件。文章详细阐述了如何为OperaMasks增加HTML扩展方式的组件调用,并提供了具体的实现代码。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

背景

之前的博文中有提及到,发现easyui中的combobox,datebox,layout都有效率问题,其中layout的问题在这里有直接的解决方法,而combobox,datebox的问题其实在layout的DEMO中也处理了,这里主要是写其处理过程。

处理旧问题,发现新问题

既然easyui的组件有问题,没什么好说了,换另外一个组件好了,当时试了很多UI解决方案,鉴于界面、效率及源代码的质量问题,决定用operamasks去替换easyui中的combobox和datebox

但是用惯了easyui的人会发现,easyui有一个很大的特点是,有很多属性可以直接写在html上,例如

<div id="win" iconCls="icon-save" title="My Window"></div>

iconCls和title就会直接加上去产生的组件上,而且也可以用类名去声明组件,这些operamasks都没有

但是不要紧,两边的源代码都有,研究一下就OK了

分析easyui源代码

虽然easyui的源代码混淆了,但是认真看也能发现问题的(PS:后来发现这里有未经混淆的代码了) 里面有一个叫parseOptions的函数,就是把HTML上的属性转化为组件能使用的属性。

而根据类名去渲染就更加容易找到了,因为API中直接就有一个$.parser.parse的方法,分析一下其源代码即可。

为operamasks增加HTML扩展方式的组件调用

经过测试和其他细节调整,最后代码是这样的

  1. var om = {
  2. dataStore:{},
  3. parse:function(key){
  4. var setData = {
  5. "Button":{
  6. parseOptions:function(obj){
  7. var $obj = obj instanceof jQuery ? obj : $(obj);
  8. return {
  9. //图片是用地址放上去的,而不是css,不科学,待改进
  10. icons: {left:$obj.attr("iconLeft") || $obj.attr("iconCls"),right:$obj.attr("iconRight")}
  11. }
  12. }
  13. },
  14. "Calendar":{
  15. parseOptions:function(obj){
  16. var $obj = obj instanceof jQuery ? obj : $(obj);
  17. return {
  18. }
  19. }
  20. },
  21. "Combo":{
  22. parseOptions:function(obj){
  23. var $obj = obj instanceof jQuery ? obj : $(obj);
  24. return {
  25. value:$obj.val(),
  26. readOnly:/(readonly)|(true)/i.test($obj.attr("readOnly")) ? true : false,
  27. dataSource:$obj.attr("dataSource"),
  28. inputField:$obj.attr("inputField"),
  29. optionField:$obj.attr("optionField") || "text",
  30. valueField:$obj.attr("valueField") || "value"
  31. }
  32. }
  33. },
  34. "NumberField":{
  35. parseOptions:function(obj){
  36. var $obj = obj instanceof jQuery ? obj : $(obj);
  37. return {
  38. allowDecimals:/true/i.test($obj.attr("allowDecimals")) ? true : false,
  39. allowNegative:/true/i.test($obj.attr("allowNegative")) ? true : false,
  40. decimalPrecision:$obj.attr("decimalPrecision")
  41. }
  42. }
  43. },
  44. "Panel":{
  45. parseOptions:function(obj){
  46. var $obj = obj instanceof jQuery ? obj : $(obj);
  47. return {
  48. width:$obj.css('width'),
  49. height:$obj.css("height"),
  50. collapsed:$obj.attr("collapsed") == "true",
  51. collapsible:$obj.attr("collapsible") == "true" || $obj.attr("collapsed") == "true" || true
  52. }
  53. }
  54. },
  55. "Tabs":{
  56. parseOptions:function(obj){
  57. var $obj = obj instanceof jQuery ? obj : $(obj);
  58. return {
  59. }
  60. }
  61. }
  62. }
  63. return key ? setData[key] : setData;
  64. },
  65. omDocReady:function(){
  66. //$.om.omCombo.prototype.options.editable = false;
  67. $.extend($.om.omCombo.prototype.options,{ //改变下拉框的默认值
  68. forceSelection : true,
  69. filterDelay : 200,
  70. listMaxHeight : 200,
  71. inputField:"text",
  72. optionField:"text",
  73. valueField:"value"
  74. });
  75. $.om.omCalendar.prototype.options.editable = false;
  76. var sd = om.parse();
  77. $.each(sd,function(key,val){
  78. $(".oma-"+key).each(function(oid,odm){
  79. var $obj = $(odm);
  80. var conf = sd[key].parseOptions($obj);
  81. $obj["om"+key](conf);
  82. });
  83. })
  84. }
  85. }

完整的DEMO

HTML扩展方式与纯JS调用

一开始使用extjs的时候,推崇的是纯JS调用式的使用组件,即

  1. $("#id").Component({
  2. properties1:value1,
  3. properties2:value2
  4. })

现在在项目实践中发现,easyui可以直接把属性定义在HTML上,通过源代码的察看发现,其实他们最终都是纯JS调用在起作用,但是直接定义在HTML上更加容易入门,对于项目中一些新手来说更加好用。反正经过我的封装,项目组的其他不太熟悉前端的人使用起来是方便了。


资源下载链接为: https://pan.quark.cn/s/abbae039bf2a 无锡平芯微半导体科技有限公司生产的A1SHB三极管(全称PW2301A)是一款P沟道增强型MOSFET,具备低内阻、高重复雪崩耐受能力以及高效电源切换设计等优势。其技术规格如下:最大漏源电压(VDS)为-20V,最大连续漏极电流(ID)为-3A,可在此条件下稳定工作;栅源电压(VGS)最大值为±12V,能承受正反向电压;脉冲漏极电流(IDM)可达-10A,适合处理短暂高电流脉冲;最大功率耗散(PD)为1W,可防止器件过热。A1SHB采用3引脚SOT23-3封装,小型化设计利于空间受限的应用场景。热特性方面,结到环境的热阻(RθJA)为125℃/W,即每增加1W功率损耗,结温上升125℃,提示设计电路时需考虑散热。 A1SHB的电气性能出色,开关特性优异。开关测试电路及波形图(图1、图2)展示了不同条件下的开关性能,包括开关上升时间(tr)、下降时间(tf)、开启时间(ton)和关闭时间(toff),这些参数对评估MOSFET在高频开关应用中的效率至关重要。图4呈现了漏极电流(ID)与漏源电压(VDS)的关系,图5描绘了输出特性曲线,反映不同栅源电压下漏极电流的变化。图6至图10进一步揭示性能特征:转移特性(图7)显示栅极电压(Vgs)对漏极电流的影响;漏源开态电阻(RDS(ON))随Vgs变化的曲线(图8、图9)展现不同控制电压下的阻抗;图10可能涉及电容特性,对开关操作的响应速度和稳定性有重要影响。 A1SHB三极管(PW2301A)是高性能P沟道MOSFET,适用于低内阻、高效率电源切换及其他多种应用。用户在设计电路时,需充分考虑其电气参数、封装尺寸及热管理,以确保器件的可靠性和长期稳定性。无锡平芯微半导体科技有限公司提供的技术支持和代理商服务,可为用户在产品选型和应用过程中提供有
资源下载链接为: https://pan.quark.cn/s/9648a1f24758 在 JavaScript 中实现点击展开与隐藏效果是一种非常实用的交互设计,它能够有效提升用户界面的动态性和用户体验。本文将详细阐述如何通过 JavaScript 实现这种功能,并提供一个完整的代码示例。为了实现这一功能,我们需要掌握基础的 HTML 和 CSS 知识,以便构建基本的页面结构和样式。 在这个示例中,我们有一个按钮和一个提示框(prompt)。默认情况下,提示框是隐藏的。当用户点击按钮时,提示框会显示出来;再次点击按钮时,提示框则会隐藏。以下是 HTML 部分的代码: 接下来是 CSS 部分。我们通过设置提示框的 display 属性为 none 来实现默认隐藏的效果: 最后,我们使用 JavaScript 来处理点击事件。我们利用事件监听机制,监听按钮的点击事件,并通过动态改变提示框的 display 属性来实现展开和隐藏的效果。以下是 JavaScript 部分的代码: 为了进一步增强用户体验,我们还添加了一个关闭按钮(closePrompt),用户可以通过点击该按钮来关闭提示框。以下是关闭按钮的 JavaScript 实现: 通过以上代码,我们就完成了点击展开隐藏效果的实现。这个简单的交互可以通过添加 CSS 动画效果(如渐显渐隐等)来进一步提升用户体验。此外,这个基本原理还可以扩展到其他类似的交互场景,例如折叠面板、下拉菜单等。 总结来说,JavaScript 实现点击展开隐藏效果主要涉及 HTML 元素的布局、CSS 的样式控制以及 JavaScript 的事件处理。通过监听点击事件并动态改变元素的样式,可以实现丰富的交互功能。在实际开发中,可以结合现代前端框架(如 React 或 Vue 等),将这些交互封装成组件,从而提高代码的复用性和维护性。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值