SlideShare ist ein Scribd-Unternehmen logo
1 von 127
Downloaden Sie, um offline zu lesen
的昨天、今天与明天

                   承玉
    yiminghe@gmail.com




                     1
定位、目标


  立足淘宝业务,服务电子商
务行业,做一个功能全面、灵活
定制、社区活跃的前端框架.
            - kissyteam
大纲
• KISSY 的昨天

• KISSY 今天与明天
 –   seed
 –   core
 –   component
 –   gallery
 –   sub project
KISSY
• 2009.07 – 2009.12 构思期

• 2010.01 – 2010.07 孕育期

• 2010.07 – 2011.01 快速成长期

• 2011.01 – now     稳固发展期
• KISSY 的昨天
2009 构思
2009
• KISSY Editor 1.0

  – 依赖 YUI2 Core
  – KISSY 雏形
    •   mix
    •   add
    •   app
    •   ready
2010上 孕育




• KISSY 1.0.0 – 1.0.8
2010上
• KISSY 1.0.0 – 1.0.8
  – getScript/cookie/dom/event/json/node
  – css/common/grid/reset.css

  – datalazyload/suggest/switchable/editor/
    swf(flash)
• suggest
• switchable
  – tab/carousel/slide
2010 下 快速成长期




全职的 kissyteam + 志愿者

  KISSY 1.1.0 – 1.1.7
2010 下
• 核心基本可用
 – simple loader => seajs
 – ajax/anim/dom/event/node/ua/base/cookie
 – cssreset/grid/common.css


• 组件兼容
 – switchable/suggest/datalazyload/flash
2010 下



• 更多的组件
2010 下
• Calendar
  – 日期选择
  – 范围限定
  – 事件触发
• Ajbridge:javascript 和 flash 的桥梁

    – storage
    – uploader
    – communication
• Imagezoom:图片放大镜
 – 多种放大形式自由选择
• Overlay:浮层控制
 – align
 – width/height
 – drag
New KISSY Editor
• 底层稳定
• 插件丰富
• Draggable 节点可拖放

• Template 模板系统
 – logic
 – 控制结构自定义
• KISSY 今天 v1.2 的变化
概况
sub project   • kissy-nodejs/kissy-tools…


  gallery     • grid/chart/kscroll…


component     • editor/overlay/switchable…


   core       • dom/event/base…


   seed       • lang/loader
seed
seed
• 语言增强&前提准备
 – mix/merge/clone/extend…
 – each/map/reduce/bind…
 – escapeHTML/param/substitute…

 – ready/globalEval…

 – config()
• module mechanism

                     package




           module
          compiler



                               AMD
AMD
KISSY.add
          module registration


KISSY.add(function(S,DOM){
        // TODO!
},{
        requires:[“dom”]
});
KISSY.use

                 Use modules


KISSY.use(“overlay,switchable”,
function(S,Overlay,Switchable){
         // TODO!
});
package
KISSY.config
            Package config


KISSY.config({
        packages:[{
               name:”yourpackage”
               path:”yourpath”
        }]
});
module compiler
module compiler
   Combine modules
<java classname="com.taobao.f2e.Main">
     <arg value="-requires"/>
     <!-- 入口模块 -->
     <arg value="youpackage/xx"/>
     <arg value="-baseUrls"/>
     <arg value="${assets.dir}"/>
     <arg value="-encodings"/>
     <arg value="${charset}"/>
     <arg value="-outputEncoding"/>
     <arg value="${charset}"/>
     <arg value="-output"/>
     <arg value="xx.combo.js"/>
     <classpath>
          <pathelement path="${module.compiler}"/>
          <pathelement path="${java.class.path}"/>
     </classpath>
</java>
core
core
DOM
– query(selector,context):context 限制同selector


– clone:克隆自身以及事件

– inner/outer|Width/Height
Event
Unified registration
• 原生节点
 – S.one(domNode).on(“click”,fn,context)


• 自定义事件
 – obj.on(“customEvent”,fn,context)
fire
• Native event
  – S.one(domNode).fire(“click”)


• Custom event
  – obj.fire(“customEvent”)
