SlideShare une entreprise Scribd logo
1  sur  16
Télécharger pour lire hors ligne
交易平台化  
    (前端)	
       文河
 @yyfrankyy, f2e.us
Agenda	
•    概述
•    分层模型
•    模块化和工厂
•    可测试性的探索
•    前端规则引擎
•    可维护性(统一下单)
•    设计点滴
概述	
•  杂牌军(排名不分先后)
  o  岳云,张挺,承玉,遇春,向阳,文河,云谦

•  时间
  o  2011.2 – 2011.6(一期),2011.6 – 2011.8(统一下单)

•  内容
  o  20+ 虚拟下单 JavaScript 重构
  o  购物车确认下单和立即购买合并
分层模型	
•  tc/cart/	
  
   o  页面初始化	
  

•  tc/core/	
  
   o    模块工厂
   o    表单验证
   o    Log工具
   o    营销规则引擎
   o    DOM缓存

•  tc/form/	
  
   o  表单验证子集

•  tc/mods/	
  
   o  各具体业务模块
   o  ui/logic	
  拆分
tc/cart/item
tc/cart/order
tc/cart/cart	




o  http://trade.ued.taobao.net/tc/diagram/carts/png/cart.png	
  
模块化和工厂	
•  逻辑内聚
  o  KISSY 1.2.0 Loader

•  依赖解耦
  o  事件中心(Event Center)

•  模块创建
  o  模块工厂(Module Factory)
事件中心和工厂	
•  全局消息分发和接收	
  
  o  var	
  EventCenter	
  =	
  KISSY.merge({},	
  KISSY.EventTarget)	
  
  o  局部消息分组(fire(‘group1:event1’))	
  
  o  http://trade.ued.taobao.net/tc/docs/symbols/MIXED.html

•  模块“原型”——Loader的加载扩展
  o  事件方法(EventTarget)
  o  事件中心(EventCenter)	
  
可测试性的探索	
•  分层的优势
 o  逻辑可单测(DOM交互部分通过测试脚本覆盖)
 o  测试覆盖率20-30%

•  异步测试的尝试(jasmine的二次封装)
持续回归	
注意单元测试的投入产出比
前端规则引擎	
•  运算逻辑抽象和内聚
•  计算复用(结果缓存)
•  自动事件(联动)绑定
金额计算的抽象
可维护性(统⼀一下单)	
•  设计的痛
  o  单例改多例,大量重构和回归
  o  直接导致虚拟和统一下单分道扬镳
  o  商城独自fork一份代码维护

•  性能优化(1天从30s优化到2s的故事)
  o    规则的延迟计算
  o    DOM缓存
  o    仔细调整事件绑定触发和各个核心业务点的加载顺序
  o    只对最明显的部位做改进

•  关注业务数据的变更
设计点滴	
•  框架选型
  o  选型的意义(花多点时间思考和讨论,实现是最简单的一环)
  o  利用现有模块,框架和实现去调整,利于快速实现
  o  设计以减少系统熵增加为导向
      •  MVC or 简单分层

•  持续重构和快速迭代(快速淘汰)
  o  把变更当成常态来设计
  o  在适当的时候果断重写
      •  规则引擎:DSL or not?

•  文档的投入
  o  接口文档:http://trade.ued.taobao.net/tc/docs/index.html
  o  文档的投入也要随着业务而变更

•  测试的投入
谢谢!	
•  Q&A

Contenu connexe

En vedette

Lean Message Architecture Highlights
Lean Message Architecture HighlightsLean Message Architecture Highlights
Lean Message Architecture Highlightssunng87
 
旺铺前端设计分享
旺铺前端设计分享旺铺前端设计分享
旺铺前端设计分享fangdeng
 
浏览器渲染与web前端开发
浏览器渲染与web前端开发浏览器渲染与web前端开发
浏览器渲染与web前端开发Duoyi Wu
 
React单页应用性能调优实践
React单页应用性能调优实践React单页应用性能调优实践
React单页应用性能调优实践spray_lx
 
