书籍封面
书籍目录
封面
数字版权声明
译者简介
扉页
版权页
献词
前言
致谢
目录
第一部分 浏览器编程基础
第1章 配置开发环境
1.1 安装Google Chrome
1.2 安装并配置Atom
Atom插件
1.3 文档和参考资料
1.4 命令行速成
1.4.1 查看当前工作目录
1.4.2 新建目录
1.4.3 切换目录
1.4.4 列出目录中的文件
1.4.5 获取管理员权限
1.4.6 退出程序
1.5 安装Node.js和browser-sync
1.6 延展阅读:Atom的替代工具
第2章 开始第一个项目
2.1 搭建Ottergram
2.1.1 开始写HTML
2.1.2 链接到样式表
2.1.3 添加内容
2.1.4 添加图片
2.2 浏览网页
2.3 Chrome开发者工具
2.4 延展阅读:CSS版本
2.5 延展阅读:favicon.ico
2.6 中级挑战:添加favicon.ico
第3章 样式
3.1 创建基本样式
3.2 为HTML文件添加样式
3.3 样式的构成
3.4 第一条样式规则
盒模型
3.5 样式继承
3.6 图片自适应
3.7 颜色
3.8 调整空白
关系选择器
3.9 添加字体
3.10 初级挑战:更改颜色
3.11 延展阅读:优先级!当选择器发生冲突了……
第4章 flexbox响应式布局
4.1 界面拓展
4.1.1 添加大图
4.1.2 缩略图水平布局
4.2 flexbox
4.2.1 创建flex容器
4.2.2 改变flex-direction
4.2.3 flex项目中的元素分组
4.2.4 flex缩写属性
4.2.5 flex项目的排序与对齐方式
4.2.6 居中显示大图
4.3 绝对定位与相对定位
第5章 使用媒体查询完成自适应布局
5.1 重置视口
5.2 添加媒体查询
5.3 初级挑战:屏幕方向
5.4 延展阅读:flexbox布局通用解决方案与bug
5.5 高级挑战:圣杯布局
第6章 JavaScript事件处理
6.1 准备锚标签
6.2 第一个脚本
6.3 Ottergram中的JavaScript描述
6.4 声明字符串变量
6.5 操作控制台
6.6 访问DOM元素
6.7 编写setDetails函数
通过形参声明接受实参
6.8 从函数返回值
6.9 添加事件监听器
6.10 访问所有缩略图
6.11 迭代缩略图数组
6.12 中级挑战:劫持链接
6.13 高级挑战:随机的水獭
6.14 延展阅读:严格模式
6.15 延展阅读:闭包
6.16 延展阅读:NodeList对象和HTMLCollection对象
6.17 延展阅读:JavaScript类型
第7章 使用CSS营造视觉效果
7.1 隐藏及显示大图
7.1.1 创建隐藏大图的样式
7.1.2 用JavaScript隐藏大图
7.1.3 监听键盘事件
7.1.4 重新显示大图
7.2 使用CSS过渡改变状态
7.2.1 变形
7.2.2 添加CSS过渡效果
7.2.3 使用定时函数
7.2.4 基于类的过渡效果
7.2.5 通过JavaScript触发过渡效果
7.3 自定义定时函数
7.4 延展阅读:强制类型转换的规则
第二部分 模块、对象及表单
第8章 模块、对象和方法
8.1 模块
8.1.1 模块模式
8.1.2 通过IIFE修改对象
8.2 搭建我们的CoffeeRun吧
8.3 创建数据存储模块
8.4 在命名空间上添加一个模块
8.5 构造函数
8.5.1 构造函数的原型
8.5.2 为构造函数添加方法
8.6 创建Truck模块
8.6.1 添加订单
8.6.2 删除订单
8.7 调试
8.7.1 使用开发者工具定位bug
8.7.2 使用bind设置this
8.8 在页面加载时初始化CoffeeRun
创建Truck实例
8.9 初级挑战:使用非星迷熟悉的餐车ID
8.10 延展阅读:模块私有数据
8.11 中级挑战:私有化数据
8.12 延展阅读:在forEach的回调函数中设置this
第9章 Bootstrap简介
9.1 添加Bootstrap
Bootstrap的原理
9.2 创建订单表单
9.2.1 添加文本输入字段
9.2.2 提供单选按钮
9.2.3 添加下拉菜单
9.2.4 添加范围滑块
9.2.5 添加提交按钮和重置按钮
第10章 使用JavaScript处理表单
10.1 创建FormHandler模块
10.1.1 jQuery简介
10.1.2 导入jQuery
10.1.3 使用selector参数配置FormHandler实例
10.2 添加提交处理程序
10.2.1 提取数据
10.2.2 接受并调用回调函数
10.3 使用FormHandler
将createOrder注册为提交处理程序
10.4 UI优化
10.5 初级挑战:添加超级尺寸
10.6 中级挑战:当滑块滑动时显示其数值
10.7 高级挑战:添加选择
第11章 从数据到DOM
11.1 建立清单
11.2 创建CheckList模块
11.3 创建行构造函数
使用jQuery创建DOM元素
11.4 在提交时创建清单行
使用call绑定this
11.5 通过单击行完成订单
11.5.1 创建CheckList.prototype.removeRow方法
11.5.2 删除被覆盖的条目
11.5.3 编写addClickHandler方法
11.5.4 调用addClickHandler
11.6 初级挑战:在描述中加入浓度信息
11.7 中级挑战:不同口味,不同颜色
11.8 高级挑战:允许编辑订单
第12章 表单校验
12.1 required属性
12.2 使用正则表达式校验表单
12.3 约束校验API
12.3.1 监听input事件
12.3.2 将input事件和有效性校验绑定
12.3.3 触发有效性检查
12.4 美化有效元素和无效元素
12.5 中级挑战:为脱咖啡因咖啡进行自定义校验
12.6 延展阅读:Webshim库
第13章 Ajax
13.1 XMLHttpRequest对象
13.2 RESTful Web服务
13.3 RemoteDataStore模块
13.4 向服务器发送数据
13.4.1 使用jQuery的$.post方法
13.4.2 添加回调函数
13.4.3 检查Ajax的请求和响应
13.5 从服务器检索数据
13.5.1 查看响应数据
13.5.2 添加回调函数
13.6 从服务器删除数据
使用jQuery的$.ajax方法
13.7 用RemoteDataStore替换DataStore
13.8 中级挑战:校验远端服务器
13.9 延展阅读:Postman
第14章 Deferred和Promise
14.1 Promise和Deferred
14.2 返回Deferred
14.3 通过then注册回调函数
14.4 使用then处理失败的情况
14.5 在仅支持回调函数的API上使用Deferred
14.6 为DataStore配置Promise
14.6.1 创建并返回Promise
14.6.2 resolve一个Promise
14.6.3 将其他DataStore方法Promise化
14.7 中级挑战:回退到Datastore
第三部分 实时数据传输
第15章 Node.js入门
15.1 Node和npm
15.1.1 npm init
15.1.2 npm脚本
15.2 Hello, World
15.3 添加一个npm脚本
15.4 用文件提供服务
15.4.1 用fs模块读取文件
15.4.2 处理请求URL
15.4.3 使用path模块
15.4.4 创建自定义模块
15.4.5 使用自定义模块
15.5 错误处理
15.6 延展阅读:npm模块注册
15.7 初级挑战:创建自定义错误页面
15.8 延展阅读:MIME类型
15.9 中级挑战:动态提供MIME类型
15.10 高级挑战:将错误处理放到单独的模块中
第16章 使用WebSocket进行
16.1 配置WebSocket
16.2 测试WebSocket服务器
16.3 创建聊天服务器的功能
16.4 第一次聊天!
16.5 延展阅读:WebSocket库socket.io
16.6 延展阅读:WebSocket服务
16.7 初级挑战:我重复了我的消息吗?
16.8 中级挑战:Speakeasy
16.9 高级挑战:聊天机器人
第17章 借助Babel使用ES6
17.1 编译JavaScript的工具
17.2 Chattrbox客户端应用程序
17.3 迈出Babel的第一步
class语法
17.4 使用Browserify打包模块
执行构建操作
17.5 新增ChatMessage类
17.6 创建ws-client模块
17.6.1 处理连接
17.6.2 处理事件并发送消息
17.6.3 发出和回应一条消息
17.7 延展阅读:将其他语言编译成JavaScript
17.8 初级挑战:默认导入名称
17.9 中级挑战:提醒连接关闭
17.10 延展阅读:变量提升
17.11 延展阅读:箭头函数
第18章 继续ES6探索之旅
18.1 将jQuery安装成一个Node模块
18.2 创建ChatForm类
将ChatForm连接到socket
18.3 创建ChatList类
18.4 使用Gravatar
18.5 请求用户名
18.6 使用会话存储
18.7 格式化和更新消息时间戳
18.8 初级挑战:给消息添加特效
18.9 中级挑战:缓存消息
18.10 高级挑战:独立的聊天室
第四部分 应用架构
第19章 初识MVC和Ember
19.1 Tracker
19.2 Ember:一款MVC框架
19.2.1 安装Ember
19.2.2 创建Ember应用
19.2.3 启动服务器
19.3 安装外部库和插件
19.4 修改配置
19.5 延展阅读:npm和Bower的安装命令
19.6 初级挑战:限制引入
19.7 中级挑战:添加Font Awesome库
19.8 高级挑战:自定义NavBar
第20章 路由选择、路由表、模型
20.1 Ember生成器
20.2 嵌套路由
20.3 Ember Inspector
20.4 指派模型
20.5 beforeModel
20.6 延展阅读:setupController和afterModel
第21章 模型和数据绑定
21.1 定义模型
21.2 创建记录
21.3 get和set
21.4 计算属性
21.5 延展阅读:检索数据
21.6 延展阅读:保存或删除数据
21.7 初级挑战:修改计算属性
21.8 中级挑战:对新的目击记录进行标记
21.9 高级挑战:添加称呼
第22章 数据——适配器、序列化器和变换器
第22章 数据——适配器、序列化器和变换器
22.1 适配器
22.2 内容安全策略
22.3 序列化器
22.4 变换器
22.5 延展阅读:Ember CLI Mirage
22.6 中级挑战:内容安全
22.7 高级挑战:Mirage
第23章 视图与模板
23.1 Handlebars
23.2 模型
23.3 辅助方法
23.3.1 条件语句
23.3.2 {{#each}}循环
23.3.3 元素属性赋值
23.3.4 链接
23.4 自定义辅助方法
23.5 初级挑战:为链接添加鼠标悬浮的内容
23.6 中级挑战:修改日期格式
23.7 高级挑战:创建一个自定义缩略图辅助方法
第24章 控制器
24.1 新建目击记录
24.2 编辑目击记录
24.3 删除目击记录
24.4 路由动作
24.5 初级挑战:目击记录详情页
24.6 中级挑战:目击日期
24.7 高级挑战:添加和删除目击者
第25章 组件
25.1 迭代器组件
25.2 “拧干”组件的“水分”
25.3 数据向下,动作向上
25.4 类名绑定
25.5 数据向下
25.6 动作向上
25.7 初级挑战:自定义提示信息
25.8 中级挑战:将导航条转化为组件
25.9 高级挑战:提示框数组
第26章 后记
26.1 最后的挑战
26.2 插播一个广告
26.3 感谢你
没有回复内容