(转载请注明:http://zhutty.cnblogs.com, 交流请加群:164858883)

可能在大部分人来讲,前端就是可见的页面数据呈现正确就行。然而这样是不正确的,页面呈现是一部分,更多的是整体的可维护性。本篇讲述的主题就是应用后端开发思想进行前端开发。

后端开发,使用最广的就是java语言,而java给人的第一印象就是面向对象。面向对象的特性就是:封装,继承,多态。在实现面向对象过程中,很自然会产生MVC模型,以及分层结构:UI(视图接口), BLL(业务逻辑), DAO(数据访问)。

在前端开发如何做到 MVC和系统分层??

先举一个反例:在某直播项目中,有这样一个业务:有单一的展示窗口,里面展示的数据有以下4种:

a:xx 给 xx 送了xx礼物, 
b: xx 给 xx送了 xx置顶礼物, 
c: xx 在xx房间玩xx游戏中获得了xx宝物, 
d:xx在xx房里抽奖抽中了xx。

这里的动作是一样的,点击前者时,如果不是自己就弹出信息窗,是自己则跳转到自己的个人中心,点后者,弹出房间信息。现在bug来了:

a:赠送的置顶礼物时,前面的程序猿把主播和送礼物这id设置反了,弹窗信息和名称不一致了; 
b: 用户玩游戏时,弹出窗口的信息是用userId去查,而其他弹窗信息用的是kugouId去查,所以,弹出用户信息报错。 去查代码,我崩溃了,四个不同的js在在操控这一个dom。 如图所示,四个js都处理了dom的填装,并处理了相关的弹出用户信息的窗口。

这种方案的弊端: 1、如果ui有改变的时候,我要去4个js文件中找到$('#id').html('<>')把li字符串改变四次,并且改动是相同的。 
2、弹出窗口效果需要改四次。 
3、一个接口返回后端字段改变的时候,需要改变一个js时考虑其他js的影响,这就是bug b所述,前面开发者将后端的userID放在data-kuId属性值中,弹窗查询接口依赖于data-kuId这个值,所以弹窗中的用户信息获取不到。

更优雅的方式-MVC + 系统分层: 1、ui层为html,负责直接呈现效果。 
2、Controller 负责与UI唯一对应,所有操作UI效果数据由控制器负责。 
3、Model 为数据模型,与控制器相对应,可以写在一个文件,控制器多个方法可以操作模型数据。 
4、service 服务层,负责与后端进行数据交互,封装供控制器使用方法,以及和后端数据交互路由地址等。

优势:

A: 当其他模块需要引入次模块时,只需要调用控制器提供的方法即可。 
B: 当UI发生变化时,只需要改控制器即可,与其他引入此某块相关代码不需要改动。 
C: 当后端接口发生变化时,比如参数名,或者路由发生变化,只需要改动服务层代码即可,与其他调用模块无关。 
D: 代码独立存在,对其他业务没有影响,可扩展性可维护性极高。

Thinking In Web [原创作品]的更多相关文章

  1. [原创作品] web项目构建(一)

    今天开始,将推出web项目构建教程,与<javascript精髓整理篇>一并更新.敬请关注. 这篇作为这一系列开头,主要讲述web项目的构建技术大全.在众多人看来,web前端开发无非就是写 ...

  2. [原创作品]web网页中的锚点

    因为近来在从事web前端开发的工作,所以写的文章也都是关于web这一块.以后将分享算法和web高级编程的内容,很多公司的web前端不够重视,以为是很low-level,给的待遇也很一般,其实,这都是很 ...

  3. [原创作品] javascript 实现的web分页器原理

    很久没有写博客了,因为最近忙于一些杂七杂八的事情.不过,互联网的价值在于信息共享,因为共享,所以互联网才能飞快发展.博主建了一个技术共享qq群:164858883,因为目前人数还比较少,活跃度还不是很 ...

  4. [原创作品] RequireJs入门进阶教程

    最近我发现RSS采集数据是个很好玩的东西,就是可以直接把别人的数据放在自己的网站上.如果网友们在其他地方发现这篇文章,还是来博客园看吧(http://zhutty.cnblogs.com).这样代码比 ...

  5. [原创作品] 对获取多层json值的封装

    今天篇头不废话了,交流加群:164858883 在我们接收后端返回的json数据的时候,在数据缺失的时候,如果直接接收会导致致命错误的发生.可能有些同学会说通常都会有,不用判断直接获取也行.之前我也是 ...

  6. [原创作品]手把手教你怎么写jQuery插件

    这次随笔,向大家介绍如何编写jQuery插件.啰嗦一下,很希望各位IT界的‘攻城狮’们能和大家一起分享,一起成长.点击左边我头像下边的“加入qq群”,一起分享,一起交流,当然,可以一起吹水.哈,不废话 ...

  7. [原创作品]观察者模式在Web App的应用

    (转载请注明:http://zhutty.cnblogs.com, 交流请加群:164858883) 在软件工程中,有一条重要的原则就是:高内聚低耦合.这是评定软件的设计好坏的一个标准.所谓高内聚,指 ...

  8. [ay原创作品]用wpf写了个模仿36Kr网站登录背景的效果

    这里我借鉴了,上周比较火的一个前端文章,人家用js去写的,地址 自己用wpf也写了一个,但是它的  粒子比较,然后连线算法真的很差,他创建了一个加入鼠标点的集合,2个集合进行比较,并且粒子会向鼠标靠近 ...

  9. [原创作品] Express 4.x 接收表单数据

    好久没有写博客,从现在开始,将介绍用nodejs进行web开发的介绍.欢迎加群讨论:164858883. 之前的express版本在接收表单数据时,可以统一用res.params['参数名'],但在4 ...

随机推荐

  1. Tomcat 加入windows 服务自启动设置

    基于J2ee技术开发,可以运行在Tomcat.weblogic.websphere等J2ee应用服务器上,对于一般访问量不是很高的客户我们推荐使用Tomcat(开源免费),一般情况下Tomcat服务需 ...

  2. JS类百度的动态提示框思路及完成

    参考的代码来自这里: http://www.jb51.net/article/28075.htm 不过说实话,这个网站太烂了,不适合看代码,另外写代码的人是个大牛,但是却没有模块化思想,所以朕不高兴直 ...

  3. linux的make install命令

    tar zxvf redis-2.8.15.tar.gz cd redis-2.8.15/ make make test make install

  4. php数组操作函数

    array 详解PHP ob_start()函数的功能要点 http://developer.51cto.com/art/200912/166834.htm http://blog.csdn.net/ ...

  5. Cookies欺骗分析与防护

    今天来谈谈cookies欺骗是怎么回事以及如何避免. 用户在登录之后通常会保存用户信息,以便在其他需要权限的页面去验证用户信息是否具有访问权限. 有同学说我在登录的时候已经很注意SQL注入问题了,还有 ...

  6. 破解Windows Server 2003只允许3个用户远程登陆

    导读:WIN2003在使用远程桌面登录的时候,一台机器默认情况下只允许3个用户同时登录. 这很不方便.我们修改WIN2003远程桌面的连接数,可以设置3个以上用户远程桌面. 1.启动终端服务:在&qu ...

  7. json数据返回

    <script type="text/javascript"> function xmlpage(){ var xhr=new XMLHttpRequest(); xh ...

  8. android 样式开发

    1. Android的样式一般定义在res/values/styles.xml文件中,其中有一个根元素<resource>,而具体的每种样式定义则是通过<resource>下的 ...

  9. 高放的c++学习笔记之类

    类的基本思想是数据抽象和封装1.this 成员函数通过一个名为this的额外隐式参数来访问调用它的对象,当我们调用一个函数的时候,用请求该函数的对象的初始化this. 如果某个类的名字为sale,某个 ...

  10. Java中的List(转)

    List包括List接口以及List接口的所有实现类.因为List接口实现了Collection接口,所以List接口拥有Collection接口提供的所有常用方法,又因为List是列表类型,所以Li ...