我和我的广告前端代码(一):打碎重来、化零为整

近几个月我一直都在处理公司广告平台前端展示的代码。几个月下来见证着广告前端工程从无到有、从无规律到模块化、从技术架构到业务逻辑,收获颇丰,故此记录一下我与广告的点点滴滴。

一、事件起因:

  我所在的房产网站有两条大的业务线(业务线甲、业务线乙 代替),分别由两个大的团队管理,基本没有交集。之前两条业务线都是用的广告方案相同(本文用老代码代替)。2015年初,由于这套老代码由于维护成本过高、与页面耦合高、并且稍一改动频频出bug等问题。广告组和业务线甲共同商议、打算在业务线甲首页改版之后,重构这套前端展示用的代码(本文中称为ad甲.js)并先由首页试用ad甲.js。

二、原来的老代码是什么样的?为什么要重构它?

  广告在页面上展示是分广告类型的,每个类型对应多个广告位(实例)。我们通常是在页面布码(默认隐藏),页面加载后再用js动态加载。那么老代码是怎么做的呢?老代码中把向个广告位(id)中加入广告的行为封闭成多了立即执行函数,每个实例单独处理,没有类的概念。如果有相同的广告类型,就ctrl CV ;多人维护代码风格迥异;依赖页面中引入的类库。简单来说,就是以广告位为单位的多个js片段。那么这样的代码怎么使用呢?后台同学根据页面广告位的使用,将这些广告位分别打包成多个js文件,分别引用。对于一些可变的数据。就将js通过script标签吐到页面上,并通过PHP变量的方式修改展示用的数据。

  显然,这样的结构对于前端同学来说是很头疼的,pv统计要分别copy到每个实例的js片段中、无法统一修改公用的部分、没有可复用的逻辑、大量使用with和eval函数、不仅js依赖页面环境,而且没有逻辑性、复用性、和可读性和统一性。看来老代码的重构是很难避免了。

三、临危受命、时间紧、任务重。

  时间只有一个多月。在leader的指导下,我开始了这段代码的重构,也就是从这一刻起我与广告结下了不解之缘。 

  当然重构的不仅仅是前端代码。后端的逻辑也要变。原先的后台不仅要给js碎片打包,还要负责吐在页面中的广告数据。这样维护业务线甲的后端就和广告的后端耦合在了一起。新的架构中业务线甲的后端只负责页面相关的逻辑。而广告组的后端只提供一个能访问到对应于页面的Ajax接口。前端也变成一个专门处理广告渲染的js文件。

  当然在这么短的时间下重构的代码虽说解决了不少的问题,但仍然有很多的不足之处,下一篇文章会详细说明。

四、前端代码重构之后的结构

  1、单一的js文件

    重构之后将原有的多个js片段改为一个js文件,业务线甲的每个页面只要引用同一个js文件就可以了。在加上一些config语句。这样js负责根据config中的变量判断是哪个城市以及哪个页面,并根据这些向后台获取广告数据。广告的渲染与广告数据解耦。使得数据与显示分离。每个页面对js的引用方式变得统一。

  2、jsonp异步获取数据

    在页面的config语句中获取页面的特征参数,异步的获取广告数据。当然这少不了广告组提供的ajax的接口。考虑到业务线甲和广告业务的服务器存在跨域的问题。我们采用jsonp的方式从广告的后端获取数据。通过1、2这两个步骤,广告的后端和业务线甲的后端就解耦了。

  3、模块管理

    使用requireJS和 对应的r.js打包,一些通用的工具函数也抽象成工具箱模块。将每个广告的类型分别定义成对应的模块。模块间也有了继承关系,我可以在父类处理一些统一的东西(比如pv统计),也可以在子类加入一些特性化的东西。

  4、对页面的js库的依赖。

    既然使用了requireJS,那么不妨将所需的依赖加入到工程,一同打包。就不需要每个页面都判断一遍了。比如jquery和underscore,相信我会经常用到里面强大的API。但不见得业务线甲上每个宿主页面都有这些东西并且是我想要的版本。

  5、复用老代码中的特型逻辑

    老代码中还是有很多的特性处理逻辑可以复用,由于时间比较紧,完全的重构也很有风险。我们可以拿来复用一部分,并封装成AMD风格的模块。

  总结下来我们这一次还只是代码结构上的重构,很多的广告展示上的代码并没有完全修改,一开始提出的问题被一一解决。但是基本的结构有了,剩下的就一步一步来吧。

五、这条路还在继续

  就这样,在短短一个多月的时间里我们的ad甲.js重构完成了。但是它仍有一些的问题需要不断地完善。目前也只是在首页加入ad甲.js,后期就要在业务线甲的全站对接未知的宿主页面环境以及各个页面带来的历史性的布局合理性问题,将不断的考验着我和我的广告前端代码。我与广告的故事还没结束。

转载于:https://www.cnblogs.com/webARM/p/5098147.html

