技术专业——源于赫赫有名的Big Nerd Ranch训练营实战课程内容,该训练营早已为微软公司、Google、Facebook等制造行业大佬塑造了诸多复合型人才。 领-先——包含前端开发开发优秀的技术性,保持精采Web运用。 实战——4大Web开发实战项目,以项目驱动器解读,以实践活动引-领基础理论。 系数——从基本的互动式网页页面到即时闲聊运用,由浅入深,跨过大前端。这书在著名培训学校Big Nerd Ranch培训教材的基本上撰写而成,包揽了JavaScript、HTML5、CSS3等当代前端开发开发工作人员急缺的技术性关键环节,包含响应式网站UI,浏览远程控制Web服务项目,用Ember.js搭建运用,这些。除此之外,还会详细介绍怎么使用最前沿开发专用工具来调节和测试代码,而且灵活运用Node.js和各种各样开源系统的npm控制模块的强劲作用来开展开发。 本书分四一部分,每一部分单独进行一个项目,由浅入深、由浅入深,在搭建一系列运用的全过程中,详细介绍Web开发的关键定义和API。 不管是不是有着Web开发工作经验,亦或有着别的服务平台的开发背景图,要是对现如今流行的专用工具和开发实践活动填满爱好,这这书都能给你获益匪浅。
目录
- 第一部分 浏览器编程基础
- 第1章 配置开发环境 2
- 1.1 安装Google Chrome 2
- 1.2 安装并配置Atom 3
- 1.3 文档和参考资料 6
- 1.4 命令行速成 8
- 1.4.1 查看当前工作目录 9
- 1.4.2 新建目录 10
- 1.4.3 切换目录 10
- 1.4.4 列出目录中的文件 11
- 1.4.5 获取管理员权限 12
- 1.4.6 退出程序 13
- 1.5 安装Node.js和browser-sync 14
- 1.6 延展阅读:Atom 的替代工具 15
- 第2章 开始第一个项目 17
- 2.1 搭建Ottergram 18
- 2.1.1 开始写HTML 19
- 2.1.2 链接到样式表 22
- 2.1.3 添加内容 22
- 2.1.4 添加图片 23
- 2.2 浏览网页 25
- 2.3 Chrome开发者工具 27
- 2.4 延展阅读:CSS 版本 29
- 2.5 延展阅读:favicon.ico 29
- 2.6 中级挑战:添加favicon.ico 30
- 第3章 样式 31
- 3.1 创建基本样式 32
- 3.2 为HTML文件添加样式 33
- 3.3 样式的构成 34
- 3.4 第一条样式规则 35
- 3.5 样式继承 38
- 3.6 图片自适应 45
- 3.7 颜色 47
- 3.8 调整空白 49
- 3.9 添加字体 53
- 3.10 初级挑战:更改颜色 56
- 3.11 延展阅读:优先级!当选择器发生冲突了…… 56
- 第4章 flexbox响应式布局 58
- 4.1 界面拓展 59
- 4.1.1 添加大图 59
- 4.1.2 缩略图水平布局 61
- 4.2 flexbox 63
- 4.2.1 创建flex容器 64
- 4.2.2 改变flex-direction 65
- 4.2.3 flex项目中的元素分组 66
- 4.2.4 flex缩写属性 68
- 4.2.5 flex项目的排序与对齐方式 69
- 4.2.6 居中显示大图 73
- 4.3 绝对定位与相对定位 75
- 第5章 使用媒体查询完成自适应布局 82
- 5.1 重置视口 83
- 5.2 添加媒体查询 85
- 5.3 初级挑战:屏幕方向 89
- 5.4 延展阅读:flexbox布局通用解决方案与bug 89
- 5.5 高级挑战:圣杯布局 89
- 第6章 JavaScript事件处理 90
- 6.1 准备锚标签 91
- 6.2 第一个脚本 94
- 6.3 Ottergram中的JavaScript 描述 95
- 6.4 声明字符串变量 96
- 6.5 操作控制台 97
- 6.6 访问DOM元素 99
- 6.7 编写setDetails函数 104
- 6.8 从函数返回值 108
- 6.9 添加事件监听器 110
- 6.10 访问所有缩略图 115
- 6.11 迭代缩略图数组 117
- 6.12 中级挑战:劫持链接 118
- 6.13 高级挑战:随机的水獭 119
- 6.14 延展阅读:严格模式 119
- 6.15 延展阅读:闭包 119
- 6.16 延展阅读:NodeList对象和HTMLCollection 对象 120
- 6.17 延展阅读:JavaScript类型 122
- 第7章 使用CSS营造视觉效果 123
- 7.1 隐藏及显示大图 123
- 7.1.1 创建隐藏大图的样式 125
- 7.1.2 用JavaScript 隐藏大图 127
- 7.1.3 监听键盘事件 128
- 7.1.4 重新显示大图 131
- 7.2 使用CSS过渡改变状态 132
- 7.2.1 变形 133
- 7.2.2 添加CSS过渡效果 135
- 7.2.3 使用定时函数 138
- 7.2.4 基于类的过渡效果 139
- 7.2.5 通过JavaScript触发过渡效果 140
- 7.3 自定义定时函数 141
- 7.4 延展阅读:强制类型转换的规则 143
- 第二部分 模块、对象及表单
- 第8章 模块、对象和方法 146
- 8.1 模块 146
- 8.1.1 模块模式 147
- 8.1.2 通过IIFE修改对象 149
- 8.2 搭建我们的CoffeeRun吧 151
- 8.3 创建数据存储模块 152
- 8.4 在命名空间上添加一个模块 153
- 8.5 构造函数 154
- 8.5.1 构造函数的原型 155
- 8.5.2 为构造函数添加方法 157
- 8.6 创建Truck模块 159
- 8.6.1 添加订单 160
- 8.6.2 删除订单 161
- 8.7 调试 163
- 8.7.1 使用开发者工具定位bug 165
- 8.7.2 使用bind 设置this 169
- 8.8 在页面加载时初始化CoffeeRun 170
- 8.9 初级挑战:使用非星迷熟悉的餐车ID 173
- 8.10 延展阅读:模块私有数据 173
- 8.11 中级挑战:私有化数据 174
- 8.12 延展阅读:在forEach的回调函数中设置this 174
- 第9章 Bootstrap简介 175
- 9.1 添加Bootstrap 175
- 9.2 创建订单表单 177
- 9.2.1 添加文本输入字段 178
- 9.2.2 提供单选按钮 182
- 9.2.3 添加下拉菜单 183
- 9.2.4 添加范围滑块 185
- 9.2.5 添加提交按钮和重置按钮 185
- 第10章 使用JavaScript 处理表单 187
- 10.1 创建FormHandler 模块 188
- 10.1.1 jQuery简介 189
- 10.1.2 导入jQuery 189
- 10.1.3 使用selector参数配置FormHandler 实例 190
- 10.2 添加提交处理程序 192
- 10.2.1 提取数据 193
- 10.2.2 接受并调用回调函数 195
- 10.3 使用FormHandler 196
- 10.4 UI 优化 198
- 10.5 初级挑战:添加超级尺寸 199
- 10.6 中级挑战:当滑块滑动时显示其数值 199
- 10.7 高级挑战:添加选择 200
- 第11章 从数据到DOM 201
- 11.1 建立清单 202
- 11.2 创建CheckList模块 203
- 11.3 创建行构造函数 204
- 11.4 在提交时创建清单行 209
- 11.5 通过单击行完成订单 212
- 11.5.1 创建CheckList.prototype.removeRow方法 213
- 11.5.2 删除被覆盖的条目 213
- 11.5.3 编写addClickHandler方法 214
- 11.5.4 调用addClickHandler 216
- 11.6 初级挑战:在描述中加入浓度信息 217
- 11.7 中级挑战:不同口味,不同颜色 217
- 11.8 高级挑战:允许编辑订单 217
- 第12章 表单校验 218
- 12.1 required属性 218
- 12.2 使用正则表达式校验表单 220
- 12.3 约束校验API 220
- 12.3.1 监听input事件 222
- 12.3.2 将input事件和有效性校验绑定 223
- 12.3.3 触发有效性检查 224
- 12.4 美化有效元素和无效元素 225
- 12.5 中级挑战:为脱咖啡因咖啡进行自定义校验 227
- 12.6 延展阅读:Webshim 库 227
- 第13章 Ajax 229
- 13.1 XMLHttpRequest对象 230
- 13.2 RESTful Web服务 230
- 13.3 RemoteDataStore模块 231
- 13.4 向服务器发送数据 232
- 13.4.1 使用jQuery的$.post 方法 233
- 13.4.2 添加回调函数 233
- 13.4.3 检查Ajax的请求和响应 234
- 13.5 从服务器检索数据 237
- 13.5.1 查看响应数据 237
- 13.5.2 添加回调函数 238
- 13.6 从服务器删除数据 240
- 13.7 用RemoteDataStore替换DataStore 241
- 13.8 中级挑战:校验远端服务器 243
- 13.9 延展阅读:Postman 243
- 第14章 Deferred和Promise 244
- 14.1 Promise和Deferred 245
- 14.2 返回Deferred 246
- 14.3 通过then注册回调函数 247
- 14.4 使用then处理失败的情况 248
- 14.5 在仅支持回调函数的API上使用Deferred 250
- 14.6 为DataStore配置Promise 254
- 14.6.1 创建并返回Promise 255
- 14.6.2 resolve一个Promise 256
- 14.6.3 将其他DataStore方法Promise 化 256
- 14.7 中级挑战:回退到Datastore 259
- 第三部分 实时数据传输
- 第15章 Node.js入门 262
- 15.1 Node和npm 263
- 15.1.1 npm init 264
- 15.1.2 npm脚本 265
- 15.2 Hello, World 265
- 15.3 添加一个npm脚本 267
- 15.4 用文件提供服务 268
- 15.4.1 用fs 模块读取文件 269
- 15.4.2 处理请求URL 269
- 15.4.3 使用path模块 271
- 15.4.4 创建自定义模块 272
- 15.4.5 使用自定义模块 272
- 15.5 错误处理 273
- 15.6 延展阅读:npm模块注册 274
- 15.7 初级挑战:创建自定义错误页面 275
- 15.8 延展阅读:MIME类型 275
- 15.9 中级挑战:动态提供MIME类型 276
- 15.10 高级挑战:将错误处理放到单独的模块中 276
- 第16章 使用WebSocket进行实时通信 277
- 16.1 配置WebSocket 278
- 16.2 测试WebSocket服务器 280
- 16.3 创建聊天服务器的功能 281
- 16.4 第一次聊天! 283
- 16.5 延展阅读:WebSocket库socket.io 283
- 16.6 延展阅读:WebSocket服务 284
- 16.7 初级挑战:我重复了我的消息吗? 284
- 16.8 中级挑战:Speakeasy 284
- 16.9 高级挑战:聊天机器人 284
- 第17章 借助Babel使用ES6 285
- 17.1 编译JavaScript的工具 286
- 17.2 Chattrbox客户端应用程序 288
- 17.3 迈出Babel的第一步 289
- 17.4 使用Browserify 打包模块 291
- 17.5 新增ChatMessage 类 294
- 17.6 创建ws-client 模块 297
- 17.6.1 处理连接 298
- 17.6.2 处理事件并发送消息 299
- 17.6.3 发出和回应一条消息 301
- 17.7 延展阅读:将其他语言编译成JavaScript 302
- 17.8 初级挑战:默认导入名称 303
- 17.9 中级挑战:提醒连接关闭 303
- 17.10 延展阅读:变量提升 303
- 17.11 延展阅读:箭头函数 305
- 第18章 继续ES6 探索之旅 306
- 18.1 将jQuery 安装成一个Node 模块 307
- 18.2 创建ChatForm 类 307
- 18.3 创建ChatList 类 310
- 18.8 初级挑战:给消息添加特效 320
- 18.9 中级挑战:缓存消息 320
- 18.10 高级挑战:独立的聊天室 321
- 第四部分 应用架构
- 第19章 初识MVC和Ember 324
- 19.1 Tracker 325
- 19.2 Ember:一款MVC 框架 326
- 19.2.1 安装Ember 327
- 19.2.2 创建Ember应用 328
- 19.2.3 启动服务器 329
- 19.3 安装外部库和插件 330
- 19.4 修改配置 332
- 19.5 延展阅读:npm和Bower 的安装命令 335
- 19.6 初级挑战:限制引入 336
- 19.7 中级挑战:添加Font Awesome 库 336
- 19.8 高级挑战:自定义NavBar 336
- 第20章 路由选择、路由表、模型 337
- 20.1 Ember生成器 338
- 20.2 嵌套路由 342
- 20.3 Ember Inspector 344
- 20.4 指派模型 344
- 20.5 beforeModel 347
- 20.6 延展阅读:setupController和afterModel 347
- 第21章 模型和数据绑定 349
- 21.1 定义模型 349
- 21.2 创建记录 351
- 21.3 get和set 353
- 21.4 计算属性 354
- 21.5 延展阅读:检索数据 357
- 21.6 延展阅读:保存或删除数据 358
- 21.7 初级挑战:修改计算属性 358
- 21.8 中级挑战:对新的目击记录进行标记 358
- 21.9 高级挑战:添加称呼 359
- 18.4 使用Gravatar 312
- 18.5 请求用户名 314
- 18.6 使用会话存储 316
- 18.7 格式化和更新消息时间戳 318
- 第22章 数据——适配器、序列化器和变换器 360
- 22.1 适配器 362
- 22.2 内容安全策略 365
- 22.3 序列化器 366
- 22.4 变换器 368
- 22.5 延展阅读:Ember CLI Mirage 368
- 22.6 中级挑战:内容安全 369
- 22.7 高级挑战:Mirage 369
- 第23章 视图与模板 370
- 23.1 Handlebars 371
- 23.2 模型 371
- 23.3 辅助方法 371
- 23.3.1 条件语句 372
- 23.3.2 {{#each}}循环 373
- 23.3.3 元素属性赋值 375
- 23.3.4 链接 377
- 23.4 自定义辅助方法 380
- 23.5 初级挑战:为链接添加鼠标悬浮的内容 382
- 23.6 中级挑战:修改日期格式 383
- 23.7 高级挑战:创建一个自定义缩略图辅助方法 383
- 第24章 控制器 384
- 24.1 新建目击记录 385
- 24.2 编辑目击记录 392
- 24.3 删除目击记录 395
- 24.4 路由动作 396
- 24.5 初级挑战:目击记录详情页 398
- 24.6 中级挑战:目击日期 398
- 24.7 高级挑战:添加和删除目击者 398
- 第25章 组件 399
- 25.1 迭代器组件 399
- 25.2 “拧干”组件的“水分” 403
- 25.3 数据向下,动作向上 404
- 25.4 类名绑定 405
- 25.5 数据向下 406
- 25.6 动作向上 409
- 25.7 初级挑战:自定义提示信息 411
- 25.8 中级挑战:将导航条转化为组件 411
- 25.9 高级挑战:提示框数组 412
- 第26章 后记 413
- 26.1 最后的挑战 413
- 26.2 插播一个广告 413
- 26.3 感谢你 414