科技
类型
8.0
豆瓣评分
可以朗读
语音朗读
429千字
字数
2017-04-01
发行日期
展开全部
主编推荐语
通俗易懂,带你轻松领悟新一代Web开发精髓。
内容简介
本书堪称AngularJS 2领域的里程碑式著作,涵盖了关于AngularJS 2的几乎所有内容。对于没有经验的人,本书平实、通俗的讲解,递进、严密的组织,可以让人毫无压力地登堂入室,迅速领悟新一代Web应用开发的精髓。如果你有相关经验,那本书对AngularJS 2概念和技术细节的全面剖析,以及引人入胜、切中肯綮的讲解,将帮助你彻底掌握这个框架,在自己职业技术修炼之路上更进一步。
目录
- 版权信息
- 推荐序
- 译者序
- 第1章 编写你的第一个Angular Web应用
- 1.1 仿制Reddit网站
- 1.2 起步
- 1.2.1 TypeScript
- 1.2.2 angular-cli
- 1.2.3 示例项目
- 1.3 运行应用
- 1.3.1 制作Component
- 1.3.2 导入依赖
- 1.3.3 Component注解
- 1.3.4 用templateUrl添加模板
- 1.3.5 添加template
- 1.3.6 用styleUrls添加CSS样式
- 1.3.7 加载组件
- 1.4 把数据添加到组件中
- 1.5 使用数组
- 1.6 使用UserItemComponent组件
- 1.6.1 渲染UserItemComponent
- 1.6.2 接收输入
- 1.6.3 传入Input值
- 1.7 “启动”速成班
- 1.8 扩展你的应用
- 1.8.1 添加CSS
- 1.8.2 应用程序组件
- 1.8.3 添加互动
- 1.8.4 添加文章组件
- 1.9 渲染多行
- 1.9.1 创建Article类
- 1.9.2 存储多篇文章
- 1.9.3 使用inputs配置ArticleComponent
- 1.9.4 渲染文章列表
- 1.10 添加新文章
- 1.11 最后的修整
- 1.11.1 显示文章所属的域名
- 1.11.2 基于分数重新排序
- 1.12 全部代码
- 1.13 总结
- 1.14 获得帮助
- 第2章 TypeScript
- 2.1 Angular是用TypeScript构建的
- 2.2 TypeScript提供了哪些特性
- 2.3 类型
- 2.4 内置类型
- 2.4.1 字符串
- 2.4.2 数字
- 2.4.3 布尔类型
- 2.4.4 数组
- 2.4.5 枚举
- 2.4.6 任意类型
- 2.4.7 “无”类型
- 2.5 类
- 2.5.1 属性
- 2.5.2 方法
- 2.5.3 构造函数
- 2.5.4 继承
- 2.6 工具
- 2.6.1 胖箭头函数
- 2.6.2 模板字符串
- 2.7 总结
- 第3章 Angular的工作原理
- 3.1 应用
- 3.1.1 主导航组件
- 3.1.2 面包屑导航组件
- 3.1.3 产品列表组件
- 3.2 产品数据模型
- 3.3 组件
- 3.4 组件注解
- 3.4.1 组件selector
- 3.4.2 组件template
- 3.4.3 添加产品
- 3.4.4 用模板绑定来查看产品
- 3.4.5 添加更多产品
- 3.4.6 选择一个产品
- 3.4.7 用<products-list>列出产品
- 3.5 产品列表组件
- 3.5.1 设置ProductsList的@Component配置项
- 3.5.2 组件的输入
- 3.5.3 组件的输出
- 3.5.4 触发自定义事件
- 3.5.5 编写ProductsList的控制器类
- 3.5.6 编写ProdctsList的视图模板
- 3.5.7 完整的ProductsList组件
- 3.6 产品条目组件
- 3.6.1 产品条目的组件配置
- 3.6.2 产品条目组件的定义类
- 3.6.3 产品条目组件的template
- 3.6.4 完整的ProductRow代码清单
- 3.7 产品图片组件
- 3.8 价格展示组件
- 3.9 产品分类组件
- 3.10 创建NgModule并启动应用
- 3.11 完整的项目
- 3.12 关于数据架构的一点说明
- 第4章 内置指令
- 4.1 简介
- 4.2 ngIf
- 4.3 ngSwitch
- 4.4 ngStyle
- 4.5 ngClass
- 4.6 ngFor
- 4.7 ngNonBindable
- 4.8 总结
- 第5章 Angular中的表单
- 5.1 表单——既重要,又复杂
- 5.2 FormControl和FormGroup
- 5.2.1 FormControl
- 5.2.2 FormGroup
- 5.3 我们的第一个表单
- 5.3.1 加载FormsModule
- 5.3.2 简易SKU表单:@Component注解
- 5.3.3 简易SKU表单:template
- 5.3.4 简易SKU表单:组件定义类
- 5.3.5 试试看
- 5.4 使用FormBuilder
- 5.5 响应式表单FormBuilder
- 5.5.1 使用FormBuilder
- 5.5.2 在视图中使用myForm
- 5.5.3 试试看
- 5.6 添加验证
- 5.6.1 显式地把sku设置为实例变量
- 5.6.2 自定义验证器
- 5.7 监听变化
- 5.8 ngModel
- 5.9 总结
- 第6章 HTTP
- 6.1 简介
- 6.2 使用 @angular/http
- 6.3 基本请求
- 6.3.1 构建SimpleHTTPComponent的@Component
- 6.3.2 构建SimpleHTTPComponent的template
- 6.3.3 构建SimpleHTTPComponent控制器
- 6.3.4 完整的SimpleHTTPComponent
- 6.4 编写YouTubeSearchComponent
- 6.4.1 编写SearchResult
- 6.4.2 编写YouTubeService
- 6.4.3 编写SearchBox
- 6.4.4 编写SearchResultComponent
- 6.4.5 编写YouTubeSearchComponent
- 6.5 @angular/http API
- 6.5.1 发起一个POST请求
- 6.5.2 PUT/PATCH/DELETE/HEAD
- 6.5.3 RequestOptions
- 6.6 总结
- 第7章 路由
- 7.1 为什么需要路由
- 7.2 客户端路由的工作原理
- 7.2.1 初级阶段:使用锚标记
- 7.2.2 进化:HTML5客户端路由
- 7.3 编写第一个路由配置
- 7.4 Angular路由的组成部件
- 7.4.1 导入
- 7.4.2 路由配置
- 7.4.3 安装路由配置
- 7.4.4 使用<router-outlet>调用RouterOutlet指令
- 7.4.5 使用[routerLink]调用routerLink指令
- 7.5 整合
- 7.5.1 创建组件
- 7.5.2 应用程序组件
- 7.5.3 配置路由
- 7.6 路由策略
- 7.7 路径定位策略
- 7.8 运行应用程序
- 7.9 路由参数
- 7.10 音乐搜索应用
- 7.10.1 首要步骤
- 7.10.2 SpotifyService
- 7.10.3 SearchComponent
- 7.10.4 尝试搜索
- 7.10.5 TrackComponent
- 7.10.6 音乐搜索应用小结
- 7.11 路由器钩子
- 7.11.1 AuthService
- 7.11.2 LoginComponent
- 7.11.3 ProtectedComponent组件和路由守卫
- 7.12 嵌套路由
- 7.12.1 配置路由
- 7.12.2 ProductsComponent组件
- 7.13 总结
- 第8章 依赖注入
- 8.1 注入示例:PriceService
- 8.2 “别打给我们……”
- 8.3 依赖注入的部件
- 8.4 尝试注入器
- 8.5 用NgModule提供依赖
- 8.6 提供者
- 8.6.1 使用类
- 8.6.2 使用工厂
- 8.6.3 使用值
- 8.6.4 使用别名
- 8.7 应用中的依赖注入
- 8.8 使用注入器
- 8.9 替换值
- 8.10 NgModule
- 8.10.1 NgModule与JavaScript模块
- 8.10.2 编译器与组件
- 8.10.3 依赖注入与提供者
- 8.10.4 组件可见性
- 8.10.5 指定提供者
- 8.11 总结
- 第9章 Angular数据架构
- 第10章 使用可观察对象的数据架构,第1部分:服务
- 10.1 可观察对象和RxJS
- 10.1.1 注意:一些必备的RxJS相关知识
- 10.1.2 学习响应式编程和RxJS
- 10.2 聊天应用概览
- 10.2.1 组件
- 10.2.2 数据模型
- 10.2.3 服务
- 10.2.4 总结
- 10.3 实现数据模型
- 10.3.1 User
- 10.3.2 Thread
- 10.3.3 Message
- 10.4 实现UserService
- 10.4.1 currentUser流
- 10.4.2 设置新用户
- 10.4.3 UserService.ts
- 10.5 MessagesService
- 10.5.1 newMessages流
- 10.5.2 messages流
- 10.5.3 操作流模式
- 10.5.4 共享流
- 10.5.5 把Message对象添加到messages流中
- 10.5.6 完整的MessagesService
- 10.5.7 试用MessagesService
- 10.6 ThreadsService
- 10.6.1 当前一组Thread的映射(threads流)
- 10.6.2 按时间逆序排列的Thread列表(orderedthreads流)
- 10.6.3 当前已选的Thread(currentThread流)
- 10.6.4 当前已选Thread的Message列表(currentThreadMessages流)
- 10.6.5 完整的ThreadsService
- 10.7 总结
- 第11章 使用可观察对象的数据架构,第2部分:视图组件
- 11.1 构建视图:顶层组件ChatApp
- 11.2 ChatThreads组件
- 11.2.1 ChatThreads控制器
- 11.2.2 ChatThreads的template
- 11.3 单个ChatThread组件
- 11.3.1 ChatThread控制器和ngOnInit
- 11.3.2 ChatThread的template
- 11.3.3 ChatThread的完整代码
- 11.4 ChatWindow组件
- 11.4.1 ChatWindow组件类属性
- 11.4.2 ChatWindow的ngOnInit
- 11.4.3 ChatWindow的sendMessage
- 11.4.4 ChatWindow的onEnter
- 11.4.5 ChatWindow的scrollToBottom
- 11.4.6 ChatWindow的template
- 11.4.7 处理键盘动作
- 11.4.8 使用ngModel
- 11.4.9 点击Send按钮
- 11.4.10 完整的ChatWindow组件
- 11.5 ChatMessage组件
- 11.5.1 设置incoming属性
- 11.5.2 ChatMessage的template
- 11.5.3 完整的ChatMessage代码清单
- 11.6 ChatNavBar组件
- 11.6.1 ChatNavBar的@Component
- 11.6.2 ChatNavBar控制器
- 11.6.3 ChatNavBar的template
- 11.6.4 完整的ChatNavBar组件
- 11.7 总结
- 11.8 更进一步
- 第12章 基于TypeScript的Redux简介
- 12.1 Redux
- 12.2 Redux核心概念
- 12.2.1 reducer是什么
- 12.2.2 定义Action和Reducer的接口
- 12.2.3 创建第一个Reducer
- 12.2.4 运行第一个Reducer
- 12.2.5 使用action调整计数器
- 12.2.6 reducer的switch
- 12.2.7 action的“参数”
- 12.3 保存state
- 12.3.1 使用store
- 12.3.2 使用subscribe进行通知
- 12.3.3 Redux核心
- 12.4 消息应用
- 12.4.1 消息应用的state
- 12.4.2 消息应用的action
- 12.4.3 消息应用的reducer
- 12.4.4 试用action
- 12.4.5 action creator
- 12.4.6 使用真正的Redux
- 12.5 在Angular中使用Redux
- 12.6 规划应用
- 12.7 组建Redux
- 12.7.1 定义应用的state
- 12.7.2 定义reducer
- 12.7.3 定义action creator
- 12.7.4 创建store
- 12.8 CounterApp组件
- 12.9 提供store
- 12.10 启动应用
- 12.11 CounterComponent
- 12.11.1 import
- 12.11.2 模板
- 12.11.3 constructor
- 12.11.4 整合
- 12.12 更进一步
- 12.13 参考资源
- 第13章 在Angular中引入Redux
- 13.1 阅读背景
- 13.2 聊天应用概览
- 13.2.1 组件
- 13.2.2 数据模型
- 13.2.3 reducer
- 13.2.4 总结
- 13.3 实现数据模型
- 13.3.1 User
- 13.3.2 Thread
- 13.3.3 Message
- 13.4 应用的state
- 13.4.1 关于代码布局
- 13.4.2 根reducer
- 13.4.3 UserState
- 13.4.4 ThreadsState
- 13.4.5 可视化AppState
- 13.5 构建reducer(和action creator)
- 13.5.1 设置当前用户的action creator
- 13.5.2 UsersReducer:设置当前用户
- 13.5.3 会话和消息概览
- 13.5.4 添加新会话的action creator
- 13.5.5 添加新会话的reducer
- 13.5.6 添加新消息的action creator
- 13.5.7 添加新消息的reducer
- 13.5.8 选择会话的action creator
- 13.5.9 选择会话的reducer
- 13.5.10 reducer总结
- 13.6 构建Angular聊天应用
- 13.6.1 顶层组件ChatApp
- 13.6.2 ChatPage
- 13.6.3 容器型组件与展示型组件
- 13.7 构建ChatNavBar
- 13.7.1 Redux选择器
- 13.7.2 会话选择器
- 13.7.3 未读消息总数选择器
- 13.8 构建ChatThreads组件
- 13.8.1 ChatThreads控制器
- 13.8.2 ChatThreads的template
- 13.9 单个ChatThread组件
- 13.10 构建ChatWindow组件
- 13.10.1 ChatWindow的updateState()
- 13.10.2 ChatWindow的scrollToBottom()
- 13.10.3 ChatWindow的sendMessage
- 13.10.4 ChatWindow的onEnter
- 13.10.5 ChatWindow的template
- 13.10.6 处理键盘动作
- 13.10.7 使用ngModel
- 13.10.8 点击Send按钮
- 13.11 ChatMessage组件
- 13.11.1 设置incoming属性
- 13.11.2 ChatMessage的template
- 13.12 总结
- 第14章 高级组件
- 14.1 样式
- 14.1.1 视图(样式)封装
- 14.1.2 Shadow DOM封装
- 14.1.3 不使用封装
- 14.2 创建popup指令:引用并修改宿主元素
- 14.2.1 popup指令的结构
- 14.2.2 使用ElementRef
- 14.2.3 绑定到host属性
- 14.2.4 添加按钮并使用exportAs
- 14.3 使用内容投影创建消息面板
- 14.3.1 改变host属性的CSS类
- 14.3.2 使用ng-content
- 14.4 查询相邻的指令:编写标签页
- 14.4.1 Tab组件
- 14.4.2 Tabset组件
- 14.4.3 使用Tabset
- 14.5 生命周期钩子
- 14.5.1 OnInit和OnDestroy
- 14.5.2 OnChanges
- 14.5.3 DoCheck
- 14.5.4 AfterContentInit、AfterViewInit、AfterContentChecked和AfterViewChecked
- 14.6 高级模板
- 14.6.1 重写ngIf:ngBookIf
- 14.6.2 重写ngFor:ngBookRepeat
- 14.7 变更检测
- 14.7.1 自定义变更检测
- 14.7.2 Zones
- 14.7.3 可观察对象和OnPush
- 14.8 总结
- 第15章 测试
- 15.1 测试驱动?
- 15.2 端对端测试与单元测试
- 15.3 测试工具
- 15.3.1 Jasmine
- 15.3.2 Karma
- 15.4 编写单元测试
- 15.5 Angular单元测试框架
- 15.6 测试前准备
- 15.7 测试服务类和HTTP
- 15.7.1 HTTP要点
- 15.7.2 伪装
- 15.7.3 模拟
- 15.7.4 Http MockBackend
- 15.7.5 TestBed.configureTestingModule和提供者
- 15.7.6 测试getTrack方法
- 15.8 测试组件间的路由
- 15.8.1 为测试创建路由器
- 15.8.2 模拟依赖
- 15.8.3 探子
- 15.9 回到测试代码
- 15.9.1 fakeAsync和advance
- 15.9.2 inject
- 15.9.3 测试ArtistComponent组件初始化
- 15.9.4 测试ArtistComponent方法
- 15.9.5 测试ArtistComponent DOM模板值
- 15.10 测试表单
- 15.10.1 创建一个ConsoleSpy
- 15.10.2 安装ConsoleSpy
- 15.10.3 配置测试模块
- 15.10.4 测试表单
- 15.10.5 重构表单测试
- 15.11 测试HTTP请求
- 15.11.1 测试POST方法
- 15.11.2 测试DELETE方法
- 15.11.3 测试HTTP头
- 15.11.4 测试YouTubeService
- 15.12 总结
- 第16章 把AngularJS应用升级到Angular
- 16.1 周边概念
- 16.2 我们要构建什么
- 16.3 把AngularJS映射到Angular
- 16.4 关于互操作性的需求
- 16.5 AngularJS应用
- 16.5.1 AngularJS应用的HTML
- 16.5.2 代码概览
- 16.5.3 AngularJS:PinsService
- 16.5.4 AngularJS:配置路由
- 16.5.5 AngularJS:HomeController
- 16.5.6 AngularJS:HomeController模板
- 16.5.7 AngularJS:pin指令
- 16.5.8 AngularJS:pin指令模板
- 16.5.9 AngularJS:AddController
- 16.5.10 AngularJS:AddController模板
- 16.5.11 AngularJS:总结
- 16.6 构建混合式应用
- 16.6.1 混合式应用的结构
- 16.6.2 引导混合式应用
- 16.6.3 我们要升级什么
- 16.6.4 插一小段内容:类型文件
- 16.6.5 写Angular的PinControlsComponent
- 16.6.6 使用Angular的PinControlsComponent
- 16.6.7 把Angular的PinControlsComponent降级到AngularJS
- 16.6.8 用Angular添加图钉
- 16.6.9 把AngularJS的PinsService和$state升级到Angular
- 16.6.10 写Angular版的AddPinComponent
- 16.6.11 使用AddPinComponent
- 16.6.12 把Angular的服务暴露给AngularJS
- 16.6.13 实现AnalyticsService
- 16.6.14 把Angular的AnalyticsService降级到AngularJS
- 16.6.15 在AngularJS中使用AnalyticsService
- 16.7 总结
- 16.8 参考资源
展开全部
出版方
人民邮电出版社·图灵出品
图灵社区成立于2005年6月,由人民邮电出版社投资控股,以策划出版高质量的科技书籍为核心业务,主要出版领域包括计算机、电子电气、数学统计、科普等,通过引进国际高水平的教材、专著,以及发掘国内优秀原创作品等途径,为目标读者提供一流的内容。