编辑推荐
Ember.js是一个JavaScript MVC框架,它能处理很多重要的任务,如代码模块管理、状态维护、可靠数据流发送等,并提供了构建Web应用程序所需的模式、组件以及脚手架。
本书主要介绍Ember.js框架,展示如何构建功能全面、具有桌面应用品质的Web应用程序。本书开篇介绍Ember.js基础结构:客户端和服务端MVC,以及如何将Ember.js与后端开发技术整合在一起。然后探索在数据发生改变时能够自动更新应用的出色的Handlebars模板引擎。整个过程中,读者将开发一个完整的Ember.js应用程序,并学会高效部署、管理及更新应用程序的方法。
本书主要内容
处理Ember Data。
精通Handlebars模板。
介绍高级JavaScript技术。
覆盖Ember.js 1.0版本。
本书的读者需要了解JavaScript,但不需要事先具备Ember.js方面的经验。
要下载本书代码可以访问manning.com/Ember.jsinAction。
内容简介
Ember.js号称是一个“雄心勃勃”的JavaScript MVC框架、现代JavaScript MVC框架代表,是构造如单页面应用等现代Web应用程序的新型Web端开发框架。本书深入介绍了这一框架的方方面面。
全书分为三个部分。第一部分为基础内容,共4章,引导读者对Ember.js有个概括性认识,并掌握其基础知识点,此部分包含两个示例程序——注意事项应用程序与博客应用程序;第二部分包括第5章到第8章,涉及Ember.js实战的几个关注点,如Ember Data、自定义组件以及测试;第三部分为第9章到第11章,讨论Ember.js的高级主题,如认证、运行循环和打包部署。
作者简介
Joachim Haagen Skeie是一位经验丰富的Web应用开发者。他供职于自己的公司Haagen Software AS。他是使用Ember.js构建的开源监控工具Montric的作者。他一直致力于开发Montric(一款开源的应用程序性能监控工具)和Conticious(一款开源的主要用于Ember.js富互联网应用的CMS API)。他还是一名独立咨询师、Ember.js和RaspberryPi课程讲师。
Joachim Haagen Skeie从2006年开始,就从事各种规模的Web应用开发工作,主要使用Java和Ember.js技术。
目录
- 第一部分 Ember.js基础
- 第1章 发力雄心勃勃的Web应用 2
- 1.1 Ember.js适用场景 3
- 1.2 从静态页面到Ajax、再到全功能Web应用 4
- 1.2.1 异步Web应用的兴起 5
- 1.2.2 Ember.js模型 6
- 1.3 Ember.js概览 6
- 1.3.1 Ember.js特性 7
- 1.3.2 Ember.js应用程序结构 7
- 1.4 第一个Ember.js应用程序:记事本应用 9
- 1.4.1 记事本应用开发起步 11
- 1.4.2 创建命名空间与路由器 13
- 1.4.3 定义应用程序路由 14
- 1.4.4 创建并列出事项 16
- 1.4.5 选择并查看单条事项 19
- 1.4.6 删除事项 23
- 1.5 小结 28
- 第2章 Ember.js第2章 Ember.js风格 29
- 2.1 绑定对象 30
- 2.2 自动更新模板 33
- 2.3 计算属性 35
- 2.4 观察者模式 38
- 2.5 Ember.js对象模型 39
- 2.6 Ember.js实现各层间数据同步 41
- 2.7 小结 42
- 第3章 使用Ember.js路由器融合应用结构 43
- 3.1 Ember.js实战博客介绍 44
- 3.2 服务器端模型-视图-控制器模式的困境 46
- 3.2.1 Ember MVC模式 47
- 3.2.2 将各层组合起来 48
- 3.3 Ember路由器:Ember.js的状态图 49
- 3.4 Ember.js实战博客第一部分:博客索引页 52
- 3.4.1 创建博客路由器 52
- 3.4.2 添加视图和模板 55
- 3.4.3 显示博客文章列表 56
- 3.5 Ember.js实战博客第二部分:添加博客文章路由 59
- 3.6 依赖注入与Ember容器 65
- 3.6.1 使用needs属性连接控制器 65
- 3.6.2 通过Ember容器连接对象 66
- 3.7 小结 68
- 第4章 通过Handlebars.js自动更新模板 69
- 4.1 模板是什么 69
- 4.1.1 简单表达式 70
- 4.1.2 块表达式 71
- 4.2 内置块表达式 73
- 4.2.1 if及if-else块表达式 73
- 4.2.2 {{unless}}块表达式 74
- 4.2.3 {{with}}块表达式 74
- 4.2.4 Handlbars.js的注释 75
- 4.3 结合使用Handlebars.js与Ember.js 75
- 4.3.1 在index.html中定义模板 76
- 4.3.2 直接在Ember.TEMPLATES散列中定义模板 77
- 4.3.3 创建Handlebars.js模板支持的Ember.js视图 77
- 4.4 Ember.js提供的Handlebars.js表达式 78
- 4.4.1 {{view}}表达式 79
- 4.4.2 {{bind-attr}}表达式 80
- 4.4.3 {{action}}表达式 81
- 4.4.4 {{outlet}}表达式 83
- 4.4.5 {{unbound}}表达式 84
- 4.4.6 {{partial}}表达式 84
- 4.4.7 {{link-to}}表达式 85
- 4.4.8 {{render}}表达式 85
- 4.4.9 {{control}}表达式 86
- 4.4.10 {{input}}和{{textarea}}表达式 87
- 4.4.11 {{yield}}表达式 88
- 4.5 创建自己的表达式 88
- 4.6 小结 89
- 第二部分 创建雄心勃勃的真实Web应用
- 第5章 获取数据:使用Ember Data与服务器端交互 92
- 5.1 将Ember Data用作应用缓存 93
- 5.1.1 定义Ember Data模型 93
- 5.1.2 标识映射的Ember Data 94
- 5.1.3 模型对象间的关联 96
- 5.1.4 模型状态和事件 97
- 5.1.5 与后台通信 99
- 5.2 初尝Ember Data 100
- 5.2.1 从模型中获取数据 101
- 5.2.2 在模型中指定关联关系 101
- 5.3 Ember Data模型的关联 103
- 5.3.1 了解Ember Data模型的
- 关联关系 103
- 5.3.2 Ember Data端数据加载 106
- 5.4 自定义适配器和序列化器 108
- 5.4.1 编写自定义适配器,但保留默认的序列化器 109
- 5.4.2 编写自定义适配器和序列化器代码 111
- 5.4.3 自定义URL 113
- 5.5 小结 113
- 第6章 绕过Ember Data与服务器端第6章 绕过Ember Data与服务器端交互 115
- 6.1 Ember Fest介绍 115
- 6.1.1 了解应用程序的路由器 117
- 6.1.2 使用model()钩子函数获取数据 117
- 6.1.3 实现标识映射 118
- 6.2 获取数据 119
- 6.2.1 通过find()函数返回指定演讲数据 120
- 6.2.2 通过findAll()函数获取所有演讲数据 121
- 6.2.3 实现Emberfest.Talk模型类 121
- 6.3 数据持久化 124
- 6.3.1 通过createRecord()函数提交新的演讲 124
- 6.3.2 通过updateRecord()函数修改演讲数据 127
- 6.3.3 通过delete()函数删除演讲数据 130
- 6.4 小结 131
- 第7章 编写自定义第7章 编写自定义组件 133
- 7.1 关于Ember自定义组件 134
- 7.2 实现可选列表 134
- 7.2.1 定义selectable-list组件 137
- 7.2.2 selectable-list-item组件 138
- 7.2.3 delete-modal组件 140
- 7.2.4 通过已完成的三个组件删除具体项 141
- 7.3 实现树形菜单 144
- 7.3.1 树形菜单的数据模型 144
- 7.3.2 定义tree-menu组件 145
- 7.3.3 定义tree-menu-item和tree-menu-node组件 145
- 7.3.4 单选功能支持 147
- 7.4 小结 150
- 第8章 测试Ember.js应用第8章 测试Ember.js应用 程序 152
- 8.1 使用QUnit和PhantomJS进行单元测试 153
- 8.1.1 Qunit介绍 154
- 8.1.2 使用PhantomJS在命令行执行测试 156
- 8.1.3 集成QUnit和PhantomJS 157
- 8.2 使用QUnit编写简单的Ember.js单元测试 160
- 8.3 集成测试 164
- 8.3.1 Sinon介绍 165
- 8.3.2 添加新告警信息的集成测试 166
- 8.4 通过Ember.Instrumentation进行性能测试 168
- 8.5 小结 169
- 第三部分 高级Ember.js主题
- 第9章 使用Mozilla Persona进行第9章 使用Mozilla Persona进行认证 172
- 9.1 集成第三方认证系统 173
- 9.1.1 首次登录及注册 173
- 9.1.2 通过第三方认证提供者登录Montric 177
- 9.2 通过HTTP cookie登录用户 180
- 9.3 小结 183
- 第10章 Ember.js运行循环——Backburner.js 185
- 10.1 什么是运行循环? 186
- 10.1.1 Ember.js TodoMVC应用程序介绍 186
- 10.1.2 解释Ember.js运行循环 187
- 10.2 在运行循环框架下执行代码 191
- 10.2.1 在当前运行循环中执行代码 191
- 10.2.2 在下一个运行循环中执行代码 192
- 10.2.3 在后续运行循环中执行代码 193
- 10.2.4 在指定队列执行代码 194
- 10.2.5 通过运行循环执行重复任务 196
- 10.3 小结 197
- 第11章 打包与第11章 打包与部署 198
- 11.1 理解JavaScript应用程序打包和装配 199
- 11.1.1 选择目录结构 199
- 11.1.2 组织自己编写的源代码 200
- 11.1.3 组织非JavaScript资源 202
- 11.1.4 Ember.js应用程序装配过程 203
- 11.2 使用构建工具Grunt.js 204
- 11.2.1 为Montric应用程序引导Grunt.js构建系统 205
- 11.2.2 连接JavaScript代码 206
- 11.2.3 抽取插件配置代码到单独文件 208
- 11.2.4 Lint常见错误 209
- 11.2.5 预编译Handlebars模板 211
- 11.2.6 压缩源文件 214
- 11.2.7 Grunt.js的优缺点 217
- 11.3 小结 218