前端MVC之backbone
前端MVC之backbone前端MVC之backbone
前端MVC之backboneJerry Xie
 
百姓网如何优化网速-Qcon2011
百姓网如何优化网速-Qcon2011百姓网如何优化网速-Qcon2011
百姓网如何优化网速-Qcon2011Yiwei Ma
 
聊聊我接触的集群管理
聊聊我接触的集群管理聊聊我接触的集群管理
聊聊我接触的集群管理rfyiamcool
 
美团点评技术沙龙13-前端工程化开发方案app-proto介绍
美团点评技术沙龙13-前端工程化开发方案app-proto介绍美团点评技术沙龙13-前端工程化开发方案app-proto介绍
美团点评技术沙龙13-前端工程化开发方案app-proto介绍美团点评技术团队
 
美团点评技术沙龙05 - 浅谈前端工程化
美团点评技术沙龙05 - 浅谈前端工程化美团点评技术沙龙05 - 浅谈前端工程化
美团点评技术沙龙05 - 浅谈前端工程化美团点评技术团队
 
美团点评技术沙龙05 - 前后端联调方案探索与应用
美团点评技术沙龙05 - 前后端联调方案探索与应用美团点评技术沙龙05 - 前后端联调方案探索与应用
美团点评技术沙龙05 - 前后端联调方案探索与应用美团点评技术团队
 
3 a forum 2016 陆金所前端进化论 微服务之路(public)
3 a forum 2016 陆金所前端进化论 微服务之路(public)3 a forum 2016 陆金所前端进化论 微服务之路(public)
3 a forum 2016 陆金所前端进化论 微服务之路(public)Ufo Qiao
 
使用NodeJS构建静态资源管理系统
使用NodeJS构建静态资源管理系统使用NodeJS构建静态资源管理系统
使用NodeJS构建静态资源管理系统Frank Xu
 
Building Universal Applications with Angular 2
Building Universal Applications with Angular 2Building Universal Applications with Angular 2
Building Universal Applications with Angular 2Minko Gechev
 

En vedette (15)

Lean Message Architecture Highlights
Lean Message Architecture HighlightsLean Message Architecture Highlights
Lean Message Architecture Highlights
 
旺铺前端设计分享
旺铺前端设计分享旺铺前端设计分享
旺铺前端设计分享
 
nodejs开发web站点
nodejs开发web站点nodejs开发web站点
nodejs开发web站点
 
浏览器渲染与web前端开发
浏览器渲染与web前端开发浏览器渲染与web前端开发
浏览器渲染与web前端开发
 
React单页应用性能调优实践
React单页应用性能调优实践React单页应用性能调优实践
React单页应用性能调优实践
 
前端MVC之backbone
前端MVC之backbone前端MVC之backbone
前端MVC之backbone
 
百姓网如何优化网速-Qcon2011
百姓网如何优化网速-Qcon2011百姓网如何优化网速-Qcon2011
百姓网如何优化网速-Qcon2011
 
Meteor
MeteorMeteor
Meteor
 
聊聊我接触的集群管理
聊聊我接触的集群管理聊聊我接触的集群管理
聊聊我接触的集群管理
 
美团点评技术沙龙13-前端工程化开发方案app-proto介绍
美团点评技术沙龙13-前端工程化开发方案app-proto介绍美团点评技术沙龙13-前端工程化开发方案app-proto介绍
美团点评技术沙龙13-前端工程化开发方案app-proto介绍
 
美团点评技术沙龙05 - 浅谈前端工程化
美团点评技术沙龙05 - 浅谈前端工程化美团点评技术沙龙05 - 浅谈前端工程化
美团点评技术沙龙05 - 浅谈前端工程化
 
美团点评技术沙龙05 - 前后端联调方案探索与应用
美团点评技术沙龙05 - 前后端联调方案探索与应用美团点评技术沙龙05 - 前后端联调方案探索与应用
美团点评技术沙龙05 - 前后端联调方案探索与应用
 
3 a forum 2016 陆金所前端进化论 微服务之路(public)
3 a forum 2016 陆金所前端进化论 微服务之路(public)3 a forum 2016 陆金所前端进化论 微服务之路(public)
3 a forum 2016 陆金所前端进化论 微服务之路(public)
 
