SlideShare uma empresa Scribd logo
1 de 41
改进的事件机制
     +
 mvc项目分享

   @饭鱼
项目背景
http://huabao.jia.tmall.com/huabao/index.htm
•   KISSY to   1.2
    #set($version = "1.2.0")
•   前端mvc
    KISSY.use(“mvc”, function(S, mvc){…})
•   Common Paganation Components


•   其他一些新技术尝试
    CSS Mask、Shadow
Get data1
   from URL1




 Get data2
from URL2
S.getScript(url1, function(){
     //get data1
     S.getScript(url2, function(){
          //get data2…
     })
});


       •   callback多级嵌套
       •   代码耦合程度高
       •   假如数据之间没有前后依赖关系,
           那么串行请求就是浪费时间的
Data1              Data2



        Timeline
EventEmmiter


emitter.on(event, listener)
emitter.emit(event, [arg1], [arg2], [...])
//事件中心雏形
var EventCenter = S.mix({}, S.EventTarget);

var data1, data2;

EventCenter.on(„dataready‟ , function(){
     if(data1 && data2){
           //render..
     }
});
S.io.jsonp(url1, function(data){
      data1 = data;
       EventCenter .fire(„dataready‟);
});

S.io.jsonp(url2, function(data){
       data2 = data;
       EventCenter.fire(„dataready‟);
});
//…

       Trigger a same event 2 times.
var EventCenter = S.mix({
     //用于同时绑定多个事件
     „bindAll‟: function(){

     },
     „unbind‟: function(){

     },
     „trigger‟:function(evName, data){

      }
}, S.EventTarget);
EventCenter.bindAll(“ev1, ev2, ev3”,
      function(data1, data2, data3){
            //callback
      }
);
S.io.jsonp(url1, function(data){
      EventCenter .trigger(„ev1‟, data);
});
S.io.jsonp(url2, function(data){
      EventCenter .trigger(„ev2‟, data);
});
S.io.jsonp(url3, function(data){
      EventCenter .trigger(„ev3‟, data);
});
Data1     Data2           Data3




Data1
 Data2
  Data3




                  流水线优化
EventCenter可以解决的问题


•   多个事件同时绑定,全部满足时触发
    EventCenter.bindAll(„a, b‟, function(a, b){})
•   减少回调函数嵌套
•   通过事件机制解耦复杂的业务逻辑
•   多个异步请求无阻塞(一些场景下)
MVC项目分享
1. 前端mvc概述
2. Model/View/Router
3. 家装团购项目
4. Kissy Complier
5. 总结
前端MVC是个啥
MVC是个好东西
#
•#代表网页中的一个位置
•HTTP请求不包括#
•#后面出现的任何字符,被浏览器解读为位置标识符
•改变#不触发网页重载
•改变#会改变浏览器的访问历史
•window.location.hash读取#值
•onhashchange事件
•Google抓取#的机制
Request、hashChange



                        Router




ItemModel   function Index       function List   ListModel




             ListView             IndexView
KISSY.config({
     packages:[
           {
                  name:'TuanGou',
                  tag:'1',
                  path:'./'
           }
      ]
});
KISSY Module Compiler




TuanGou.combine.js
Demo:
http://tuan.jia.daily.tmall.net/tuangou/index.htm#!/label/1
优点
 •   不同于传统的Web开发方式
 •   前后端彻底分工、代码维护起来更容易
 •   模块化更清晰
 •   在大多数Web场景下体验更好


缺点

 •   前端开发成本增加
 •   如考虑SEO后端开发成本也有所增加
个人看法
 •   MVC不仅仅是一种代码架构方式
 •   可以成为多人开发中的一种规范

Mais conteúdo relacionado

Mais procurados

Template mb-kao
Template mb-kaoTemplate mb-kao
Template mb-kao
xwcoder
 
Open stack glance
Open stack glanceOpen stack glance
Open stack glance
宛儒 余
 
Huangjing renren
Huangjing renrenHuangjing renren
Huangjing renren
d0nn9n
 
KISSY_Component
KISSY_ComponentKISSY_Component
KISSY_Component
yiming he
 
Varnish简介
Varnish简介Varnish简介
Varnish简介
fangdeng
 
D2_node在淘宝的应用实践_pdf版
D2_node在淘宝的应用实践_pdf版D2_node在淘宝的应用实践_pdf版
D2_node在淘宝的应用实践_pdf版
Jackson Tian
 
百姓网如何优化网速-Qcon2011
百姓网如何优化网速-Qcon2011百姓网如何优化网速-Qcon2011
百姓网如何优化网速-Qcon2011
Yiwei Ma
 
【第一季•第六期】Ajax & JSONP in Action
【第一季•第六期】Ajax & JSONP in Action【第一季•第六期】Ajax & JSONP in Action
【第一季•第六期】Ajax & JSONP in Action
tbosstraining
 

