今天同事的一句话给我留下深刻的印象:“前端也有MVC,DOM树就是这个M,CSS就是这个V,至于C,非JavaScript莫属”。
很高兴团队中有越来越多的人能够跳出某种语言、某种平台的局限性,站到抽象的层次上思考一些设计上的问题。在我的印象中,似乎前端开发总是容易给人以随意、混乱的感觉,可真的是前端技能不容易掌握吗?
“大学里Java课程正儿八经学了3年,JavaScript只字未提,只是课余时间凭借着兴趣自学,加起来也就两三个月。”
前端代码更加灵活,无论是HTML、JavaScript还是CSS,似乎任何一个初学者都可以轻松入门。可是越是看似简单的东西,就越难以精通地掌握,没有好的设计来引导,如果技能不过硬,很容易陷入混乱的困顿之中。
回到标题,来看看怎么从后端设计来类比前端设计。
一、模型和业务逻辑的分离:
写后台代码,模型层是很容易划分出来的,模型的建立是整体设计的第一步,美工在设计页面时,最关注一个页面最宏观的盒子模型;而Service层,适合存放业务逻辑,它们可以做到无状态和池化的。
前端开发呢,当JQuery或类似的框架出现以后,DOM模型就可以完全和业务方法分离开了,通过这样美妙的绑定代码来完成关联和解耦:
$("#userName").click(function(){
……
});
二、让视图层独立:
通常不要使用内联CSS和嵌入CSS,视图层要让经验丰富的美工管理起来。
三、找到一个合适的切面来做接口层:
还是这几行代码:
$("#userName").click(function(){
……
});
我们来换一个角度思考:
userName就好像是Java中的接口,click就好比是接口中的方法,如果这两个东西是既定不变的,接口的实现类当然可以随意更换了啊。
这个让我想起了Spring的IoC,把对象的管理和控制权交给容器去完成——那么在前端,就把这个权利交给了JQuery的绑定逻辑去完成。
如果功能类似的页面,要求更换几套不同的效果,那么保持一个清晰的接口层,围绕接口层去完成不同的实现模板,将是一个值得尝试的方式:
//实现类一:
$("userName").click(function(){
alert("U Click Me"); //模板一的实现
});
……
//实现类二:
$("userName").click(function(){
$("userTypeFont").attr("color","RED"); //模板二的实现
});
……
在这种情形下,接口层DOM的id和职责方法都被固定下来,开发人员可以按照接口开发、美工可以按照接口层在盒子模型中完善页面设计、测试可以按照接口来写自动化用例,这一切可美好多了!
四、针对接口来编排业务逻辑:
第三条已经建立了合适的接口层,那么相对固定的界面效果和逻辑,就可以通过桥接模式下对接口的引用来完成了。即便更换了关系到展现效果的模板,核心JavaScript都不会变化。
五、分离模板和数据:
模板和数据的整合,似乎是后端应该做的事,例如FreeMarker模板和数据的整合,最终形成页面。
现在,这件事情在前端也可以完成了:
(1)生成相对静态的模板:
<div id="userName">${user.userName}</div>
(2)Ajax获取到模板的数据:
{"user":{"name":"James"}}
(3) 浏览器端聚合,搞定最后的页面:
<div id="userName">James</div>
这样做的静态模板的很容易在缓存中命中,而数据的生成也非常灵活,最后,聚合是在客户端完成的,这方面对服务端没有压力,因此性能往往非常高。
六、归纳一下:抽象,是软件设计的核心艺术。即便前端设计,也一样。
文章系本人原创,转载请注明作者和出处
分享到:
相关推荐
【小学数学类比教学设计】 小学数学教学中的类比是一种有效的教学策略,它能帮助学生在已有知识的基础上理解和掌握新的数学概念。类比是探索数学真理的重要方法之一,与归纳法一起,它们促进了数学知识的发展。类比...
根据给定的信息,本文将详细解析“后端考公设计的资料笔记记录”中的关键知识点,特别是关于“判断推理”部分的内容。 ### 后端考公设计中的判断推理概述 在准备公务员考试的过程中,判断推理作为一门重要的科目,...
初始解产生阶段需要结合设计要求和工程师的经验知识,通过类比现有设计案例来形成新的设计方案。结构分析阶段则是应用数学模型,例如有限元计算,来分析设计模型并获得关键截面的内力和关键点位移等重要数据。最终,...
后端接入层技术是构建现代互联网系统的关键组成部分,它的主要职责是接收来自前端用户的请求,并将这些请求转发给后端逻辑层进行处理,最后将处理结果返回给用户。接入层扮演着流量入口的角色,具备流量调度、安全...
在前端工程中,分发器可以类比于后端框架中的控制器(Controller)。 实现依赖注入思想的前端开发可以带来许多好处,比如提高代码复用性、降低模块间耦合度、提升代码的可维护性和可测试性。但同时,依赖注入也会...
在《C语言程序设计》教学中,类比法的应用可以提高学生的编程能力和思考能力,使学生更容易理解抽象概念。 通过这篇论文,我们可以看到类比法在《C语言程序设计》教学中的重要性和实用性。作者通过实例展示了类比法...
基于javaweb的3d密室逃脱游戏前端和后端源码+项目说明.zip 场景: 代码中有两套完整的Threejs的场景布置,即THREE.Scene + Camera + Controls (用来自动更新Camera),两个场景共用renderer和canvas,相当于在canvas...
总之,小学数学类比教学设计是提升教学质量的有效途径,它强调知识的关联性,鼓励学生通过比较和联想来深化理解,同时促进他们的创造性思维和问题解决能力。教师在实际教学中应灵活运用类比,激发学生的学习兴趣,...
类比思想的核心在于将复杂或陌生的问题与已经理解的简单或熟悉的问题相联系,通过这种联系来找到解决问题的新途径。这种方法尤其适用于面对新问题、新挑战时,我们无法直接应用传统方法的情况。 首先,类比思想可以...
本文以《指向深度学习的单元教学设计的实践与思考——以“向量的概念及表示”为例》为题,讨论了如何通过单元教学设计来提高学生对数学概念的理解,特别是针对“向量的概念及表示”的教学实践与反思。 首先,文章...
机电类比法是一种将机械系统和电气系统进行比较和映射的方法,用于理解和设计复杂的电子系统,特别是传感器技术。这种方法通过将机械系统的行为与电气系统的等效行为相联系,简化了对传感器工作原理的理解和分析过程...
* 联想思维:是一种基于联想和类比的思维模式,强调凭借联想和类比来解决问题。 产品设计方法包括: * 基于理解产品与用户的创新技法 * 基于激发集体智慧的创新方法 * 基于开阔、发散思维的创新技法 * 基于借鉴...
总结来说,《现代机械设计理论与方法》这门课程不仅传授基本的机械设计知识,更注重培养学生的系统思考能力,运用各种现代设计理论和方法来解决实际工程问题。通过学习,学生将能够全面考虑产品的整个生命周期,进行...
设计思维是一种创新性的问题解决方法,它强调以人为本,结合逻辑分析和创造性思考,来开发新产品和服务。在设计程序中,几种关键的思维方法被广泛运用,包括联想法、列举法、集团发想法(头脑风暴法,635法)、仿生...
总的来说,类比推理是IT行业中一种强大的思考工具,通过它,开发者可以从已有的知识和经验中汲取灵感,解决新的挑战。无论是源码分析、工具使用,还是数学运算和逻辑推理的训练,都能帮助我们更好地运用类比推理来...
这种类比帮助科学家理解如何设计更安全的结构。 在数学建模中,类比方法的应用通常包括以下几个步骤: 1. **抽象分析**:首先,对实际问题进行深入分析,识别其关键要素和相互关系。 2. **联想与归纳**:接着,...
WebUI设计作业主要涵盖网页用户界面的设计原则、技巧与实践,是将视觉艺术、交互设计、用户体验和前端技术融合的综合性工作。在这个作业中,2011060414和201108024可能是两个不同阶段的设计稿或案例,代表着学习过程...
在教学实践中,教师需要有意识地设计类比的教案,创设具有问题性的情景,引导学生积极思考和类比,从而让学生在学习过程中主动建构知识的意义。 总之,类比法是一种行之有效的教学方法,尤其在《数据结构》这类抽象...
首先,提到的例题1.1(a)通过生物学家研究细胞的不同层级来类比数字设计的过程,即从微观的生物分子到宏观的细胞器官。它说明了研究者在研究任何一个抽象层级时,通常会关心该层级结构的构建方式以及如何构建这些结构...