Box发布T3 JavaScript框架

在线存储与内容平台Box最近推出了一个开源的前端JavaScript框架,名为T3。这个框架的目标是通过将代码分解为小型的独立片段,从而解决在大型应用程序开发中所遇到的各种问题。

Box的首席架构师Nicholas Zakas在一篇介绍T3的博客帖子中说道,他的团队中有多个开发者共同在一个巨型的代码库中工作,因此最初开发这个框架的目的是解决开发过程中的一些内部问题。在InfoQ与Zakas进行的一次访谈中,他表示:“现有的任何选择都无法实现我们的需求”。

现有的大多数解决方案都是面向基于MVC的架构所创建的,而我们打算走一条不同方向的路。虽然市面上也有产品使用不同的抽象概念,但它们都不足以实现我们在T3中所包含的功能。

T3中的组件共包括以下三种类型:

  • 服务
  • 模块
  • 行为

在使用T3所编写的一个典型的ToDo列表示例中,该项目不仅展示了示例的源代码,同时也详细解释了每一段代码的功能。举例来说,在一段关于维护列表项状态的代码中,其描述是这样写的:

虽然所有的模块都是独立的,但每个模块都会与一个维护着todo状态的服务进行交互。todos-db这个服务将负责在整个应用的生命周期中管理任务的添加、删除和标记为完成等工作。

T3中服务的概念与Angular中的概念非常接近,比方说,开发者可以以这种方式在Application中注册某个服务:

Application.addService('router', function(application) {
    return {
        route: function(url, state) {
            history.pushState(state, '', url);
        }
    };
});

但与Angular中使用的依赖注入方式不同,在T3中的服务是通过对全局Application对象的请求获得的:

var router = Application.getService('router');
router.route('/home', {});

与React类似,T3并不排除与其它框架共同使用的可能性。Zakas说道:“T3完全能够与Backbone、React或任何框架一起使用,它只是帮助我们更好地组织个别的代码片段,并且允许工程师们以他们所希望的任意一种方式将这些片段拼接在一起,成为一个完整的客户端功能。”

在Hacker News上的某个讨论中,开发者们普遍表示了对该团队工作成果的赞誉,但同时也对T3的组件和Ember、Angular和Meteor中的组件进行了对比。用户DigitalSea对此抱怨说,T3中并没有提供任何具有新意的东西:

我实在看不出为什么Box需要开发一套新的JavaScript框架,是不是我漏掉了些什么?作为一个前端开发者,我确实对T3这个产品感到兴奋,但我实在看不出T3到底实现了哪些其它框架中缺少了的东西。

Zakas表示,T3尤其适合于某种类型的应用。“T3当然也能够用于其它途径,包括MVC架构以及单一页面应用,但它的长处特别体现在于渐进式增强这一点上。”Box在它们的桌面应用与移动Web应用中都使用了T3进行开发。

可以在GitHub上找到T3项目的详细信息。

查看英文原文:Box Releases T3 JavaScript Framework

你可能感兴趣的:(Box发布T3 JavaScript框架)