Mais procurados (20)

Backbone js and requirejs
Backbone js and requirejsBackbone js and requirejs
Backbone js and requirejs
 
Template mb-kao
Template mb-kaoTemplate mb-kao
Template mb-kao
 
Communication with python_http_module
Communication with python_http_moduleCommunication with python_http_module
Communication with python_http_module
 
Open stack glance
Open stack glanceOpen stack glance
Open stack glance
 
初探 Elastic Observability 的實踐方法
初探 Elastic Observability 的實踐方法初探 Elastic Observability 的實踐方法
初探 Elastic Observability 的實踐方法
 
Glider
GliderGlider
Glider
 
J query
J queryJ query
J query
 
Huangjing renren
Huangjing renrenHuangjing renren
Huangjing renren
 
ASP.NET Core 6.0 全新功能探索
ASP.NET Core 6.0 全新功能探索ASP.NET Core 6.0 全新功能探索
ASP.NET Core 6.0 全新功能探索
 
Http Headers 與 Cache 機制(2016)
Http Headers 與 Cache 機制(2016)Http Headers 與 Cache 機制(2016)
Http Headers 與 Cache 機制(2016)
 
KISSY_Component
KISSY_ComponentKISSY_Component
KISSY_Component
 
Ch04 會話管理
Ch04 會話管理Ch04 會話管理
Ch04 會話管理
 
Varnish简介
Varnish简介Varnish简介
Varnish简介
 
cnYes 如何使用 elasticsearch
cnYes 如何使用 elasticsearchcnYes 如何使用 elasticsearch
cnYes 如何使用 elasticsearch
 
D2_node在淘宝的应用实践_pdf版
D2_node在淘宝的应用实践_pdf版D2_node在淘宝的应用实践_pdf版
D2_node在淘宝的应用实践_pdf版
 
Angular js twmvc#17
Angular js twmvc#17Angular js twmvc#17
Angular js twmvc#17
 
Servlet & JSP 教學手冊第二版 - 第 4 章:會話管理
Servlet & JSP 教學手冊第二版 - 第 4 章:會話管理Servlet & JSP 教學手冊第二版 - 第 4 章:會話管理
Servlet & JSP 教學手冊第二版 - 第 4 章:會話管理
 
QCon - 一次 Clojure Web 编程实战
QCon - 一次 Clojure Web 编程实战QCon - 一次 Clojure Web 编程实战
QCon - 一次 Clojure Web 编程实战
 
百姓网如何优化网速-Qcon2011
百姓网如何优化网速-Qcon2011百姓网如何优化网速-Qcon2011
百姓网如何优化网速-Qcon2011
 
【第一季•第六期】Ajax & JSONP in Action
【第一季•第六期】Ajax & JSONP in Action【第一季•第六期】Ajax & JSONP in Action
【第一季•第六期】Ajax & JSONP in Action
 

Destaque (9)

Graziano intro 594
Graziano intro 594 Graziano intro 594
Graziano intro 594
 
续签无纸化项目总结
续签无纸化项目总结续签无纸化项目总结
续签无纸化项目总结
 
Demo review
Demo reviewDemo review
Demo review
 
Oracle Bazaar
Oracle BazaarOracle Bazaar
Oracle Bazaar
 
Cars entry
Cars entryCars entry
Cars entry
 
天祁《交易线》
天祁《交易线》天祁《交易线》
天祁《交易线》
 
Tm快报201202 daqiu
Tm快报201202 daqiuTm快报201202 daqiu
Tm快报201202 daqiu
 
First apresentation
First apresentationFirst apresentation
First apresentation
 
Tmall demo environment
Tmall demo environmentTmall demo environment
Tmall demo environment
 

Semelhante a Mvc

Kissy模块化实践
Kissy模块化实践Kissy模块化实践
Kissy模块化实践
yiming he
 
Script with engine
Script with engineScript with engine
Script with engine
Webrebuild
 
KISSY for starter
KISSY for starterKISSY for starter
KISSY for starter
yiming he
 
Node.js在淘宝的应用实践
Node.js在淘宝的应用实践Node.js在淘宝的应用实践
Node.js在淘宝的应用实践
taobao.com
 
J engine -构建高性能、可监控的前端应用框架
J engine -构建高性能、可监控的前端应用框架J engine -构建高性能、可监控的前端应用框架
J engine -构建高性能、可监控的前端应用框架
fangdeng
 
Node.js开发体验
Node.js开发体验Node.js开发体验
Node.js开发体验
QLeelulu
 
Javascript autoload
Javascript autoloadJavascript autoload
Javascript autoload
jay li
 
HTML5概览
HTML5概览HTML5概览
HTML5概览
Adam Lu
 

Semelhante a Mvc (20)

