Web前端开发解耦1
在网站建设的工作中,Web前端工程师占据着非常重要的位置,好的前端工程师保证了良好的网站优化以及友好的用户体验。今天佚站互联主要分享一下对于Web前端开发规范的一些见解。
学过面向对象编程的朋友应该都知道,好的代码应当讲究两个标准:代码结构间高聚合、低耦合的关系,关于聚合我们暂不展开,在这里主要分享解耦在Web前端开发中的具体应用,希望对感兴趣的朋友有所帮助。
众所周知,前端开发过程中不可避免地要接触三样代码,它们分别是HTML、CSS、JavaScript(以下简称JS),在笔者的学习与开发过程中发现,很多人对于这三种代码的使用并不特别规范,往往是想到什么用什么,不规范代码带来的后果就是对于团队合作开发非常不友好,并且在后期的扩展维护中带来很多不必要的麻烦。如何更规范地编写相应代码,做到逻辑、结构与表现形式之间的解耦,这是前端代码师应该掌握的一项技能。
三样代码各司其职
按照自身分工来看,HTML代码掌管前台整体的文档结构与内容,以造楼为例,HTML就是整个页面的钢筋水泥,页面上有几个模块,每个模块布局如何,有什么内容,都应该由HTML来主管,很久以前的Web开发主要使用Table进行布局,但是到了Web2.0之后,越来越多的人喜欢用DIV进行布局,不管使用哪种HTML元素,都没有离开它的本质。所以,HTML应该是掌管页面文档结构与内容的一类代码。
CSS的学名是“层叠样式表”,顾名思义,它应该是主管样式的,就如整个页面哪里应该是什么颜色,放什么背景,多大的字体等等,它不应该涉及到任何的逻辑与页面结构内容。所以,CSS应该是掌管页面样式的一类代码。
JS是非常灵活轻巧的面向对象脚本语言,如果以楼房为例,它就好比是墙上的开关,按下它应该做什么操作,是亮灯还是做其他事情,如果是亮灯那它亮的是哪盏灯。放在Web前端开发中来说,比如点击某个按钮应该触发什么事件,是弹出对话框还是提交表单,是变换样式还是移动位置,这都是JS需要考虑的,与另外两种代码无关,换句话说,JS在Web前端开发中的角色就是掌管逻辑的。
综上所述,在Web前端开发中,HTML是主管页面文档结构与内容的、CSS是主管页面元素样式表现的、JavaScript是主管交互逻辑的。
具体实例分析
在上面部分我们分析了这三类代码在Web前端开发中所扮演的角色与所担任的职责,那么具体应该怎么使用呢?
我们以最简单的DIV变化为例,为了编写方便,这里引入jQuery。
案例说明:点击一个黑底白字内容为“Demo”的DIV,将DIV变为红底黑字,内容变为“Hello Benz”。
没有解耦的代码编写:
HTML代码:
<div id="demo">Demo</demo>
CSS代码:
#demo { width:200px; height:50px; color: white; background: black; }
jQuery代码:
$(document).ready(function() { $("#demo").click(function() { $(this).css({ "color" : "black", "background" : "red" }) .text("Hello Benz"); }); });
案例分析:
上面的例子非常简单,这也是很多人喜欢用的编写方式,因为方便快捷,但是却并不太符合解耦思想。
问题主要的原因在于JS,很多人为了图方便,把很多文档结构内容以及CSS样式都写在了JS中,对于这种写法,笔者认为欠妥,因为JS是主管逻辑的,不应该把文档结构内容以及样式表现这些职责都强加于它。
解耦的代码编写:
HTML代码:
<div id="demo" data-changed="Hello Benz">Demo</demo>
CSS代码:
#demo { width:200px; height:50px; color: white; background: black; }
#demo.changed { color: black; background: red; }
jQuery代码:
$(document).ready(function() { $("#demo").click(function() { var dataChanged = $(this).attr("data-changed"); $(this).addClass("changed") .text(dataChanged); }); });
案例分析:
在这个修改过的代码中我们可以发现,三种代码之间的关系非常清晰。
1.HTML主管文档结构(点击DIV后变成的内容为“Hello Benz”),将文档结构内容放在自定义属性“data-changed”里,方便JS获取。
2.定义了新的样式changed,在点击DIV后DIV将会变化成怎样都由CSS来决定。
3.JS只负责“点击DIV后DIV的样式变成changed,文档结构内容变成data-changed”这两个逻辑,至于变成怎样,内容如何,JS一概不参与。
这样解耦的好处在于,如果你想要对某个特定交互样式或者内容进行修改,你不必在JS中苦苦寻找,只需要知道修改哪个样式,修改哪个文档结构内容,就能迅速完成。如果你想要修改这个交互的逻辑,你只需要对JS的逻辑进行修改,不会对文档结构内容以及样式有任何影响。
Web前端开发解耦1的更多相关文章
- 淘宝前端工程师:国内WEB前端开发十日谈
一直想写这篇"十日谈",聊聊我对Web前端开发的体会,顺便解答下周围不少人的困惑和迷惘.我不打算聊太多技术,我想,通过技术的历练,得到的反思应当更重要. 我一直认为自己是" ...
- Web前端开发十日谈
=========================================================================== 原文章: http://kb.cnblogs.c ...
- 《编写高质量代码--Web前端开发修炼之道》读书笔记
前言 这两周参加公司的新项目,采用封闭式开发(项目成员在会议室里开发),晚上加班到很晚,所以没时间和精力写原创博客了,今天就分享下这篇<编写高质量代码--Web前端开发修炼之道>读书笔记吧 ...
- 绝对精品推荐做前端的看下:Web前端开发体会十日谈
20151208感悟: 前端人的角度来看的话,感觉像是阅读一个大牛前端的全部武功的一个秘籍说明,里面的思想高价值蛋白真是太多太多,推荐看. Web前端开发体会十日谈 一直想写这篇“十日谈”,聊聊我对W ...
- web前端开发分享-目录
1. web前端开发分享-css,js入门篇 2. web前端开发分享-css,js进阶篇 3. web前端开发分享-css,js提高篇 4. web前端开发分享-css,js工具篇 5. web前端 ...
- Web 前端开发精华文章推荐(jQuery、HTML5、CSS3)【系列十二】
2012年12月12日,[<Web 前端开发人员和设计师必读文章>系列十二]和大家见面了.梦想天空博客关注 前端开发 技术,分享各种增强网站用户体验的 jQuery 插件,展示前沿的 HT ...
- 用grunt搭建web前端开发环境
1.前言 本文章旨在讲解grunt入门,以及讲解grunt最常用的几个插件的使用. 2.安装node.js Grunt和所有grunt插件都是基于nodejs来运行的,如果你的电脑上没有nodejs, ...
- 4. web前端开发分享-css,js工具篇
web前端开发乃及其它的相关开发,推荐sublime text, webstorm(jetbrains公司系列产品)这两个的原因在于,有个技术叫emmet, http://docs.emmet.io, ...
- web前端开发学习内容
应该 具备的 知识技能 :懂web标准,熟练手写 xhtml css3 并符合 符合w3c标准 代码能 兼容主流浏览器.ie6.7.8.9 ff 等. ...
随机推荐
- CA证书申请+IIS配置HTTPS+默认访问https路径
引用别人博文内容:https://www.cnblogs.com/lichunting/p/9274422.html 一.CA证书申请 (一). 新StartSSL注册帐号 1. StartSS ...
- 基于redis的高并发秒杀的JAVA-DEMO实现!
在Redis的事务中,WATCH命令可用于提供CAS(check-and-set)功能.假设我们通过WATCH命令在事务执行之前监控了多个Keys,倘若在WATCH之后有任何Key的值发生了变化,EX ...
- Swift基础知识点的学习
每一个程序员都有一颗不满足当下知识的学习,学习Swift更是每一个iOS程序员必学技能!!! 一说道基础点的学习,当然涵盖的方面也是很多很多啦....然而每一个小知识点的学习,写一个博客,我也觉得没什 ...
- jinja2渲染使用
说明:通过jinja2渲染后只能打印出来效果,目前无法保存 例1:渲染 .j2 文件 1.安装jinja2模块 pip3 install jinja2 2.定义模板 说明:变量必须是小写,大写有的情况 ...
- java:Linux(简单命令,远程ssh使用hostname访问,.免密钥登录配置)
1.临时关闭防火墙: service iptables stop 临时开启防火墙: service iptables start 查看防火墙状态: service iptables sta ...
- Unreal Engine 4 优化教程
本教程旨在帮助开发人员提升基于虚幻引擎(Unreal Engine*4 (UE4))开发的游戏性能.在教程中,我们对引擎内部及外部使用的一系列工具,以及面向编辑器的最佳实践加以概述,还提供了有助于提高 ...
- Htmlunit 设置缓存文件
起因:最近用Htmlunit爬取网页.demo运行起来后,发现速度相当慢,一直在不停的加载js文件,偶尔还会报错,js超时等.抓包工具看了一下请求,发现一直在不停的下载js文件.按理说请求过js文件后 ...
- PI膜概述
一.概述 1.简述 聚酞亚胺薄膜又称PI薄膜(polyimide filin)是一种含有酞亚胺或丁二酞亚胺的绝缘类高分子材料.是目前工程塑料中耐热性最好的品种之一. 2.发展简史 1908年,PI聚合 ...
- NoSQL--couchdb
Couchdb CouchDB是Apache组织发布的一款开源的.面向文档类型的NoSQL数据库.由Erlang编写,使用json格式保存数据.CouchDB以RESTful的格式提供服务可以很方便的 ...
- docker 使用阿里云免费仓库
阿里云为开发人员提供了免费的仓库~~ 登录阿里云 ,选择容器镜像服务,当前是2019/08/13 ,之后不知道阿里云控制台菜单会不会调整哈 进入容器镜像服务菜单,创建仓库,需要绑定git仓库 怎么上传 ...