使用NodeJS构建静态资源管理系统
使用NodeJS构建静态资源管理系统使用NodeJS构建静态资源管理系统
使用NodeJS构建静态资源管理系统
 
Building Universal Applications with Angular 2
Building Universal Applications with Angular 2Building Universal Applications with Angular 2
Building Universal Applications with Angular 2
 

Similaire à 淘宝交易平台前端重构

美团前端架构简介
美团前端架构简介美团前端架构简介
美团前端架构简介pan weizeng
 
Nodejs & NAE
Nodejs & NAENodejs & NAE
Nodejs & NAEq3boy
 
淺談物聯網巨量資料挑戰 - Jazz 王耀聰 (2016/3/17 於鴻海內湖) 免費講座
淺談物聯網巨量資料挑戰 - Jazz 王耀聰 (2016/3/17 於鴻海內湖) 免費講座淺談物聯網巨量資料挑戰 - Jazz 王耀聰 (2016/3/17 於鴻海內湖) 免費講座
淺談物聯網巨量資料挑戰 - Jazz 王耀聰 (2016/3/17 於鴻海內湖) 免費講座NTC.im(Notch Training Center)
 
京东实时消息队列JDQ技术实践与探索
京东实时消息队列JDQ技术实践与探索京东实时消息队列JDQ技术实践与探索
京东实时消息队列JDQ技术实践与探索confluent
 
构建可维护的Javascript 小米网
构建可维护的Javascript 小米网构建可维护的Javascript 小米网
构建可维护的Javascript 小米网yang alex
 
OPOA in Action -- 使用MagixJS简化WebAPP开发
OPOA in Action -- 使用MagixJS简化WebAPP开发OPOA in Action -- 使用MagixJS简化WebAPP开发
OPOA in Action -- 使用MagixJS简化WebAPP开发leneli
 
Node.js在淘宝的应用实践
Node.js在淘宝的应用实践Node.js在淘宝的应用实践
Node.js在淘宝的应用实践taobao.com
 
使用 TypeScript 駕馭 Web 世界的脫韁野馬:以 Angular 2 開發框架為例
使用 TypeScript 駕馭 Web 世界的脫韁野馬:以 Angular 2 開發框架為例使用 TypeScript 駕馭 Web 世界的脫韁野馬:以 Angular 2 開發框架為例
使用 TypeScript 駕馭 Web 世界的脫韁野馬:以 Angular 2 開發框架為例Will Huang
 
谈谈模块化
谈谈模块化谈谈模块化
谈谈模块化衡锋 阳
 
钱宝坤:多浏览器集成的JavaScript单元测试工具
钱宝坤:多浏览器集成的JavaScript单元测试工具钱宝坤:多浏览器集成的JavaScript单元测试工具
钱宝坤:多浏览器集成的JavaScript单元测试工具taobao.com
 
July.2011.w3ctech
July.2011.w3ctechJuly.2011.w3ctech
July.2011.w3ctechKai Cui
 
合久必分,分久必合
合久必分,分久必合合久必分,分久必合
合久必分,分久必合Qiangning Hong
 
Sheepdog内部实现机制
Sheepdog内部实现机制Sheepdog内部实现机制
Sheepdog内部实现机制Liu Yuan
 
Javascript primer plus
Javascript primer plusJavascript primer plus
Javascript primer plusDongxu Yao
 
腾讯大讲堂19 系统优化的方向
腾讯大讲堂19 系统优化的方向腾讯大讲堂19 系统优化的方向
腾讯大讲堂19 系统优化的方向George Ang
 
Dev camps Windows Store App 市集應用程式最佳實踐
Dev camps   Windows Store App 市集應用程式最佳實踐Dev camps   Windows Store App 市集應用程式最佳實踐
Dev camps Windows Store App 市集應用程式最佳實踐Meng-Ru (Raymond) Tsai
 