Kissy模块化实践
Kissy模块化实践Kissy模块化实践
Kissy模块化实践
 
Kissy design
Kissy designKissy design
Kissy design
 
Script with engine
Script with engineScript with engine
Script with engine
 
KISSY for starter
KISSY for starterKISSY for starter
KISSY for starter
 
EventProxy introduction - JacksonTian
EventProxy introduction - JacksonTianEventProxy introduction - JacksonTian
EventProxy introduction - JacksonTian
 
Event proxy introduction
Event proxy introductionEvent proxy introduction
Event proxy introduction
 
2023-netconf-deploy-azure-function-with-KEDA-on-aks
2023-netconf-deploy-azure-function-with-KEDA-on-aks2023-netconf-deploy-azure-function-with-KEDA-on-aks
2023-netconf-deploy-azure-function-with-KEDA-on-aks
 
Html5和css3入门
Html5和css3入门Html5和css3入门
Html5和css3入门
 
前端MVC之backbone
前端MVC之backbone前端MVC之backbone
前端MVC之backbone
 
Berserk js
Berserk jsBerserk js
Berserk js
 
J engine -构建高性能、可监控的前端应用框架
J engine -构建高性能、可监控的前端应用框架J engine -构建高性能、可监控的前端应用框架
J engine -构建高性能、可监控的前端应用框架
 
Node.js在淘宝的应用实践
Node.js在淘宝的应用实践Node.js在淘宝的应用实践
Node.js在淘宝的应用实践
 
J engine -构建高性能、可监控的前端应用框架
J engine -构建高性能、可监控的前端应用框架J engine -构建高性能、可监控的前端应用框架
J engine -构建高性能、可监控的前端应用框架
 
前端测试
前端测试前端测试
前端测试
 
前端测试
前端测试前端测试
前端测试
 
Node.js开发体验
Node.js开发体验Node.js开发体验
Node.js开发体验
 
Javascript autoload
Javascript autoloadJavascript autoload
Javascript autoload
 
CKAN 技術介紹 (開發篇)
CKAN 技術介紹 (開發篇)CKAN 技術介紹 (開發篇)
CKAN 技術介紹 (開發篇)
 
HTML5概览
HTML5概览HTML5概览
HTML5概览
 
2015 年逢甲大學資訊系:ASP.NET MVC 4 教育訓練4
2015 年逢甲大學資訊系:ASP.NET MVC 4 教育訓練42015 年逢甲大學資訊系:ASP.NET MVC 4 教育訓練4
2015 年逢甲大學資訊系:ASP.NET MVC 4 教育訓練4
 

Mais de tbmallf2e (20)

Node getting start
Node getting startNode getting start
Node getting start
 
猫粮快报
猫粮快报猫粮快报
猫粮快报
 
618风林火山(仙快羽)
618风林火山(仙快羽)618风林火山(仙快羽)
618风林火山(仙快羽)
 
新风尚活动分享
新风尚活动分享新风尚活动分享
新风尚活动分享
 
前端性能优化&测试
前端性能优化&测试前端性能优化&测试
前端性能优化&测试
 
前端性能测试
前端性能测试前端性能测试
前端性能测试
 
猫粮快报 金艳艳
猫粮快报 金艳艳猫粮快报 金艳艳
猫粮快报 金艳艳
 
浅谈前端安全与规范(渔隐)
浅谈前端安全与规范(渔隐)浅谈前端安全与规范(渔隐)
浅谈前端安全与规范(渔隐)
 
猫粮快报
猫粮快报猫粮快报
猫粮快报
 
番茄工作法
番茄工作法番茄工作法
番茄工作法
 
呜龙
呜龙呜龙
呜龙
 
快速开发Css
快速开发Css快速开发Css
快速开发Css
 
Google Chrome Developer Tools
Google Chrome Developer ToolsGoogle Chrome Developer Tools
Google Chrome Developer Tools
 
Hello Html5 Games
Hello Html5 GamesHello Html5 Games
Hello Html5 Games
 
Velocity beijing 2011 xianyu
Velocity beijing 2011   xianyuVelocity beijing 2011   xianyu
Velocity beijing 2011 xianyu
 
Chrome中的创意和应用
Chrome中的创意和应用Chrome中的创意和应用
Chrome中的创意和应用
 
Wap
WapWap
Wap
 
高端版Tmall
高端版Tmall高端版Tmall
高端版Tmall
 
2011 04-19 html5 css3 及脚本
2011 04-19 html5 css3 及脚本2011 04-19 html5 css3 及脚本
2011 04-19 html5 css3 及脚本
 
如何为非文本内容添加合适的替代信息
如何为非文本内容添加合适的替代信息如何为非文本内容添加合适的替代信息
如何为非文本内容添加合适的替代信息
 

Mvc