bubbling
• Native event

    ul id=„test‟

           li


                        S.all(“#test li”).on(“click”,fn)
           li


           li
delegation
• Native event

    ul id=„test‟        S.one(“#test”).delegate(“click”,”li”,fn)

           li


           li


           li
Custom event
• registration


        obj1


                      obj[1..3].on(“customEvent”,fn)
        obj2


        obj3
Custom event
Bubble and delegation


 host                   host.on(“customEvent”,fn)

        obj1
                        e.target instanceof Obj

        obj2


        obj3            obj.addTarget(host);
                        Obj.publish(“customEvent”,{
                                 bubbles:true
                        });
DOM事件补全

•   submit/change @ie bubble
•   focusin/out @non-ie
•   mouseenter/leave @non-ie
•   hashchange @ie
•   mousewheel @firefox
•   valuechange @all
ajax
ajax
IO
io
XMLHttpRequest

KISSY.io({
        url : ‟getJson.htm‟,
        cache : false,
        type : ‟get‟,// „post‟
        data : { x: 1},
        dataType : ‟json‟, // „text‟?
        success : function(d){
        },
        error : function(_,reason){
        },
        complete : function(){
        }
});
JSONP

KISSY.io({
        url : ‟getJsonp.htm‟,
        type : ‟get‟,// „post‟
        cache : false,
        data : { x: 1},
        dataType : ‟jsonp‟,
        success : function(d){
        },
        error : function(_,reason){
        },
        complete : function(){
        }
});
file upload

KISSY.io({
        url : ‟upload.htm‟,
        type : „post‟,              <form id=„formEl‟ method=„post‟
        data : {x: 1},              enctype=„multipart/form-data‟ >
        dataType : ‟json‟,          <input name=„f‟ type=„file‟ />
        form: „#formEl‟,            </form>
        success : function(d){
        },
        error : function(_,reason){
        },
        complete : function(){
        }
});
form serialization

KISSY.io({
        url : ‟getJson.htm‟,
        type : „post‟,                <form id=„formEl‟ >
        data : {x: 1},                <input name=„f‟ value=„s‟ />
        dataType : ‟json‟,            </form>
        form: „#formEl‟,
        success : function(d){
        },
        error : function(_,reason){
        },
        complete : function(){
        }
});
xdr
• Cross domain request
  – Sub domain
    { xdr : { subDomain :
         { proxy : ”/proxy.html” } // 默认:/sub_domain_proxy.html
    }}


  – Different domain
    • transparent in client
    • server apply to CORS
cancellable




  xhr.abort();
anim
• memory efficient
  – 1.1.6




  – 1.2
• Less cpu
more
• support scrollTop/Left
more
• support scrollTop/Left

• Support queue
  – Stop single animation
  – Stop single queue
  – Stop all queues
node
Easy to use
DOM
Event


        Anim




    Node
• Easy chained query



             S.all(“.cls”).all(“a”)
              .css(“color”,”red”)
                    .end()
            .css(“color”,”green”);
Easy node creation

S.all(“<div class=„easy‟>kissy</div>”).
appendTo(document.body);
Easy dom operation


node.appendTo(another);
node.css(„color‟,‟red‟);
node.attr(“checked”)
Easy event registration


node.on(„click‟,fn);
node.delegate(„click‟,‟a‟,fn);
node.detach(„click‟)
node.fire(„click‟)
Easy animation

node.animate({left:”100px”,top:”100px”});
node.stop();
node.stop(true);
node.isRunning();
node.stop(true,true,queueName);

node.slideToggle();
node.fadeToggle();
base
• Solid foundation
Support validator

MyClass.ATTRS={
        myAttr:{
                 validator:function(v){
                          return v>10;
                 }
        }
};

myClass.set(“myAttr”,1) // => false
Support bulk set


myClass.set({
     attr1 : v1,
     attr2 : v2,
     attr3 : v3
});
Support sub attribute



myClass.set(“attr”, { child1:1 });

myClass.set( “attr.child2” , ”2”);

myClass.get(“attr”) // => { child1:1,child2:2}
兼容
• ua



• json



• Cookie
Component
component
dd
dd
• Droppable
   – 可放置区域
• DraggableDelegate
   – 拖委托
• DroppableDelegate
   – 放委托
• Proxy
   – 拖代理
• Scroll
   – 容器自适应滚动
switchable

• aria



• keyboard
resizable




new Resizable({
       node : ”#container”,
       handlers: [“b”,”tl”], // 可拖动位置
       // 最大最小宽高
       minHeight : 50,
       maxHeight : 100,
       minWidth : 40,
       maxWidth : 400
});
validation
• 配置简单

• 丰富的验证规则

• 多重验证,依赖验证

• 自定义验证规则

• 多种信息提示方式
waterfall
与时俱进的新布局

new Waterfall.Loader({
      // 容器
      container:"#ColumnContainer",
      // 加载方式
      load: function(success, end) {
         $('#loadingPins').show();
         S.ajax({
             success: function(d) {
                // 如果数据错误, 则立即结束
                if (d.stat !== 'ok') {
                    alert('load data error!');
                    // 停止加载
                    end();
                    return;
                }
                // 拼装每页数据
                var items = [];
                        // 继续加载
                success (items);
             },
             complete: function() {
                $('#loadingPins').hide();
             }
         });
      },
      // 最小列数
      minColCount : 2,
      // 列宽度
      colWidth : 228
  });
mvc
• Scaffold for KISSY app.
  – Model / Collection
     • Base
  – View
  – Router
  – Sync
editor is module too!


KISSY.use(“editor”,function(S , Editor){
      new Editor(…).use(…);
});
Consistent interface
Consistent interface
• Consistent interface across most components
   – set() / get()

   – new / render() / show() / hide() / destroy()

   – addChild()/removeChild()

   – width/height/prefixCls/render
Consistent interface
• Consistent interface across most components
   – set() / get()
   – new / render() / show() / hide() / destroy()
   – addChild()/removeChild()
   – width/height/prefixCls/render



• Overlay / Menu / MenuButton / Button / Tree
overlay
• closeAction
  – hide / destroy



  new Overlay.Dialog({
    closeAction : “hide”
  });
overlay

• aria
  – 焦点捕获
• resize
  – 配合 resizable
• effect
  – none/ fade/ slide
Simulated controls
• Button
  – attributes
     • disabled
     • content
     • Value
  – events
     • click
Simulated controls
• Menu
  – events
     • click
• MenuItem
  – Attributes
     •   selectable
     •   checkable
     •   value
     •   content
• MenuButton
  – Attributes
     • Menu
     • menuCfg
  – Events
     • Click
  – Method
     • addItem
     • removeItem
• Tree
   – Events
       • click

• TreeNode
   – Attributes
      • content
      • selected
      • expanded
   – Methods
      • select()
      • collapse()
gallery
gallery
usage

KISSY.config({ packages : [{
        name : ‟gallery‟,
        path : ‟http://a.tbcdn.cn/s/kissy/‟
}] });



KISSY.use(“gallery/name/version/”)
• grid
  – gallery/grid/1.0/
  – 董晓庆 (lp.taobao.com)
• chart
  – gallery/chart/1.0
  – 文龙
• uploader
  – gallery/form/1.0
  – 剑平 & …
• Starrating
  – gallery/starrating/1.0
  – 盛艳(乔花)
• kscroll
  – gallery/kscroll/1.0
  – 常胤
• huabao
  – Gallery/huabao/1.0/
  – 法海
• Countdown
  – gallery/countdown/1.0
  – 基德
• Reflection
  – gallery/reflection/1.0
  – 元泉
• image-tagging
  – gallery/image-tagging/1.0
  – 乔福
• more
  – Selectable
  – Spotlight
  – Pagination
  – Magnifier
  – …..


• 25
Look forward to your participation
Sub project
Sub project

•   Kissy-tools : 工具集合
•   Kissy-util : 代码片段
•   Kissy-dpl : 设计模式规范库
•   Kissy-ajbridge : as-js 桥梁
•   Kissy-nodejs : kissy on nodejs
Kissy-nodejs
• nodejs-kissy
  – ui-less unit test
• nodejs-kissy
  – ui-less unit test


• npm install KISSY
  – KISSY = require(“KISSY”);
  – KISSY.config()
  – KISSY.add
  – KISSY.use
KISSY 的明天
• Loader
   – Auto combo
   – Load on demand

• S.use("overlay,calendar,switchable,
  suggest,gallery/kscroll/1.0/");
• Loader
   – Auto combo v1.3
   – Load on demand v1.3

• S.use("overlay,calendar,switchable,
  suggest,gallery/kscroll/1.0/");
• Core
  – Stable
• Core
  – Stable
  – Bug-free
    • Github issue
• Core
  – Stable
  – Bug-free
  – api-friendly
     • more sugar ?
     • Promise api v1.3
• Core
  – Stable
  – Bug-free
  – api-friendly
  – Evolve
     • namespace in event v1.3
     • pause/resume in anim v1.3
     • wrap in DOM v1.3
• Component
  – Consistent interface
    • Suggest => Autocomplete v1.3
    • Switchable -> Tab v1.3
    •…
• Component
  – Consistent interface
  – Full-featured components
    • Switchable – enhancement v1.3
    •…
• Component
  – Consistent interface
  – Full-featured components
  – performance
    • ie
• Component
  – Consistent interface
  – Full-featured components
  – performance
  – Scalability
    • Easy to customize
• Component
  – Consistent interface
  – Full-featured components
  – performance
  – Scalability
  – Test case covered
    • more tc
• Editor
  – Open – API

  – Load on demand v1.3

  – Core functionality covered by test case

  – Plugin gallery
• KISSY - Gallery
  – Open

  – Promotion

  – Easy to use
• KISSY Sub Project
  – KISSY Mobile ?

  – Game Engine ?

  – Parser ?

  – Welcome !
• Contact kissyteam
  – Docs:
     http://docs.kissyui.com
  – Bug:
     http://github.com/kissyteam/kissy/issues
  – email:
     kissyteam@gmail.com
  – Twitter:
     http://twitter.com/#!/kissyteam
  – Google Group:
     http://groups.google.com/group/kissy-ui
kissy-past-now-future

Weitere ähnliche Inhalte

Was ist angesagt?

Stratalux Cloud Formation and Chef Integration Presentation
Stratalux Cloud Formation and Chef Integration PresentationStratalux Cloud Formation and Chef Integration Presentation
Stratalux Cloud Formation and Chef Integration Presentation
Jeremy Przygode
 
From mysql to MongoDB(MongoDB2011北京交流会)
From mysql to MongoDB(MongoDB2011北京交流会)From mysql to MongoDB(MongoDB2011北京交流会)
From mysql to MongoDB(MongoDB2011北京交流会)
Night Sailer
 
ZendCon2010 Doctrine MongoDB ODM
ZendCon2010 Doctrine MongoDB ODMZendCon2010 Doctrine MongoDB ODM
ZendCon2010 Doctrine MongoDB ODM
Jonathan Wage
 

Was ist angesagt? (20)

Introduction to Nodejs
Introduction to NodejsIntroduction to Nodejs
Introduction to Nodejs
 
Stratalux Cloud Formation and Chef Integration Presentation
Stratalux Cloud Formation and Chef Integration PresentationStratalux Cloud Formation and Chef Integration Presentation
Stratalux Cloud Formation and Chef Integration Presentation
 
The state of your own hypertext preprocessor
The state of your own hypertext preprocessorThe state of your own hypertext preprocessor
The state of your own hypertext preprocessor
 
Mongoose and MongoDB 101
Mongoose and MongoDB 101Mongoose and MongoDB 101
Mongoose and MongoDB 101
 
[Coscup 2012] JavascriptMVC
[Coscup 2012] JavascriptMVC[Coscup 2012] JavascriptMVC
[Coscup 2012] JavascriptMVC
 
Symfony2 from the Trenches
Symfony2 from the TrenchesSymfony2 from the Trenches
Symfony2 from the Trenches
 
Doctrine MongoDB Object Document Mapper
Doctrine MongoDB Object Document MapperDoctrine MongoDB Object Document Mapper
Doctrine MongoDB Object Document Mapper
 
Html5 For Jjugccc2009fall
Html5 For Jjugccc2009fallHtml5 For Jjugccc2009fall
Html5 For Jjugccc2009fall
 
From mysql to MongoDB(MongoDB2011北京交流会)
From mysql to MongoDB(MongoDB2011北京交流会)From mysql to MongoDB(MongoDB2011北京交流会)
From mysql to MongoDB(MongoDB2011北京交流会)
 
Web Components With Rails
Web Components With RailsWeb Components With Rails
Web Components With Rails
 
HTML,CSS Next
HTML,CSS NextHTML,CSS Next
HTML,CSS Next
 
DOM Scripting Toolkit - jQuery
DOM Scripting Toolkit - jQueryDOM Scripting Toolkit - jQuery
DOM Scripting Toolkit - jQuery
 
Web2.0 with jQuery in English
Web2.0 with jQuery in EnglishWeb2.0 with jQuery in English
Web2.0 with jQuery in English
 
Paris js extensions
Paris js extensionsParis js extensions
Paris js extensions
 
Web::Machine - Simpl{e,y} HTTP
Web::Machine - Simpl{e,y} HTTPWeb::Machine - Simpl{e,y} HTTP
Web::Machine - Simpl{e,y} HTTP
 
Forget the Web
Forget the WebForget the Web
Forget the Web
 
2015 02-09 - NoSQL Vorlesung Mosbach
2015 02-09 - NoSQL Vorlesung Mosbach2015 02-09 - NoSQL Vorlesung Mosbach
2015 02-09 - NoSQL Vorlesung Mosbach
 
ZendCon2010 Doctrine MongoDB ODM
ZendCon2010 Doctrine MongoDB ODMZendCon2010 Doctrine MongoDB ODM
ZendCon2010 Doctrine MongoDB ODM
 
History of jQuery
History of jQueryHistory of jQuery
History of jQuery
 
HTML5: where flash isn't needed anymore
HTML5: where flash isn't needed anymoreHTML5: where flash isn't needed anymore
HTML5: where flash isn't needed anymore
 

Ähnlich wie kissy-past-now-future

Writing robust Node.js applications
Writing robust Node.js applicationsWriting robust Node.js applications
Writing robust Node.js applications
Tom Croucher
 
Taming that client side mess with Backbone.js
Taming that client side mess with Backbone.jsTaming that client side mess with Backbone.js
Taming that client side mess with Backbone.js
Jarod Ferguson
 
Week 4 - jQuery + Ajax
Week 4 - jQuery + AjaxWeek 4 - jQuery + Ajax
Week 4 - jQuery + Ajax
baygross
 
The Open Web and what it means
The Open Web and what it meansThe Open Web and what it means
The Open Web and what it means
Robert Nyman
 
#NewMeetup Performance
#NewMeetup Performance#NewMeetup Performance
#NewMeetup Performance
Justin Cataldo
 
Websockets talk at Rubyconf Uruguay 2010
Websockets talk at Rubyconf Uruguay 2010Websockets talk at Rubyconf Uruguay 2010
Websockets talk at Rubyconf Uruguay 2010
Ismael Celis
 
JavaScript APIs - The Web is the Platform - .toster conference, Moscow
JavaScript APIs - The Web is the Platform - .toster conference, MoscowJavaScript APIs - The Web is the Platform - .toster conference, Moscow
JavaScript APIs - The Web is the Platform - .toster conference, Moscow
Robert Nyman
 

Ähnlich wie kissy-past-now-future (20)

Writing Maintainable JavaScript
Writing Maintainable JavaScriptWriting Maintainable JavaScript
Writing Maintainable JavaScript
 
Burn down the silos! Helping dev and ops gel on high availability websites
Burn down the silos! Helping dev and ops gel on high availability websitesBurn down the silos! Helping dev and ops gel on high availability websites
Burn down the silos! Helping dev and ops gel on high availability websites
 
Express Presentation
Express PresentationExpress Presentation
Express Presentation
 
JavaScript JQUERY AJAX
JavaScript JQUERY AJAXJavaScript JQUERY AJAX
JavaScript JQUERY AJAX
 
Writing robust Node.js applications
Writing robust Node.js applicationsWriting robust Node.js applications
Writing robust Node.js applications
 
Taming that client side mess with Backbone.js
Taming that client side mess with Backbone.jsTaming that client side mess with Backbone.js
Taming that client side mess with Backbone.js
 
Week 4 - jQuery + Ajax
Week 4 - jQuery + AjaxWeek 4 - jQuery + Ajax
Week 4 - jQuery + Ajax
 
soft-shake.ch - Hands on Node.js
soft-shake.ch - Hands on Node.jssoft-shake.ch - Hands on Node.js
soft-shake.ch - Hands on Node.js
 
Jquery optimization-tips
Jquery optimization-tipsJquery optimization-tips
Jquery optimization-tips
 
Javascript first-class citizenery
Javascript first-class citizeneryJavascript first-class citizenery
Javascript first-class citizenery
 
jQuery Makes Writing JavaScript Fun Again (for HTML5 User Group)
jQuery Makes Writing JavaScript Fun Again (for HTML5 User Group)jQuery Makes Writing JavaScript Fun Again (for HTML5 User Group)
jQuery Makes Writing JavaScript Fun Again (for HTML5 User Group)
 
The Open Web and what it means
The Open Web and what it meansThe Open Web and what it means
The Open Web and what it means
 
Play vs Rails
Play vs RailsPlay vs Rails
Play vs Rails
 
Hazelcast and MongoDB at Cloud CMS
Hazelcast and MongoDB at Cloud CMSHazelcast and MongoDB at Cloud CMS
Hazelcast and MongoDB at Cloud CMS
 
Introduction to jQuery - Barcamp London 9
Introduction to jQuery - Barcamp London 9Introduction to jQuery - Barcamp London 9
Introduction to jQuery - Barcamp London 9
 
#NewMeetup Performance
#NewMeetup Performance#NewMeetup Performance
#NewMeetup Performance
 
Jquery fundamentals
Jquery fundamentalsJquery fundamentals
Jquery fundamentals
 
Websockets talk at Rubyconf Uruguay 2010
Websockets talk at Rubyconf Uruguay 2010Websockets talk at Rubyconf Uruguay 2010
Websockets talk at Rubyconf Uruguay 2010
 
JavaScript APIs - The Web is the Platform - .toster conference, Moscow
JavaScript APIs - The Web is the Platform - .toster conference, MoscowJavaScript APIs - The Web is the Platform - .toster conference, Moscow
JavaScript APIs - The Web is the Platform - .toster conference, Moscow
 
Hujs 总结
Hujs 总结Hujs 总结
Hujs 总结
 

Mehr von yiming he (20)

kissy 1.5 progress
kissy 1.5 progresskissy 1.5 progress
kissy 1.5 progress
 
kissy at alibaba
kissy at alibabakissy at alibaba
kissy at alibaba
 
kissy modularization part2
kissy modularization part2kissy modularization part2
kissy modularization part2
 
kissy modularization part1
kissy modularization part1kissy modularization part1
kissy modularization part1
 
KISSY @ 2013-2
KISSY @ 2013-2KISSY @ 2013-2
KISSY @ 2013-2
 
KISSY 1.4.0 released
KISSY 1.4.0 releasedKISSY 1.4.0 released
KISSY 1.4.0 released
 
callSuper in kissy
callSuper in kissycallSuper in kissy
callSuper in kissy
 
KISSY XTemplate
KISSY XTemplateKISSY XTemplate
KISSY XTemplate
 
Introduction to kissy for adc 2013
Introduction to kissy for adc 2013Introduction to kissy for adc 2013
Introduction to kissy for adc 2013
 
Kissy component system
Kissy component systemKissy component system
Kissy component system
 
KISSY@2013.05
KISSY@2013.05KISSY@2013.05
KISSY@2013.05
 
kissy@2013.03
kissy@2013.03 kissy@2013.03
kissy@2013.03
 
kissy@2013
kissy@2013kissy@2013
kissy@2013
 
KISSY 1.3-released
KISSY 1.3-releasedKISSY 1.3-released
KISSY 1.3-released
 
Simple kissy1.3
Simple kissy1.3Simple kissy1.3
Simple kissy1.3
 
Kissy in-progress
Kissy in-progressKissy in-progress
Kissy in-progress
 
Kissy dpl-practice
Kissy dpl-practiceKissy dpl-practice
Kissy dpl-practice
 
编辑器设计2
编辑器设计2编辑器设计2
编辑器设计2
 
KISSY Editor Design 2
KISSY Editor Design 2KISSY Editor Design 2
KISSY Editor Design 2
 
KISSY Component API Design
KISSY Component API DesignKISSY Component API Design
KISSY Component API Design
 

Kürzlich hochgeladen

如何办理(NCL毕业证书)纽卡斯尔大学毕业证毕业证成绩单原版一比一
如何办理(NCL毕业证书)纽卡斯尔大学毕业证毕业证成绩单原版一比一如何办理(NCL毕业证书)纽卡斯尔大学毕业证毕业证成绩单原版一比一
如何办理(NCL毕业证书)纽卡斯尔大学毕业证毕业证成绩单原版一比一
avy6anjnd
 
Top profile Call Girls In Darbhanga [ 7014168258 ] Call Me For Genuine Models...
Top profile Call Girls In Darbhanga [ 7014168258 ] Call Me For Genuine Models...Top profile Call Girls In Darbhanga [ 7014168258 ] Call Me For Genuine Models...
Top profile Call Girls In Darbhanga [ 7014168258 ] Call Me For Genuine Models...
nirzagarg
 
Top profile Call Girls In Ranchi [ 7014168258 ] Call Me For Genuine Models We...
Top profile Call Girls In Ranchi [ 7014168258 ] Call Me For Genuine Models We...Top profile Call Girls In Ranchi [ 7014168258 ] Call Me For Genuine Models We...
Top profile Call Girls In Ranchi [ 7014168258 ] Call Me For Genuine Models We...
gajnagarg
 
Top profile Call Girls In Thrissur [ 7014168258 ] Call Me For Genuine Models ...
Top profile Call Girls In Thrissur [ 7014168258 ] Call Me For Genuine Models ...Top profile Call Girls In Thrissur [ 7014168258 ] Call Me For Genuine Models ...
Top profile Call Girls In Thrissur [ 7014168258 ] Call Me For Genuine Models ...
nirzagarg
 
如何办理莱斯大学毕业证(Rice毕业证)毕业证成绩单原版一比一
如何办理莱斯大学毕业证(Rice毕业证)毕业证成绩单原版一比一如何办理莱斯大学毕业证(Rice毕业证)毕业证成绩单原版一比一
如何办理莱斯大学毕业证(Rice毕业证)毕业证成绩单原版一比一
avy6anjnd
 
在线定制(UBC毕业证书)英属哥伦比亚大学毕业证成绩单留信学历认证原版一比一
在线定制(UBC毕业证书)英属哥伦比亚大学毕业证成绩单留信学历认证原版一比一在线定制(UBC毕业证书)英属哥伦比亚大学毕业证成绩单留信学历认证原版一比一
在线定制(UBC毕业证书)英属哥伦比亚大学毕业证成绩单留信学历认证原版一比一
qh1ao5mm
 
Top profile Call Girls In dewas [ 7014168258 ] Call Me For Genuine Models We ...
Top profile Call Girls In dewas [ 7014168258 ] Call Me For Genuine Models We ...Top profile Call Girls In dewas [ 7014168258 ] Call Me For Genuine Models We ...
Top profile Call Girls In dewas [ 7014168258 ] Call Me For Genuine Models We ...
gajnagarg
 
如何办理新西兰林肯大学毕业证(Lincoln毕业证书)成绩单原版一比一
如何办理新西兰林肯大学毕业证(Lincoln毕业证书)成绩单原版一比一如何办理新西兰林肯大学毕业证(Lincoln毕业证书)成绩单原版一比一
如何办理新西兰林肯大学毕业证(Lincoln毕业证书)成绩单原版一比一
opyff
 
John Deere Tractors 5415 Diagnostic Repair Service Manual.pdf
John Deere Tractors 5415 Diagnostic Repair Service Manual.pdfJohn Deere Tractors 5415 Diagnostic Repair Service Manual.pdf
John Deere Tractors 5415 Diagnostic Repair Service Manual.pdf
Excavator
 
CELLULAR RESPIRATION. Helpful slides for
CELLULAR RESPIRATION. Helpful slides forCELLULAR RESPIRATION. Helpful slides for
CELLULAR RESPIRATION. Helpful slides for
euphemism22
 
如何办理(Waterloo毕业证书)滑铁卢大学毕业证毕业证成绩单原版一比一
如何办理(Waterloo毕业证书)滑铁卢大学毕业证毕业证成绩单原版一比一如何办理(Waterloo毕业证书)滑铁卢大学毕业证毕业证成绩单原版一比一
如何办理(Waterloo毕业证书)滑铁卢大学毕业证毕业证成绩单原版一比一
avy6anjnd
 
如何办理多伦多大学毕业证(UofT毕业证书)成绩单原版一比一
如何办理多伦多大学毕业证(UofT毕业证书)成绩单原版一比一如何办理多伦多大学毕业证(UofT毕业证书)成绩单原版一比一
如何办理多伦多大学毕业证(UofT毕业证书)成绩单原版一比一
opyff
 
一比一原版(PU学位证书)普渡大学毕业证学历认证加急办理
一比一原版(PU学位证书)普渡大学毕业证学历认证加急办理一比一原版(PU学位证书)普渡大学毕业证学历认证加急办理
一比一原版(PU学位证书)普渡大学毕业证学历认证加急办理
ezgenuh
 
如何办理美国华盛顿大学毕业证(UW毕业证书)毕业证成绩单原版一比一
如何办理美国华盛顿大学毕业证(UW毕业证书)毕业证成绩单原版一比一如何办理美国华盛顿大学毕业证(UW毕业证书)毕业证成绩单原版一比一
如何办理美国华盛顿大学毕业证(UW毕业证书)毕业证成绩单原版一比一
avy6anjnd
 

Kürzlich hochgeladen (20)

如何办理(NCL毕业证书)纽卡斯尔大学毕业证毕业证成绩单原版一比一
如何办理(NCL毕业证书)纽卡斯尔大学毕业证毕业证成绩单原版一比一如何办理(NCL毕业证书)纽卡斯尔大学毕业证毕业证成绩单原版一比一
如何办理(NCL毕业证书)纽卡斯尔大学毕业证毕业证成绩单原版一比一
 
Is Your Mercedes Benz Trunk Refusing To Close Here's What Might Be Wrong
Is Your Mercedes Benz Trunk Refusing To Close Here's What Might Be WrongIs Your Mercedes Benz Trunk Refusing To Close Here's What Might Be Wrong
Is Your Mercedes Benz Trunk Refusing To Close Here's What Might Be Wrong
 
JOHN DEERE 7200R 7215R 7230R 7260R 7280R TECHNICAL SERVICE PDF MANUAL 2680PGS...
JOHN DEERE 7200R 7215R 7230R 7260R 7280R TECHNICAL SERVICE PDF MANUAL 2680PGS...JOHN DEERE 7200R 7215R 7230R 7260R 7280R TECHNICAL SERVICE PDF MANUAL 2680PGS...
JOHN DEERE 7200R 7215R 7230R 7260R 7280R TECHNICAL SERVICE PDF MANUAL 2680PGS...
 
Top profile Call Girls In Darbhanga [ 7014168258 ] Call Me For Genuine Models...
Top profile Call Girls In Darbhanga [ 7014168258 ] Call Me For Genuine Models...Top profile Call Girls In Darbhanga [ 7014168258 ] Call Me For Genuine Models...
Top profile Call Girls In Darbhanga [ 7014168258 ] Call Me For Genuine Models...
 
Top profile Call Girls In Ranchi [ 7014168258 ] Call Me For Genuine Models We...
Top profile Call Girls In Ranchi [ 7014168258 ] Call Me For Genuine Models We...Top profile Call Girls In Ranchi [ 7014168258 ] Call Me For Genuine Models We...
Top profile Call Girls In Ranchi [ 7014168258 ] Call Me For Genuine Models We...
 
Top profile Call Girls In Thrissur [ 7014168258 ] Call Me For Genuine Models ...
Top profile Call Girls In Thrissur [ 7014168258 ] Call Me For Genuine Models ...Top profile Call Girls In Thrissur [ 7014168258 ] Call Me For Genuine Models ...
Top profile Call Girls In Thrissur [ 7014168258 ] Call Me For Genuine Models ...
 
如何办理莱斯大学毕业证(Rice毕业证)毕业证成绩单原版一比一
如何办理莱斯大学毕业证(Rice毕业证)毕业证成绩单原版一比一如何办理莱斯大学毕业证(Rice毕业证)毕业证成绩单原版一比一
如何办理莱斯大学毕业证(Rice毕业证)毕业证成绩单原版一比一
 
在线定制(UBC毕业证书)英属哥伦比亚大学毕业证成绩单留信学历认证原版一比一
在线定制(UBC毕业证书)英属哥伦比亚大学毕业证成绩单留信学历认证原版一比一在线定制(UBC毕业证书)英属哥伦比亚大学毕业证成绩单留信学历认证原版一比一
在线定制(UBC毕业证书)英属哥伦比亚大学毕业证成绩单留信学历认证原版一比一
 
Top profile Call Girls In dewas [ 7014168258 ] Call Me For Genuine Models We ...
Top profile Call Girls In dewas [ 7014168258 ] Call Me For Genuine Models We ...Top profile Call Girls In dewas [ 7014168258 ] Call Me For Genuine Models We ...
Top profile Call Girls In dewas [ 7014168258 ] Call Me For Genuine Models We ...
 
Is Your BMW PDC Malfunctioning Discover How to Easily Reset It
Is Your BMW PDC Malfunctioning Discover How to Easily Reset ItIs Your BMW PDC Malfunctioning Discover How to Easily Reset It
Is Your BMW PDC Malfunctioning Discover How to Easily Reset It
 
Electronic Stability Program. (ESP).pptx
Electronic Stability Program. (ESP).pptxElectronic Stability Program. (ESP).pptx
Electronic Stability Program. (ESP).pptx
 
如何办理新西兰林肯大学毕业证(Lincoln毕业证书)成绩单原版一比一
如何办理新西兰林肯大学毕业证(Lincoln毕业证书)成绩单原版一比一如何办理新西兰林肯大学毕业证(Lincoln毕业证书)成绩单原版一比一
如何办理新西兰林肯大学毕业证(Lincoln毕业证书)成绩单原版一比一
 
Effortless Driving Experience Premier Mercedes Sprinter Suspension Service
Effortless Driving Experience Premier Mercedes Sprinter Suspension ServiceEffortless Driving Experience Premier Mercedes Sprinter Suspension Service
Effortless Driving Experience Premier Mercedes Sprinter Suspension Service
 
John Deere Tractors 5415 Diagnostic Repair Service Manual.pdf
John Deere Tractors 5415 Diagnostic Repair Service Manual.pdfJohn Deere Tractors 5415 Diagnostic Repair Service Manual.pdf
John Deere Tractors 5415 Diagnostic Repair Service Manual.pdf
 
CELLULAR RESPIRATION. Helpful slides for
CELLULAR RESPIRATION. Helpful slides forCELLULAR RESPIRATION. Helpful slides for
CELLULAR RESPIRATION. Helpful slides for
 
如何办理(Waterloo毕业证书)滑铁卢大学毕业证毕业证成绩单原版一比一
如何办理(Waterloo毕业证书)滑铁卢大学毕业证毕业证成绩单原版一比一如何办理(Waterloo毕业证书)滑铁卢大学毕业证毕业证成绩单原版一比一
如何办理(Waterloo毕业证书)滑铁卢大学毕业证毕业证成绩单原版一比一
 
如何办理多伦多大学毕业证(UofT毕业证书)成绩单原版一比一
如何办理多伦多大学毕业证(UofT毕业证书)成绩单原版一比一如何办理多伦多大学毕业证(UofT毕业证书)成绩单原版一比一
如何办理多伦多大学毕业证(UofT毕业证书)成绩单原版一比一
 
一比一原版(PU学位证书)普渡大学毕业证学历认证加急办理
一比一原版(PU学位证书)普渡大学毕业证学历认证加急办理一比一原版(PU学位证书)普渡大学毕业证学历认证加急办理
一比一原版(PU学位证书)普渡大学毕业证学历认证加急办理
 
如何办理美国华盛顿大学毕业证(UW毕业证书)毕业证成绩单原版一比一
如何办理美国华盛顿大学毕业证(UW毕业证书)毕业证成绩单原版一比一如何办理美国华盛顿大学毕业证(UW毕业证书)毕业证成绩单原版一比一
如何办理美国华盛顿大学毕业证(UW毕业证书)毕业证成绩单原版一比一
 
Housewife Call Girl in Faridabad ₹7.5k Pick Up & Drop With Cash Payment #8168...
Housewife Call Girl in Faridabad ₹7.5k Pick Up & Drop With Cash Payment #8168...Housewife Call Girl in Faridabad ₹7.5k Pick Up & Drop With Cash Payment #8168...
Housewife Call Girl in Faridabad ₹7.5k Pick Up & Drop With Cash Payment #8168...
 

kissy-past-now-future