描述
开 本: 16开纸 张: 胶版纸包 装: 平装-胶订是否套装: 否国际标准书号ISBN: 9787121326806
主要讲解jQuery、AngularJS、Bootstrap这三个常用的前端框架,并针对每个框架都提供了实用的案例,让读者理论联系实际。
本书提供两个综合案例,综合利用了jQuery、AngularJS、Bootstrap前端开发技术,并在后端采用了极为流行、规范的轻量级Java EE架构:控制器层->业务逻辑层->数据持久化层。
书中案例对实际项目具有极好的指导价值和借鉴意义。
案例既提供了IDE无关的、基于Ant管理的项目源码,也提供了基于Eclipse IDE的项目源码,极大限度地满足读者的需求。
1.1 重新思考Web应用 2
1.1.1 应用系统的发展史 2
1.1.2 传统Web应用的优势和缺点 3
1.2 重新设计Web应用 4
1.2.1 富Internet应用 4
1.2.2 改进的服务器通信 5
1.2.3 丰富的客户端交互 6
1.3 前端开发介绍 7
1.3.1 XMLHttpRequest简介 7
1.3.2 前端开发的核心技术 7
1.3.3 前端Ajax的特征 9
1.3.4 Ajax带来的优势 10
1.4 前端开发体验:Ajax聊天室 11
1.4.1 实现业务逻辑组件 12
1.4.2 注册、登录控制器 15
1.4.3 注册、登录视图 16
1.4.4 异步发送请求 17
1.4.5 聊天控制器 18
1.4.6 解析服务器响应 21
1.4.7 何时发送请求 21
1.5 前端开发的技术难点 24
1.6 本章小结 25
第2章 HTML 5增强的XMLHttpRequest对象 26
2.1 XMLHttpRequest对象的方法和属性 27
2.1.1 XMLHttpRequest对象的方法 27
2.1.2 XMLHttpRequest对象的属性 30
2.2.3 XMLHttpRequest对象的事件 32
2.2 发送请求 33
2.2.1 发送简单请求 33
2.2.2 发送GET请求 34
2.2.3 发送POST请求 36
2.2.4 发送XML请求 37
2.2.5 发送表单数据 40
2.2.6 发送Blob对象 42
2.3 处理响应 44
2.3.1 处理响应的时机 44
2.3.2 使用文本响应 44
2.3.3 使用JSON响应 45
2.3.4 使用Blob或ArrayBuffer响应 48
2.4 XMLHttpRequest对象的运行周期 50
2.5 跨域请求和安全性问题 50
2.5.1 跨域请求 50
2.5.2 安全性问题 53
2.5.3 性能问题 54
2.6 本章小结 56
第3章 jQuery库详解 57
3.1 jQuery入门 58
3.1.1 理解jQuery的设计 58
3.1.2 下载和安装jQuery 59
3.1.3 让jQuery与其他JavaScript库共存 60
3.2 获取jQuery对象 61
3.2.1 jQuery核心函数 61
3.2.2 jQuery与jQuery.holdReady 62
3.2.3 以CSS选择器访问DOM元素 63
3.2.4 以伪类选择器访问DOM元素 65
3.2.5 表单相关的选择器 70
3.3 jQuery操作类数组的工具方法 72
3.3.1 过滤相关方法 74
3.3.2 仿DOM导航查找的相关方法 76
3.3.3 串联方法 78
3.4 jQuery支持的方法 79
3.4.1 jQuery命名空间的方法 80
3.4.2 数据存储的相关方法 83
3.4.3 操作属性的相关方法 84
3.4.4 操作CSS属性的相关方法 86
3.4.5 操作元素内容的相关方法 89
3.4.6 操作DOM节点的相关方法 90
3.5 jQuery事件相关方法 96
3.5.1 绑定事件处理函数 96
3.5.2 特定事件相关的方法 98
3.5.3 事件对象 99
3.6 动画效果相关的方法 100
3.6.1 简单动画和复杂动画 100
3.6.2 操作动画队列 103
3.7 jQuery的回调支持 104
3.7.1 回调支持的基本用法 104
3.7.2 创建Callbacks对象支持的选项 106
3.8 Ajax相关方法 108
3.8.1 三个工具方法 108
3.8.2 使用load方法 109
3.8.3 jQuery.ajax(options)与jQuery.ajaxSetup(options) 111
3.8.4 使用get/post方法 112
3.9 jQuery的Deferred对象 115
3.9.1 jQuery的异步调用 115
3.9.2 为多个耗时操作指定回调函数 119
3.9.3 为普通对象增加Defered接口 119
3.9.4 jQuery对象的promise方法 120
3.10 扩展jQuery和jQuery插件 121
3.11 本章小结 122
第4章 基于jQuery的应用:电子相册系统 123
4.1 实现持久层 124
4.1.1 实现持久化类 124
4.1.2 配置SessionFactory 126
4.2 实现DAO组件 127
4.2.1 开发通用DAO组件 127
4.2.2 DAO接口定义 130
4.2.3 完成DAO组件的实现类 131
4.3 实现业务逻辑层 132
4.3.1 实现业务逻辑组件 132
4.3.2 配置业务逻辑组件 134
4.4 实现客户端调用 135
4.4.1 访问业务逻辑组件 135
4.4.2 处理用户登录 136
4.4.3 获得用户相片列表 138
4.4.4 处理翻页 140
4.4.5 使用jQuery实现文件上传 141
4.4.6 加载页面时的处理 144
4.5 本章小结 145
第5章 AngularJS详解 147
5.1 AngularJS入门 148
5.1.1 理解AngularJS的基本设计 148
5.1.2 下载和安装AngularJS 149
5.2 表达式 150
5.2.1 简单表达式 150
5.2.2 复合对象表达式 151
5.2.3 AngularJS表达式的容错性 152
5.2.4 AngularJS表达式与JavaScript表达式 152
5.3 模块与控制器 153
5.3.1 模块的加载 153
5.3.2 控制器初始化$scope对象 155
5.3.3 $rootScope作用域 157
5.3.4 $watch方法的使用 158
5.4 过滤器 159
5.4.1 内置过滤器 159
5.4.2 在表达式中使用过滤器 160
5.4.3 在指令中使用过滤器 162
5.4.4 自定义过滤器 162
5.5 函数API 164
5.5.1 扩展型函数 164
5.5.2 jqLite函数 168
5.5.3 判断型函数 169
5.6 指令 170
5.6.1 表单相关的指令 170
5.6.2 表单的输入校验 175
5.6.3 事件相关的指令 178
5.6.4 流程控制相关的指令 179
5.6.5 绑定相关的指令 183
5.6.5 DOM及DOM状态相关指令 187
5.6.6 自定义指令 193
5.6.7 自定义指令的scope属性 195
5.6.8 自定义指令的transclude属性 197
5.6.9 自定义指令的link和compile属性 198
5.6.10 自定义指令的controller和controllerAs属性 202
5.6.11 自定义指令的require属性 203
5.7 调用内置服务 205
5.7.1 $animate服务 205
5.7.2 $cacheFactory服务 207
5.7.3 $compile服务 209
5.7.4 $document、$window、$timeout、$interval和$rootElement 211
5.7.5 $parse服务 214
5.7.6 $interpolate服务 214
5.7.7 $log服务 215
5.7.8 $q服务 216
5.7.9 $templateCache服务 218
5.8 自定义服务 219
5.8.1 使用factory()方法创建自定义服务 219
5.8.2 使用service()方法创建自定义服务 220
5.8.3 使用provider()方法创建自定义服务 221
5.8.4 使用$provide服务创建自定义服务 223
5.8.5 在过滤器中使用自定义服务 225
5.9 依赖注入 226
5.9.1 依赖注入机制简介 226
5.9.2 使用$injector对象获取组件 228
5.9.3 隐式依赖注入 230
5.9.4 行内数组式依赖注入 230
5.9.5 标记式依赖注入 231
5.10 与服务器交互 232
5.10.1 $http服务 232
5.10.2 $http的快捷方法 235
5.10.3 使用$http上传文件 237
5.10.4 使用$resource服务 239
5.11 多视图和路由 240
5.11.1 使用$routeProvider配置路由规则 240
5.11.2 创建多视图 242
5.11.3 通过路由切换视图 244
5.11.4 使用$location实现多视图切换 246
5.12 使用ui-router框架实现多视图 248
5.12.1 ui-router的下载和安装 248
5.12.1 使用$stateProvider配置路由 248
5.12.2 多视图切换与$state 250
5.12.3 多个命名的嵌套视图 252
5.13 本章小结 255
第6章 Bootstrap全局样式 256
6.1 Bootstrap 257
6.1.1 Bootstrap简介 257
6.1.2 下载和安装Bootstrap 257
6.2 网格布局 260
6.2.1 网格布局基础 261
6.2.2 多余的列另起一行 264
6.2.3 响应式列重置 264
6.2.4 单元格偏移 266
6.2.5 单元格排序 267
6.2.6 嵌套网格 268
6.3 Less和mixin 269
6.3.1 Less简介 269
6.3.2 Less的两种用法 270
6.3.3 Less的变量和运算符 274
6.3.4 mixin 274
6.3.5 内嵌规则 275
6.3.6 Bootstrap网格系统的变量和mixin 276
6.4 Bootstrap排版相关样式 278
6.4.1 标题元素和样式 278
6.4.2 段落 279
6.4.3 增强的HTML元素 280
6.4.4 对齐 282
6.4.5 改变大小写 283
6.4.6 列表 283
6.5 表格相关样式 286
6.5.1 基础表格 286
6.5.2 条纹表格 287
6.5.3 边框表格 287
6.5.4 鼠标高亮 288
6.5.5 紧凑型表格 289
6.5.6 响应式表格 289
6.5.7 表格行状态 290
6.6 图片和图标 291
6.6.1 图片相关样式 291
6.6.2 图标 293
6.7 辅助样式 294
6.7.1 情境背景色 294
6.7.2 情境文本颜色 295
6.7.3 关闭按钮和三角箭头 295
6.7.4 快速浮动 296
6.7.5 显示或隐藏内容 296
6.7.6 屏幕阅读器和键盘导航 297
6.7.7 图片替换 297
6.8 响应式布局相关样式 297
6.8.1 显示/隐藏相关样式 298
6.8.2 打印相关样式 299
6.9 表单相关样式 299
6.9.1 基础表单 299
6.9.2 行内表单 300
6.9.3 水平表单 302
6.9.4 多选框和单选框 303
6.9.5 表单控件的大小 305
6.9.6 静态控件 307
6.9.7 表单控件的状态 309
6.9.8 帮助文本 309
6.9.9 校验状态 310
6.9.10 校验状态的图标 311
6.10 本章小结 313
第7章 Bootstrap内置组件 314
7.1 按钮 315
7.1.1 按钮大小 316
7.1.2 按钮状态 317
7.2 下拉菜单 319
7.2.1 对齐 321
7.2.2 禁用菜单项 322
7.2.3 按钮式下拉菜单 323
7.2.4 分裂式按钮下拉菜单 324
7.2.5 大小 326
7.3 按钮组 327
7.3.1 基本按钮组 327
7.3.2 工具栏 328
7.3.3 控制按钮组的大小 329
7.3.4 按钮组嵌套下拉菜单 329
7.3.5 两端对齐的按钮组 331
7.4 输入框组 332
7.4.1 基本输入框组 332
7.4.2 控制输入框组的大小 334
7.4.3 单选框或多选框作为附加元素 335
7.4.4 按钮式下拉菜单作为附加元素 336
7.4.5 多按钮 337
7.5 导航 338
7.5.1 简单导航的基础样式 338
7.5.2 两端对齐 340
7.5.3 嵌套下拉菜单 340
7.5.4 路径导航 341
7.5.5 基础导航条 342
7.5.6 导航条中的品牌图标 344
7.5.7 导航7
前 言
现在企业应用开发越来越重视前端开发,很多企业已经独立出一个专门的岗位:前端开发工程师,前端开发工程师专门负责企业应用的前端编程。前端工程师与美工不同,美工负责的是应用界面的规划和设计,他们只负责做出静态的界面构图,有时也包括规划界面交互效果,但美工通常并不懂编程实现;而前端开发工程师则负责使用HTML 5、CSS、JavaScript以及各种前端框架来实现整个前端界面:包括应用 界面的搭建、用户交互的实现,这些内容其实都属于JavaScript编程。
有些初学者往往容易混淆美工和前端开发工程师的区别:他们以为会用网页设计工具制作网页就算前端开发工程师。实际上会用网页设计工具既算不上美工,也算不上前端开发工程师。美工的重点在“美”,他们需要有扎实的美术功底,他们可用任何工具来“设计”静态界面,甚至可直接在纸上绘制界面草图,因此网页制作工具只是其中的工具之一;而前端开发工程师往往并不使用网页设计工具,他们通常会使用专门的代码编写工具,他们用HTML、CSS来编写静态界面,再使用JavaScript或各种前端框架来实现界面的动态交互效果。因此,前端开发工程师的本质依然是程序员,他们常用JavaScript以及各种JavaScript框架,如jQuery和AngularJS等。
这里必须说明,前端开发并不简单,原因主要有如下两点:
1、 JavaScript作为一门编程语言,有其自身的优势和特点,要想真正掌握并熟练使用它,有一定的难度。
2、 各浏览器之间存在一定的差异(虽然这种差异正在被相应的规范减少),而且同一个浏览器的不同版本之间也存在较大差异(如IE 8、IE 9、IE 10等),这同样给广大开发者带来了较大的困难。
正因为前端开发存在的复杂性,使得前端开发的相关框架也相当活跃,除了zui主流的jQuery之外,其他还有如AngularJS、Bootstrap等。尤其是jQuery,目前它已经超出一般框架的概念,甚至变成了某种规范,很多前端框架底层都会借鉴或依赖jQuery。
AngularJS则是一个非常实用的前端框架,这个框架不是一种简单的工具,它甚至会强迫开发者采用一种优雅的前端架构,这也是笔者对这个框架情有独钟的原因。
对于初级甚至中级的前端开发者来说,他们有一定的JavaScript代码功底,如果单纯交代他们实现一个前端功能,他们可能也可以实现出来,但他们的实现风格要么乱七八糟,要么“随心所欲”:今天可能这样实现,明天可能会那样实现—如果整个前端都由一个开发者完成,这样做可能问题不大。但实际企业应用的前端往往需要多人协作开发,这时各前端开发者的风格不统一就会带来巨大的沟通成本,从而导致项目进度受阻。
AngularJS的价值就在于此,AngularJS可以极好地规范前端开发的风格,AngularJS对前端开发进行分层,它将前端开发分为Controller层、Service层、DAO层和Model层,Model对象则与HTML页面(视图)上HTML元素进行双向绑定,这样开发者可通过Controller调用Service、DAO与后端交互,获取后端数据之后,只要修改其中Model对象的值,视图页面也会随之动态改变。这个设计架构层次非常清晰,而且具有一定的“强制性”,整个前端团队一旦采用AngularJS框架,那么整个前端开发风格会变得简单、清晰,所有团队成员都能采用一致的开发风格,这就是AngularJS的魅力所在。
Bootstrap则更像一个CSS框架,使用起来非常方便。对于大部分前端开发者,zui令人头疼的可能并不是“如何实现”某个界面,而是不清楚到底“要实现什么”界面?怎样的界面才能算得上优雅、美观?而Bootstrap正好解决了这个痛点,该框架提供了大量优雅、美观的CSS样式,开发者直接应用这些CSS样式即可实现优雅、美观的页面。从这个角度来看,Bootstrap的上手非常简单,甚至不要求开发者掌握JavaScript知识,只要开发者略懂CSS样式即可,因此Bootstrap完全是真正简单且强大的前端框架。
本书有什么特点
本书只是一本介绍前端开发的图书,不是一本关于所谓“思想”的书,更不是一本看完之后可以“吹嘘、炫耀”的书—因为本书并没有堆砌一堆“深奥”的新名词、一堆“高深”的思想,本书保持了“疯狂Java体系”的一贯风格:操作步骤详细,编程思路清晰,语言平实。
本书带给读者的只是9个字:“看得懂、学得会、做得出”,本书并不能让你认识一堆新名词,只帮助你掌握扎实的企业前端开发基础。对于本书,光“看”是不够的,一定要“做”,阅读本书的同时,应该把所有知识点的配套示例都做出来,这样才能真正掌握本书的知识。
无论如何,读者在阅读本书时遇到知识上的问题,都可以登录疯狂Java联盟(http://www.crazyit.org)与广大Java学习者交流,笔者也会通过该平台与大家一起交流、学习。
除此之外,本书还有如下几个特点。
1.通俗易懂,适合自学
该书吸收了大量学习者的学习体会和心得,并重点讲解了学习过程中难以理解和掌握的知识点,降低了学习者的学习难度。
2.知识丰富,内容全面
本书全面、详细地介绍了jQuery 3.1、AngularJS 1.6、Bootstrap 3.3 3个框架,它们是企业开发中主流的前端框架,具有很强的代表性。掌握本书内容即可具备扎实的前端开发功底。
3.深入实用,实践性强
本书并不是一本前端开发的入门图书,本书全面、深入地介绍了企业开发中zui主流、zui具代表性的前端框架,并将它们真正融入Java企业应用开发中,这对实际企业应用开发具有极好的指导意义。
本书写给谁看
本书并非针对零基础的读者,如果您具有HTML 5、CSS 3、JavaScript基础,认真学习此书即可让您成为前端开发的实战型人才;如果您已经阅读过本书上篇:《疯狂HTML 5/CSS/JavaScript讲义》,阅读本书非常合适。如果您完全没有HTML、CSS、JavaScript基础知识,建议您暂时不要购买、阅读此书。
2017-07-28
评论
还没有评论。