`
houfeng0923
  • 浏览: 144815 次
  • 性别: Icon_minigender_1
  • 来自: 大连
社区版块
存档分类
最新评论

Twitter Flight 学习小结

阅读更多
链接:twitter flight
关键字: 基于事件交互;轻量级的组件;

flight特点:
     component基于dom:组件绑定到dom上
     事件驱动:组件依赖event通信
     分离关注点原则(体现在组件无引用、组件间完全解耦 ,和 AOP的应用)
介于单页面型应用和开放型应用之间的框架,核心是事件驱动、基于dom的组件,强调组件之间相对独立松散的架构,但对组件的定义又十分严格,具有一定的侵入性和排他性。
 
Flight component的概念
  • 组件,就是一个构造器,带有混入(mixin)其原型的属性。
  • 每个组件都有一些基本功能,比如事件处理和组件注册。
  • 此外,每个组件的定义都混入一系列自定义属性中,这些属性定义了组件的行为。
  • 当向一个DOM节点附加一个组件时,该组件的一个新实例就得以创建。每个组件实例通过其node属性引用DOM节点。
  • 组件实例不能直接引用,它们与其他组件通过事件通信。 (补充:并非不能获得,不使用其attachTo,而是new 的话还是可获得组件引用;不建议使用该方式
如何定义?
     通过 component模块 提供的define组件的方法来定义
 如何实例化?    
     通过 attachTo() 方法绑定到dom节点,即创建了实例。
如何交互?
     完全通过event。
 
flight  component 特点:
     扩展:        基于框架提供的mixin扩展,基于框架提供的advice 切面扩展(优劣)
     不提供组件对象的引用:直接绑定到dom,避免组件间通过event外的方式交互(优劣)
     简单的生命周期:  initialize (before,after) ,teardown
                              当然对于开发阶段来说有用的是initialize
                              对于运行阶段,teardown提供了一个销毁对象的接口,避免内存泄露
 
组件无引用也有两面性:一方面避免了耦合,并且通过统一的注册机制也可以做到资源的合理释放;
另一方面只能通过事件通信对于一些组件来说增加了交互复杂度,比如, 对于有嵌套(继承)关系的组件(视图类有嵌套关系的组件等),父子之间不能直接的引用交互,而只能通过事件。
 
 

 
flight事件模型特点:
     基于/依赖 jquery dom事件模型 ,而非建立新的事件总线    
     优势:
  • 毫不费力地得到事件广播功能
  • 组件可以在文档层面订阅给定的事件类型,或者选择监听来自某特定DOM节点的事件
  • 订阅组件不会区分事件来自其他组件的自定义事件,还是原生DOM节点事件,并且会以完全相同方式处理这两种类型的事件。
 补充 : 利用jq的dom及事件销毁机制,及时释放无效的事件监听。节省内存。
基于事件驱动的前端工程特点:
    优点:模块间完全解耦。便于重用、便于测试
    
    缺点: 阅读代码很难理清程序的流程,需要辅助文档来说明 组件提供的事件及关注的事件等。
               不利于调试(虽然flight提供了debugging模块来辅助调试)
               需要有一个清晰易分辨的事件命名规则
          (自己调试 图片墙的例子:
                    首先是遗忘了具体的流程细节,
                    在代码中难以梳理出程序执行的先后,误判了逻辑执行的时间点,导致了错误的排查方向。
          )

 
与我们前端对比:
     相同之处:基于AMD的模块管理;基于事件的组件间交互(部分使用);
 
     不同之处:我们未提供一个基础的、统一的组件定义方案,组件的定义相对随意,概念也相对模糊。
                  flight的轻量级组件是一个抽象层,提供一些实用的方法来规范、管理组件,但没有约束组件的职责。
          
flight组件的优势是可以mixin一些通用功能,而不用为组件重新编写,尽管我们没有类似功能,但目前的应用来看页面上很少能提取出通用的逻辑(或许页面逻辑不够复杂,或许我们的抽象不够合理), mixin功能对我们的吸引力不大;
我们的组件交互事件与flight在本质上是一样的,只不过flight把jQ的相应方法封装到了组件原型对象上,只暴露了相对简易的使用接口。
 
 
 

与其他mvc框架对比:
     flight不关注如何提供数据、如何渲染视图、如何处理路由,flight的component很容易让人与ui类对应上,虽然flight并没有 view(ui)、model(data)、controller(router)等类型之分, 但在实际使用中(示例),还是需要你对 data和ui类的组件做好区分。
      如果说 一些mvc框架是轻量级的,flight是更轻量级的,对于构建MVC的工程来说,使用flight开发者还需要做很多基础的事情。
 

适用何时?何地?何人?
SPA应用(目前twitter是唯一用户,类似应用应该都是用的其他mvc框架)
希望建立一些可重用的(ui widget )component
.......
 

浏览器支持及依赖
ie7+ , others
依赖:
jquery
es5-shim
amd(requirejs or loadrunner)
0
1
分享到:
评论

相关推荐

    Getting Started with Twitter Flight

    Getting Started with Twitter Flight is written with the intention to educate the readers, helping them learn how to build modular powerful applications with Flight, Twitter’s cutting-edge JavaScript ...

    twitter flight

    Flight既不用于建模数据,也不用于HTML渲染,它不处理请求路由和页面模版,也不处理浏览器或服务器端的渲染。相反,它是一款高度解耦和的组件框架,这些组件连接到DOM节点,当在节点上调用事件时,可以提供预期的...

    Twitter api使用例子

    Twitter API 是Twitter公司提供的一种服务,允许开发者通过编程方式访问和操作Twitter平台的功能,如发布推文、获取用户信息、搜索推文等。本篇文章将围绕"Twitter API使用例子"这一主题,结合Java编程语言,深入...

    Twitter开放API文档

    ### Twitter开放API文档知识点 #### 一、简介 Twitter开放API文档主要介绍了Twitter提供的应用程序编程接口(API),供开发者创建基于Twitter的服务扩展工具或应用程序。本文档覆盖了API的使用方法、认证流程、...

    用Java访问Twitter的API接口

    在描述中提到的"twitter4j-2.0.10.zip"是Twitter4J的一个版本,包含了该库的不同组件,如JAR文件(包含编译后的代码)、源码文件(用于查看和学习实现)以及构建和配置文件。 在压缩包的文件名称列表中,我们看到了...

    Twitter 分享 标题+URL+图片

    在IT行业中,社交媒体平台的互动和分享功能是开发者必须掌握的关键技能之一,特别是在移动应用...提供的压缩包"TwitterShare"可能包含了实现这一功能的源代码示例,你可以参考学习并根据自己的项目需求进行调整和优化。

    Android手机端安装包-twitter9.43.0

    Android手机端twitter安装包 最新版本9.43.0 随时访问这个最大的社交网络 这款官方Twitter应用软件允许你随时随地访问全球最大的社交网络之一Twitter。 通过应用程序主页,你能够使用Twitter的一切常规功能:关注...

    本地发布文章到twitter和facebo Twitter OAuth the easy way – simple post to twitter script

    在“标签”中提到了“源码”和“工具”,这暗示我们可能在讨论一个开源的代码实现,这个实现是一个实用的小工具,用于自动化发帖到Twitter。用户或开发者可以查看和使用这个源代码,根据自己的需求进行定制或集成到...

    twitter学习教程.docx

    ### Twitter学习教程知识点详解 #### 一、书籍简介与背景 - **书籍目的**:针对初次接触Twitter或之前尝试未果的用户,提供系统性的学习材料,帮助他们掌握Twitter的基本操作,建立自己的在线社区。 - **适用人群*...

    word2vec_twitter word2vec_twitter_model.bin

    标题中的"word2vec_twitter word2vec_twitter_model.bin"提到了两个关键概念:word2vec和一个以".bin"为后缀的模型文件。这表明我们正在讨论一个基于Twitter数据训练的word2vec词向量模型。word2vec是Google开发的一...

    twitter4j 最新api

    Twitter4j是一个开源Java库,专门用于与Twitter API交互,为开发者提供了丰富的功能,包括发布推文、检索推文、管理关注者、处理事件监听等。这个最新的API版本旨在简化和增强开发者在Twitter平台上的开发体验。以下...

    Twitter分享android推特分享

    通过不断学习和实践,你将能够熟练地应对这些问题,为用户提供流畅的Twitter分享体验。 最后,如果你在开发过程中遇到了具体的问题,可以参考Twitter的开发者文档,或者在社区中寻求帮助。持续更新和优化你的代码,...

    Python-通过机器学习来检测Twitter机器人的R包

    【标题】"Python-通过机器学习来检测Twitter机器人的R包"揭示了使用Python和机器学习技术来识别Twitter上机器人账号的主题。在这个项目中,开发者可能利用Python的强大功能,结合R包,对Twitter数据进行分析,以区分...

    twitter php

    本资源包聚焦于"twitter php",包含开源代码和学习资料,旨在帮助开发者深入理解和运用Twitter API。 首先,我们需要了解Twitter API的基础知识。Twitter API是一个允许开发者通过HTTP请求获取和发送Twitter数据的...

    twitter API全集

    通过学习和掌握Twitter API,开发者可以创建各种应用,例如社交媒体分析工具、实时新闻追踪器、自动生成推文的机器人等。无论你是数据分析专家、社交媒体经理还是独立开发者,Twitter API都是一个强大的工具,可以助...

    twitter4j-4.0.4.zip

    "twitter4j-examples"包含了一些示例代码,帮助开发者理解和学习如何使用Twitter4j的各种功能,比如发送推文、获取用户信息、搜索推文等。这些示例是实践和学习的重要资源。 最后,"powered-by-badge"可能是Twitter...

Global site tag (gtag.js) - Google Analytics