Twitter发布基于组件的轻量级JavaScript框架——Flight

标签: twitter 布基 轻量级 | 发表时间:2013-02-04 00:01 | 作者:
出处:http://pipes.yahoo.com/pipes/pipe.info?_id=10560380f804c7341f042a2b8a03e117

前不久,Twitter发布了Flight项目。 Flight是一个轻量级的、基于组件的JavaScript框架,可以将行为映射到DOM节点上。Twitter将其用在自己的Web应用上。

Flight团队这样解释为什么要开发Flight:

Flight与其他现有框架的不同之处在于:对于web应用,它不会预先规定或提供任何特定呈现或提供数据的方法。对于请求如何被路由,你使用什么样的模板语言、甚至你如何在客户端或服务器上呈现你的HTML,它都不关心。有些web框架鼓励开发者围绕一个预先规定好的模型层编写、安排代码,Flight直接围绕现有的DOM模型组织代码,功能直接映射到DOM节点上。

这样做可以避免加入额外的数据结构,因为它们不可避免地会影响更大的架构,同时,直接将功能映射到原生web页面的做法,可以利用原生的特性。比如,我们可以直接在DOM的事件冒泡特性基础上自定义事件广播,而且我们的事件处理基础架构代码能够同时处理原生和自定义事件。

那么Flight中的组件是什么含义?网站上这么说:

  • 组件,就是一个构造器,带有混入其原型的属性。
  • 每个组件都有一些基本功能,比如事件处理和组件注册。
  • 此外,每个组件的定义都混入一系列自定义属性中,这些属性定义了组件的行为。
  • 当向一个DOM节点附加一个组件时,该组件的一个新实例就得以创建。每个组件实例通过其node属性引用DOM节点。
  • 组件实例不能直接引用,它们与其他组件通过事件通信。 

Flight遵循严格的关注点分离原则。当你创建一个组件时,你无法直接处理它。因此,组件无法被其他组件引用,而且无法成为全局树的属性。框架设计的本意如此。组件不能彼此直接访问,实际上,它们会以事件来广播自己的行为,而且其他组件可以订阅这些行为。

能看出,事件在Flight框架中十分重要,Flight团队这样解释他们使用事件的原因:

事件是开放性的。当一个组件触发某个事件,对于自己的请求如何被满足、或是谁来满足,它毫不知情。这强制了功能的解耦,工程师因此可以独立思考每个组件的功用,而不是必须去担心整个应用的复杂性不断增加。

让DOM节点的事件代理组件事件,有如下3点好处:

  • 毫不费力地得到事件广播功能
  • 组件可以在文档层面订阅给定的事件类型,或者选择监听来自某特定DOM节点的事件
  • 订阅组件不会区分事件来自其他组件的自定义事件,还是原生DOM节点事件,并且会以完全相同方式处理这两种类型的事件。

在可移植性和测试方面,每个组件都是一个模块,除了少数几个标准依赖程序库外,对其他没有引用。因此,一个给定的组件会以同样方式响应一个给定事件,而不管环境如何。测试因此变得简单可靠,因为事件是唯一的变量,而且生产环境中的事件很容易在测试中复制。要调试一个组件,在控制台中触发事件就可以了。

至于混入(mixin),Flight对函数式混入提供内置支持,同时保护无意的重写和混入复制。虽然经典的JavaScript模式只支持单继承,组件(或其他对象)都可以支持应用多个混入。

对于Flight的未来,团队表示:

Flight是一个处于不断开发中的项目。我们准备加入一个完整的测试框架,同时公开更多Twitter网站使用的前端工具。

在Github上,Flight团队发布了一个用Flight框架构建的简单email客户端演示。

Flight使用了 es5-shim项目和 jQuery,如果要安装,还需要包括 require.jsloadrunner这样的异步模块定义(Asynchronous Module Definition,简称AMD)。

在HackerNews上,Flight项目引起国外网友的 热烈讨论。有人 认为

Flight像是Twitter版本的 Web Component

有网友 回复道:

Web Component将会横扫Backbone、Ember、Angular、Knockout等等这些框架。

但是,接下来这几年,我们还是要用它们,因为很多Web Component的API只能在Chrome的Canary开发版本和Firefox的开发版本中使用。

……

在我看来,现在这些程序库越是接近Web Compoenent的规范,对于这些程序库应该成为什么样子,开发者的选择就越清楚。

 还有其他网友纷纷提问:为什么不使用Angular、Ember、KnockoutJS、component等其他JavaScript框架,也都有人作答。

最有趣的是,有一个网友问道:

为什么不用Flash?

另一个网友的回答是:

欢迎来到2013年。

