前言
2006年起,我已经以某种方式进行Web应用开发。我开始为挪威最大的零售商开发Web应用,先是使用JavaServer Pages(JSP)技术,之后换成JavaServer Faces(JSF)。当时这些技术很不错,并能让使用者达到使用目的。在那时(Ajax流行之前),HTTP的请求-响应周期要求将大多数处理逻辑放在服务器端,服务器端在每次请求中传递所有标记、脚本和样式表给浏览器。
虽然以服务器端方式开发Web应用也能行之有效,但状态问题总是绕不开的。由于服务器端要求记住所有登录用户,管理状态很快就成为一个棘手而占用大量内存的任务。要如何处理用户打开多个标签页并在彼此间进行切换?跨多个(虚拟)机器延展服务的时候如何持久化会话数据?如果在服务器端存储用户状态,那又如何以一致方式方便地进行水平扩展?处理起来真不容易。
当我开始从事开源项目Montric(那时叫EurekaJ),我很快决定,如果想要在不借助独立的会话缓存的情况下水平扩展应用,我就得掌握一个具备良好前景和流行度的JavaScript框架。
随着SproutCore开发团队被收购以及该框架放慢了发展脚步,SproutCore社区开始发生了变化,SproutCore 2.0版进展顺利,但老版本与新版本间的裂痕却在扩大,最终,SproutCore产生了一个新的分支——Ember.js。
Ember.js依托能够提供优良Web体验的技术而打造,它能够帮助开发者使用既有技能组合开发JavaScript应用程序。Ember.js并不抽象或隐藏JavaScript、HTML或者CSS的实现细节,反而与时俱进地充分利用这些技术。
目录
第一部分 Ember.js基础
第1章 发力雄心勃勃的Web应用
1.1 Ember.js适用场景
1.2 从静态页面到Ajax、再到全功能Web应用
1.2.1 异步Web应用的兴起
1.2.2 Ember.js模型
1.3 Ember.js概览
1.3.1 Ember.js特性
1.3.2 Ember.js应用程序结构
1.4 第一个Ember.js应用程序:记事本应用
1.4.1 记事本应用开发起步
1.4.2 创建命名空间与路由器
1.4.3 定义应用程序路由
1.4.4 创建并列出事项
1.4.5 选择并查看单条事项
1.4.6 删除事项
1.5 小结
第2章 Ember.js风格
2.1 绑定对象
2.2 自动更新模板
2.3 计算属性
2.4 观察者模式
2.5 Ember.js对象模型
2.6 Ember.js实现各层间数据同步
2.7 小结