常用 网页广告 代码全集 js 广告代码 大全 120种 1:对联广告代码演示下载 2:对联广告带关闭代码演示下载 3:大幅广告自动翻滚代码演示下载 4:大幅图片广告代码演示下载 5:横向滚动图片代码演示下载 6:幻灯图片代码演示下载 7:大幅自动轮换代码演示下载 8:对联广告带上面关闭代码下载 9:右上角翻页关闭代码演示下载 10:两个焦点代码演示下载 11:页面随意漂浮代码演示下载 12:自由变化显示方式代码演示下载 13:右上拉链式打开代码演示下载 14:全屏缩放广告代码演示下载 15:右下角提示消息广告代码下载 16:右下角弹出关闭变背投演示下载 17:右侧提示点击成全屏演示下载 18:宽频焦点代码演示下载 19:横向移动视觉广告代码演示下载 20:向左移动的广告代码演示下载 21:竖行友情链向上移动代码下载 22:跟随下拉框的广告代码演示下载 23:交叉分离式广告代码演示下载 24:幻灯10个图片轮换代码演示下载 25:分组相关的图片导航代码1下载 26: 分组相关的图片导航代码2下载 27:分组相关的图片轮换演示下载 28:列表式广告代码演示下载 29:杂志式幻灯广告代码演示下载 30:影院模式幻灯广告代码演示下载 31:易趣产品幻灯广告代码演示下载 32:两侧翻牌的广告代码演示下载 33:div+css显示对联带关闭代码下载 34:文字导航广告代码演示下载 35:文字滚动消息广告代码下载 36:大幅商品展示广告代码下载 37:TOP排列幻灯广告代码下载 38:下拉显示幻灯广告代码下载 39:文字上翻幻灯广告代码下载 40:随数字快速翻动幻灯代码下载 41:随图片快速翻动幻灯代码下载 42:两边漂浮和中间漂浮组合下载 43:随机显示广告图片代码下载 44:可以设定播放速度的代码下载 45:很不错的漂浮广告代码下载 46:图片变换特效广告代码下载 47:鼠标移动提示的广告代码下载 48:漂亮的放GG代码广告框架下载 49:破SP2弹窗24小时弹一次下载 50:定时关闭的背投广告代码下载 51:仿GG和百度的文字浮动广告下载 52:绕过XP关闭弹出代码下载 53:关闭弹出两窗口的代码下载 54:鼠标经过即弹出广告代码下载 55:按钮跳出广告代码下载 56:左边底部悬浮代码下载 57:滑动展开/收缩广告代码下载 58:点空白页面也弹出代码下载 59:置顶收栏关闭效果代码下载 60:新浪FLASH切换广告下载 61:不错的漂浮广告代码下载 62:24小时退弹一次的代码下载 63:顶部收缩广告效果yahoo-IE7下载 64:仿QQ消息弹出广告效果下载 65:不可阻止的退弹代码演示下载 66:网易顶部展出的大幅广告下载 67:包含flash的通栏滚动banner下载 68:MiniTabbedPages雅虎TAB下载 69:FLASH图片轮换播放器下载 70:flash+xml图片轮换效果下载 71:调用灵活的flash焦点图轮换下载 72:附带缩略图的JS图片轮换下载 73:可翻阅上一条下一条滚动下载 74:MSN左上角flash伸缩广告下载 75:雅虎社区4屏焦点轮换下载 76:搜狐娱乐flash焦点图广告下载 77:FLASH+XML迅雷影片广告特效下载 78:韩国购物网FLASH滚动广告下载 79:Flash+XML滚动新闻代码下载 80:西安腾讯网flash焦点广告下载 81:四屏flash图片轮换代码下载 82:图片渐变轮换焦点图效果下载 83:CSS写的图片滚动下拉广告下载 84:MSN超酷flash图片轮换下载 85:沪江英语网3图弹性广告下载 86:SOHU体育flash图片轮换下载 87:MSN频道4屏新闻广告效果下载 88:用层实现的滚动条效果下载 89:迅雷网七屏flash广告轮换下载 90:奥林匹克运动会焦点广告下载 91:一种选项卡样式广告代码下载 92:网站页首可关闭广告条下载 93:flash无限图片展示广告下载 94:电子杂志首页flash焦点图下载 95:Zcom电子杂志flash焦点图下载 96:flash滑动焦点图广告代码下载 97:9格FLASH图片广告代码下载 98:MSN健康频道CSS标准焦点图下载 99:JS带缩略图的5屏轮换广告下载 100:JS4屏焦点图轮换代码下载 101:索尼中国Flash+Xml广告 下载 102:弹性菜单样式的图片展示 下载 103:带摘要的Flash图片代码下载 104:JS图片卷帘门效果下载 105:3d图片墙flash+xml 下载 106:360度旋转展示flash+xml 下载 107:带翻页的JS图片切换效果 下载 108:J
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值