InfoQ的读者们,你们在做前端开发时,最常使用哪个框架?对于Flight这个框架,你怎么看?InfoQ之前曾报道: Twitter的Bootstrap生态系统持续增长,您认为Flight会有属于自己的生态型吗?欢迎在评论中留下您的看法。

郑柯 郑柯,实用的理想主义者,相信:每天改变一点点,这个世界会更好。

您可能也会喜欢

相关 [twitter 布基 轻量级] 推荐:

Twitter发布基于组件的轻量级JavaScript框架——Flight

- - InfoQ cn
前不久,Twitter发布了Flight项目. Flight是一个轻量级的、基于组件的JavaScript框架,可以将行为映射到DOM节点上. Twitter将其用在自己的Web应用上. Flight团队这样解释为什么要开发Flight:. Flight与其他现有框架的不同之处在于:对于web应用,它不会预先规定或提供任何特定呈现或提供数据的方法.

Twitter推出轻量级前端开发工具Bootstrap

- 可可 - 36氪
Twitter刚刚推出了一套用于快速搭建网页应用的轻量级前端开发工具Bootstrap. Bootstrap工具由Twitter设计师Mark Otto和Jacob Thornton合作开发. 你可以从GitHub上获取这套源码,相关示例请查看这里. Bootstrap是一套用于开发网页应用,符合HTML和CSS简洁但优美规范的库.

轻量级前端开发工具Bootstrap重大改进,Twitter发布Bootstrap 2.0

- - 36氪
Twitter今日在 开发者博客上公布消息, 6个月前发布的轻量级前端开发工具Bootstrap迎来重大改进,正式升级为Bootstrap 2.0( 下载源码). 和原来一样,Bootstrap 2.0仍然是一个托管在GitHub上的开源项目. 去年8月,Twitter推出了用于快速搭建网页应用的轻量级前端开发工具Bootstrap,由Twitter的设计师 Mark Otto和 Jacob Thornton合作完成.

Twitter 中文版

- 幻幽 or A書 - Gea-Suan Lin's BLOG
前幾天 Twitter 推出了中文版 (包括繁體與簡體):「Five new languages」. 對岸的市場可能還是進不去,但在台灣會加速 Plurk 的死亡… 從 Google+ 的出現以後就愈來愈明顯了,現在 Microblogging 的大魔頭再加入戰局,應該會更快….

Twitter和Facebook合作

- Woooon - cnBeta.COM
很重磅的新闻,两大社交网络巨头开始有合作了. Twitter 今天在用户的个人档案页面添加「Post Tweets to Facebook」按钮,让用户快速将自己的 Tweets 同步到 Facebook 状态中去.

twitter-mysql改进点

- - CSDN博客推荐文章
目前最新的twitter-mysql版本基于mysql5.5.22,以下总结了一些比较明显的改进点,大部分已经亲自证实,其他一些诸如修复的比较次要的问题(例如编译问题)这里暂不列出,可以详细参阅 https://github.com/twitter/mysql/wiki/Change-History .

用 toto 快速建轻量级博客

- zhai - 博客园-首页原创精华区
对于程序员或创业团队来说,还是有必要拥有一个属于自己的博客. Wordpress 曾经让个人或企业搭建博客变得非常容易. 但是我们觉得 Wordpress 还是有些重量级,所以选择了一个非常轻便的工具 toto,一段只有200多行代码的Ruby应用程序. toto之所以简单,是因为它利用一些很好的工具和服务.

CintaNotes:轻量级笔记软件

- - 软件志
一、CintaNotes简介: 这是一款非常轻巧实用的笔记软件,体积仅1MB,可以很方便用快捷键从任意程序收集文本,或手工添加内容;收集的内容会保留来源url. 所有文本线性排列,并可添加标签(tag);搜索框中键入内容即可实时显示命中结果,非常方便——重要的是它支持UniCode,因此不存在中文搜索问题.

优秀的轻量级Web服务器

- - Solidot
Alison Neville 写道 "Web服务器是一种使用超文本传输协议(HTTP)响应客户端请求提供网页的计算机软件,以HTML文件、图像、样式表和脚本的形式构成网页内容. Apache是​​最流行的Web服务器软件,提供了最新的协议实现,优秀的特性集,具有高可配置和可扩展性. Apache被一半以上的活跃网站所使用.

轻量级jQuery网格插件——ParamQuery

- - InfoQ cn
ParamQuery是一种轻量级的jQuery网格插件,基于用于用户界面控制、具有一致API的优秀设计模式 jQueryUI Widget factory创建,能够在网页上展示各种类似于Excel和Google Spreadsheet效果的网格. 使用 ParamQuery,开发者可以轻松地实现以下特性:.