470 likes | 560 Views
“ 事件” & 前端代码设计. 淘宝旅行计划前端架构及解决方案 杨翰文(地极)@淘宝 微博:@微波小吃. 为什么是 “ 事件 ” ?. Javascript 中的“事件”有哪些特点?. 欢迎体验!. http://go.taobao.com/ plan.htm. 模块多 平台型产品 富交互. 模块多: 如何有效的管理各种模块触发的事件?. 平台型产品: 如何保证简单快速的扩展能力?. 富交互: 如何有效的组织交互逻辑?. Answer …. 关于事件管理. 解耦:不同的模块产生了许多 “ 事件 ”. 资源数据过滤操作. 问题:
E N D
“事件”& 前端代码设计 淘宝旅行计划前端架构及解决方案 杨翰文(地极)@淘宝 微博:@微波小吃
为什么是“事件”? Javascript中的“事件”有哪些特点?
欢迎体验! http://go.taobao.com/plan.htm
模块多: 如何有效的管理各种模块触发的事件?
平台型产品: 如何保证简单快速的扩展能力?
富交互: 如何有效的组织交互逻辑?
资源数据过滤操作 问题: 需要了解事件到底是由哪个组件发出的
基本工作流程 • 需要冒泡到代理的事件在初始化时要注册到代理层 • 事件名称约束:“模块.事件名称” -》“EP.事件名称” • 使用时只需要监听代理层相应的事件即可,不必了解事件的来源
Aptana FreeMind Eclipse FlexBuilder
扩展点: 预先定义好的可以扩展的地方 扩展(插件): 对扩展点的实现
通过实现扩展点在功能流程中预留的接口来完成功能的动态扩充通过实现扩展点在功能流程中预留的接口来完成功能的动态扩充
景点无结果 酒店无结果
第二步:在功能流程中插入扩展点的自定义事件第二步:在功能流程中插入扩展点的自定义事件
有限状态机 有限状态机对行为建模,在该模型中,对将来事件的响应取决于先前的事件。有限状态机的实用定义十分简单明了。有限状态机就是包含如下内容的计算机程序: • 事件:程序对事件进行响应。 • 状态:程序在事件间的状态。 • 转移:对应于事件,状态间的转移。 • 动作:转移过程中采取动作。 • 变量:变量保存事件间的动作所需的值。
“事件”驱动状态变化 JavaScript的语言特性 特别适合构造事件驱动的有限状态机
第二步:加入状态转移时的动作 创建拖拽替身 … 创建一个新卡片 获取交通信息 …
第三步:转换成代码 • 状态对象:管理各状态对事件的响应以及下一步的状态转换 • 动作对象:状态发生变化时的各种动作 • 状态转换逻辑:通过监听事件实现
状态转换逻辑 由事件驱动状态变化,并从返回值中得到下一个状态
多模块事件管理:全局事件代理机制 • 快速扩展:扩展点机制 • 富交互逻辑设计:引入有限状态机
Q&A 谢谢!