造轮子,模态窗口开发小结

用了差不多一周多的业余时间,终于造完了轮子,开发了一个简单的模态窗口。实现的功能有tips提示框,警告框,确认框,还有弹出窗口操作。将此组件命名为easyUtil_poped,以下用poped简称。

先说句题外话,easyUtil是我自己开发的一系列组件插件css样式包的前缀名,意思是简化开发流程,也希望这能成为自己的一个小品牌。这个系列现在已经有一套全局css,内含各种常见布局样式,一套Jquery插件,20多个插件,一套vue组件包含下拉框,表格等组件生成,一组js常用工具模块。现在再田添加一套模态窗口。Bulabula,有点乱,回头得整理整理。

回到正题,这次开发模态窗口,实属一言不合,就开发一个。因为用过layerUi,但是时常出现和页面样式冲突的事情,比如弹出到一个根本看不见的地方。。。所以决定自己开发一个看看。然而,道路是艰辛的,总结一下心得吧。

1.  一定要使用严格模式,加一个"use strict"就行,这样可以有助于规范代码,防止未声明变量以及其他一些不规范操作,这在开发组件是非常重要的,我们要保证组件代码是健壮的,完整的。

2.  所有的常量全部提前声明,poped弹出最多的常量使用就是css样式了,按钮的,各个层的,标题的.....如果你不用常量声明,那天想修改一个类名,好吧,你就慢慢去代码堆里找吧,虽然说可以ctrl+f替换了,但是,大量的字符串嵌在代码里,你难保不会出乱子,所以把这些字符串变成常量,放在最上面,以后的代码只需引用常量名,如果要修改常量值,轻松搞定。

3. 代码逻辑的分离,分离,分离,说三遍。数据处理,DOM生成,事件监听,事件处理逻辑,业务逻辑,总之,能分离就分离,这样你会发现,代码多了好多块,但是,好清晰啊,哪不对,只需要改哪块代码就行,无需担心影响其他地方,尽可能让每个function只完成一件事情,其他的调用就行,同时,分离完的逻辑,还可以复用,不用将重复的代码粘贴复制一遍又一遍,简洁明了,程序员都是“懒惰的”,能复用,一定要复用。

4. 做好类型判断,因为你开发的是组件,不是自己用的小方法,不能保证所有人都按你想的那样操作,所以要判断参数类型是否则正确,同时抛出异常告诉使用者,哪里用错了,这里也要做好异常处理,不要因为一个参数类型错误,让js全死掉,这不是一个插件应该有的。

5. 组件弹出时要做判断,不要重复弹出同一个窗口,对于多余的,要通过逻辑判断,关掉。

6. 如果想要窗口弹出固定在屏幕上,可以用position:fixed定位遮罩层,内容层用绝对定位,但是不要用css设置top,left来达到居中的目的,否则添加移动功能时,你就会发现鼠标拖不动,而且窗口随意跑。要通过js计算当前遮罩层的宽高和内容层的宽高,然后相减,除2,在赋值给内容层的top,left这样就能保证各种屏幕下,窗口都居中,且不影响拖动效果。

7. 谨慎使用0值,特别是需要判断的时候,因为0值js会等同于false, 判断时一定要写清除 if(XX==0/!=0), 否则如果简写if(XX) ,你会发现,正确赋了0值的内容,永远也出不来。再或者实在想简写,那就不要让赋值操作有0这个值。

8. 通过arguments长度判断,可以间接实现重载函数功能,同时配上类型检查,可以实现少量参数不完全赋值功能,比如有一个函数三个参数,内容,时间,偏移量,可以选择(内容,时间)赋值,也可以选择(内容,偏移量)赋值,也可以三个都选。

以上就是个开发小总结,回头再整理一下使用文档,发布一下。

猜你喜欢

转载自blog.csdn.net/qq_38047742/article/details/81773204