JavaScript、jQuery、HTML5、Node.js实例大全-读书笔记1
技术很多,例子很多,只好慢慢学,慢慢实践!!现在学的这本书是【JavaScript实战----JavaScript、jQuery、HTML5、Node.js实例大全】
第 3 章 用 JavaScript 实现的照片展示
构建软件设计的方法有两种:一种是把软件做得很简单以至于明显找不到缺陷;另一种是把它 做得很复杂以至于找不到明显的缺陷。
——C.A.R.Hoare,1980 年图灵奖获得者
在这个自拍自恋的时代,照片是要展示的。在前面的章节里已经讲解了事件的绑定,本章主要利用前面的知识做一个照片展示的功能。
本章主要内容:
- 照片的加载
- 鼠标的响应
- 键盘的响应
3.1 功能设计
功能设计的时候可能需要反复修改,以什么为标准呢?听老板的还是听用户的?虽然这是一个 顾客是上帝的时代,但终究还是有些设计原则要遵循,因为有时候“上帝”也会犯错误,更多的时候“上帝”是善变的。
(1)避免重复原则(DRY,Don’t repeat yourself),编程的最基本原则是避免重复,另一句 话说叫提高代码复用率。
(2)简单原则(Keep ItSimple and Stupid),简单是用户最佳体验之一,像苹果就是用简单 打败一切。而且简单的代码占用时间少,漏洞少,并且易于修改。
(3)低耦合原则(MinimizeCoupling),即这部分代码的使用和修改影响到其他部分的代码 尽可能的少,否则牵一发而动全身的悲剧无人愿意看到。
(4)别让我思考(Don’t make me think),代码不仅是写给机器的,更多是写给人看的,所以编写的代码一定要易于读易于理解,最终才易于维护。“如果一个维护者不再继续维护你的代码,
很可能他是有想杀了你的冲动。”
(5)单一责任原则(Single Responsibility Principle) ,某个代码的功能,应该保证只有单一的明确的执行任务,否则一旦修改会增加关联测试的繁琐程度。
(6)最大限度凝聚原则(Maximize Cohesion),尽量将功能相似相近的代码放在同一个部分。
程序中常听到的“类”这个词就取之于“物以类聚”,类就是为了“类聚”相似相近的代码。
(7)避免过早优化(AvoidPremature Optimization),现在社会到处都有“完美主义者”,如 果代码运行没有想象中的慢,就别去“完美”它,否则要花费更多的代价,或时间的或精力的或金钱的。
3.1.1 HTML、CSS 和 JavaScript 的分层关系
通过第 1 章的了解,HTML 是最早出来的,CSS和 JavaScript则稍晚出现。它们实质上的关系 应该是如图 3-1 所示。
图 3-1 UI 分层关系结构
看到这里似乎应该思考下前面的范例是否有“重构”的空间?答案是肯定的,笔者在写到第 2章时,本书编辑就很有意见地说:“咋这个代码这么长呢?能不能拆分成几块呢?„„”。 重构原因之一就是代码是否便于阅读。如果在设计时一开始就考虑进去,这会使后期的维护工作变得相对便捷,找 HTML 代码的就直接找 html 文件,找 JavaScript 代码的就直接找 js 文件,找CSS 代码的就直接找 css 文件。
将 JavaScript 和 HTML分离是前端必须要做的一种事。JavaScript 诞生是要让 HTML 更丰富, 而不是更杂乱。混合在一起会导致:bug 跟踪工具难以调试。随着分工更细分,写 HTML 的人不 一定要负责写 JavaScript。 CSS 和 HTML 一般也是分离的,不过这大都是网页设计师或者叫前端重构工程师的任务了。 另外保持 CSS 和 JavaScript 之间清晰的分离是很有挑战的,例如第 2 章的范例有控制 style.width的,还有控制 style.display 的,是否需要完全分离这确实需要具体情况具体分析,不过如果完全不注意这一点,任由其发展,一旦出现问题,大家首先去找 CSS,精疲力尽时才会去 JavaScript 中查 找样式问题,这会给维护人员挖下很大一个坑,做人一定要厚道!
3.1.2 照片展示功能设计
163 是国内早期提供相册功能的公司之一,相册用户群体很大,参考其相册会发现,照片展示 的基本功能如下:
- 有大图和缩略图
- 有上一张图和下一张图切换
- 有键盘控制显示上一张图和下一张图
- 有显示上一组和下一组功能在代码方面,考虑代码 3 层分离。
代码方面,考虑代码 3 层分离。
今天就先介绍到这里吧,有一起学习的小白们,欢迎粉我。
最具士兵突击实战类型的JavaScript
JavaScript实战一书的基础知识部分帮助读者快速踏入JavaScript领域之门,jQuery部分帮助读者随心所欲地去工作,HTML5部分帮读者搭上时代的班车,Node.JS则可以让读者屹立在技术的前沿。笔者的目的就是力求写出最懂人性最懂技术的JavaScript书。
JavaScript、jQuery、HTML5、Node.js实例大全-读书笔记1的更多相关文章
- JavaScript、jQuery、HTML5、Node.js实例大全-读书笔记3
技术很多,例子很多,只好慢慢学,慢慢实践!!现在学的这本书是[JavaScript实战----JavaScript.jQuery.HTML5.Node.js实例大全] JavaScript.jQuer ...
- JavaScript、jQuery、HTML5、Node.js实例大全-读书笔记2
技术很多,例子很多,只好慢慢学,慢慢实践!!现在学的这本书是[JavaScript实战----JavaScript.jQuery.HTML5.Node.js实例大全] JavaScript.jQuer ...
- JavaScript、jQuery、HTML5、Node.js实例大全-读书笔记4
5.2.2 让瀑布流动起来 打好基建之后,就需要写JavaScript代码.首先如果数据不够显示一屏幕的情况,就用新数据来补足它,在补充的时候是根据4列中最矮的那一个为优先补充,因为高矮尺寸一般只有在 ...
- Node.js高级编程读书笔记Outline
Motivation 世俗一把,看看前端的JavaScript究竟能做什么. 顺便检验一下自己的学习能力. Audience 想看偏后台的Java程序员关于前端JavaScript的认识的职业前端工程 ...
- node.js开发指南读书笔记(1)
3.1 开始使用Node.js编程 3.1.1 Hello World 将以下源代码保存到helloworld.js文件中 console.log('Hello World!'); console.l ...
- Node.js 开发指南-读书笔记
1. Node.js 使用了单 线程.非阻塞的事件编程模式 Node.js 最大的特点就是采用异步式 I/O 与事件驱动的架构设计.对于高并发的解决方 案,传统的架构是多线程模型,也就是为每个业务逻辑 ...
- Node.js高级编程读书笔记 - 4 构建Web应用程序
Outline 5 构建Web应用程序 5.1 构建和使用HTTP中间件 5.2 用Express.js创建Web应用程序 5.3 使用Socket.IO创建通用的实时Web应用程序 5 构建Web应 ...
- Node.js高级编程读书笔记 - 6 应用程序构建和调试 - Never
Explanation 现阶段console.log(...),util.inspect(...), JSON.stringify(...)在控制台输出已经够用了[2015/07/19]. 单元测试隶 ...
- Node.js高级编程读书笔记 - 1 基本概念
Outline 1 概述和安装 1.1 安装Node 1.2 Node简介 2 Node核心API基础 2.1 加载模块 2.2 应用缓冲区处理.编码和解码二进制数据 2.3 使用时间发射器模式简化事 ...
随机推荐
- Android Camera
Android调用系统api使用照相机功能,实现拍照获取图片以及从照相机库中获取指定图片的功能. 下面是演示样例代码: <?xml version="1.0" encodin ...
- Android文件选择器的实例分享
本文给大家讲解下Android文件选择器的使用.实际上就是获取用户在SD卡中选择的文件或文件夹的路径,这很像C#中的OpenFileDialog控件. 此实例的实现过程很简单,这样可以让大家快速的熟悉 ...
- PHP 更高效的字符长度判断方法(转)
今天看到有人说,在做字符串长度判断的时候,有个比strlen效率更高的方法.即: $str = ‘aaaaaa’; ) VS }) 晚上自己用例子简单测试下,情况基本属实,特此记录下.后者效率几乎是前 ...
- 十六款值得关注的NoSQL与NewSQL数据库--转载
原文地址:http://tech.it168.com/a2014/0929/1670/000001670840_all.shtml [IT168 评论]传统关系型数据库在诞生之时并未考虑到如今如火如荼 ...
- CentOS 安装中文输入法
转载:http://blog.sina.com.cn/s/blog_9f1c093101019h03.html centos 6.3用yum安装中文输入法 1.需要root权限,所以要用root登录 ...
- python之装饰器详解
这几天翻看python语法,看到装饰器这里着实卡了一阵,最初认为也就是个函数指针的用法,但仔细研究后发现,不止这么简单. 首先很多资料将装饰器定义为AOP的范畴,也就是Aspect Oriented ...
- 2012第二届GIS制图大赛——公开课技术问题&答疑(珍贵资源哦!)(http://blog.csdn.net/arcgis_all/article/details/8216984)
本次制图大赛培训的公开课结束后,我们把所有技术问题收集并进行统一解答,现将这些资料在博文中分享. 由于这些问题涉及了制图技术中较多普遍性的内容,因此是非常珍贵的资源,希望能对大家有帮助. ——符号及符 ...
- QUI操作超时弹出登录窗口登录的处理方式
在使用QUI开发的业务系统中,如果长时间没操作,session过期后,再次操作系统超时会自动跳转到登陆页面,如果当前有一些操作没有保存,需要重新登录后再次填写信息,用户体验很不好! 为了避免超时后页面 ...
- 给jdk写注释系列之jdk1.6容器(2)-LinkedList源码解析
LinkedList是基于链表结构的一种List,在分析LinkedList源码前有必要对链表结构进行说明. 1.链表的概念 链表是由一系列非连续的节点组成的存储结构,简单分下类的话,链 ...
- H.264编码之IDCT变换原理
上次讲到了DCT变换的推导过程,这次主要给大家讲下IDCT反变换的推导过程.建议大家先看上次讲的DCT变换公式推导过程.这样在看这篇文章时会容易很多!话不多说,让我们开始IDCT的旅程吧! IDCT反 ...