使用 Pytest 進行單元測試 (PyCon TW 2021)
使用 Pytest 進行單元測試 (PyCon TW 2021)使用 Pytest 進行單元測試 (PyCon TW 2021)
使用 Pytest 進行單元測試 (PyCon TW 2021)Max Lai
 

Similaire à 淘宝交易平台前端重构 (20)

美团前端架构简介
美团前端架构简介美团前端架构简介
美团前端架构简介
 
Nodejs & NAE
Nodejs & NAENodejs & NAE
Nodejs & NAE
 
淺談物聯網巨量資料挑戰 - Jazz 王耀聰 (2016/3/17 於鴻海內湖) 免費講座
淺談物聯網巨量資料挑戰 - Jazz 王耀聰 (2016/3/17 於鴻海內湖) 免費講座淺談物聯網巨量資料挑戰 - Jazz 王耀聰 (2016/3/17 於鴻海內湖) 免費講座
淺談物聯網巨量資料挑戰 - Jazz 王耀聰 (2016/3/17 於鴻海內湖) 免費講座
 
京东实时消息队列JDQ技术实践与探索
京东实时消息队列JDQ技术实践与探索京东实时消息队列JDQ技术实践与探索
京东实时消息队列JDQ技术实践与探索
 
Tcfsh bootcamp day2
 Tcfsh bootcamp day2 Tcfsh bootcamp day2
Tcfsh bootcamp day2
 
构建可维护的Javascript 小米网
构建可维护的Javascript 小米网构建可维护的Javascript 小米网
构建可维护的Javascript 小米网
 
OPOA in Action -- 使用MagixJS简化WebAPP开发
OPOA in Action -- 使用MagixJS简化WebAPP开发OPOA in Action -- 使用MagixJS简化WebAPP开发
OPOA in Action -- 使用MagixJS简化WebAPP开发
 
Node.js在淘宝的应用实践
Node.js在淘宝的应用实践Node.js在淘宝的应用实践
Node.js在淘宝的应用实践
 
使用 TypeScript 駕馭 Web 世界的脫韁野馬:以 Angular 2 開發框架為例
使用 TypeScript 駕馭 Web 世界的脫韁野馬:以 Angular 2 開發框架為例使用 TypeScript 駕馭 Web 世界的脫韁野馬:以 Angular 2 開發框架為例
使用 TypeScript 駕馭 Web 世界的脫韁野馬:以 Angular 2 開發框架為例
 
谈谈模块化
谈谈模块化谈谈模块化
谈谈模块化
 
Jasmine2
Jasmine2Jasmine2
Jasmine2
 
軟體架構模式
軟體架構模式軟體架構模式
軟體架構模式
 
钱宝坤:多浏览器集成的JavaScript单元测试工具
钱宝坤:多浏览器集成的JavaScript单元测试工具钱宝坤:多浏览器集成的JavaScript单元测试工具
钱宝坤:多浏览器集成的JavaScript单元测试工具
 
July.2011.w3ctech
July.2011.w3ctechJuly.2011.w3ctech
July.2011.w3ctech
 
合久必分,分久必合
合久必分,分久必合合久必分,分久必合
合久必分,分久必合
 
Sheepdog内部实现机制
Sheepdog内部实现机制Sheepdog内部实现机制
Sheepdog内部实现机制
 
Javascript primer plus
Javascript primer plusJavascript primer plus
Javascript primer plus
 
腾讯大讲堂19 系统优化的方向
腾讯大讲堂19 系统优化的方向腾讯大讲堂19 系统优化的方向
腾讯大讲堂19 系统优化的方向
 
Dev camps Windows Store App 市集應用程式最佳實踐
Dev camps   Windows Store App 市集應用程式最佳實踐Dev camps   Windows Store App 市集應用程式最佳實踐
Dev camps Windows Store App 市集應用程式最佳實踐
 
使用 Pytest 進行單元測試 (PyCon TW 2021)
使用 Pytest 進行單元測試 (PyCon TW 2021)使用 Pytest 進行單元測試 (PyCon TW 2021)
使用 Pytest 進行單元測試 (PyCon TW 2021)
 

淘宝交易平台前端重构