看新闻很累?看技术新闻更累?试试下载 InfoQ 手机客户端,每天上下班路上听新闻,有趣还有料!
2018 年 5 月 2 日,Dojo 团队发布了 Dojo 第二版(Dojo 2)。Dojo 是一种为 JavaScript 开发人员扩展开发过程提供帮助的工具箱。Dojo 2 聚焦于开发人员对构建现代企业应用的需求,是在 2007 年发布 Dojo 1 的十多年后对 Dojo 的一次完全重写。Dojo 2 使用 TypeScript 构建,采用了基于组件的架构和虚拟 DOM。Dojo 2 在工具上做了大幅的改进,其中包括一种新的 CLI、集成的测试,以及一些连接 Dojo 与常见标准及工具的功能。
Dojo 2 关注于对现代 JavaScript 巨大改进的集成,并提供给开发人员使用。Dojo 的联合创始人和项目牵头者 Dylan Schiemann 给出了如下的介绍:
从很多方面看,Dojo 1 必须要先行一步。而当前的问题,更多的在于如何将各种功能以一致的方式整合在一起。如何创建具有 React 那样的响应能力、但是能够更好地扩展到更大规模组件上的功能?如何能自然而然地而非磕磕绊绊地实现国际化(i18n)。
我们正力图打破各种框架之间的隔阂。我们一直在推进,已使 Web 组件系统深受 Dojo 1 Widget 的影响。所以这里要指出的是,我们需要一个基于响应式组件的系统,但并不希望将开发人员锁定到 Dojo 中。因此我们实现了一套工具,用于导入或导出 Web 组件,以供在 Dojo 中使用或是在 Dojo 之外使用。
工具是 Dojo 2 的一个主要关注点。Dojo 2 提供了一种全新的 CLI 、集成的测试,以及一系列实现 Dojo 与常用标准和工具连接的功能。Dojo 2 的 Beta 测试人员 Rene Rubalcava 撰写了一篇博客文章,介绍了该即将推出的新版本。文中特别指出,非常容易实现将Dojo Widget 导出为可移植、符合标准的Web 组件:“在REPO 中运行命令 dojo build --element=src/createTwitterShareElement.ts
,之后该组件就可以在 Web 页面中使用了”。当被问及在 Beta 测试中接触到的所有特性中他最喜欢哪个时,Rubalcalva 进一步做了如下的解释:
Widget 导出特性可以作为人们即刻开始使用 Dojo 2 的一个绝佳入口。这是一个很棒的特性!我之前从未在框架中看到这样的特性。在我看来,用户将会从该特性中受益匪浅。它使得开发人员可完全聚焦于组件的创建。CLI 非常好用。
CLI 提供了多种好特性,人们可以从中发现大量可用之处。其中之一,就是使用 CLI 为应用赋予主题。开发人员可以引入 Dojo 提供的一些默认的 Widget,而 CLI 则提供了将主题应用到 Widget 和应用的工具。
Dojo 中内建了一个基于 CSS Modules 的主题系统。所有内建 Widget 可主题化(Themeable)。根据 Dojo 的主题文档,可直接使用 CSS Modules 的组合(composition)功能实现主题的扩展。想要着手创建主题的开发人员,可遵循文档中给定的一个教程。
Dojo 的前期版本因文档质量而饱受批评。因此在 Dojo 2 中,文档是核心团队的一个主要关注点。据 Schiemann 介绍:
只有通过了很好的测试和文档化,代码才能加入到主分支(Master)中。我们全面掌握人们学习并尝试以此方式记录文档的情况。我们在 Dojo 网站上推出了一个很好的系列教程,其中涵盖了人们想要做的头 50 到 100 件事情。
感兴趣的开发人员,可以从 Dojo 教程入手,就一些常见的问题及其解决方案查阅指南(Cookbook),或是直接深入翻阅文档。
对于熟悉 React 的开发人员,可能会发现 Dojo 2 相对比较易于上手。当被问及如何比较 Dojo 与其它一些现代 JavaScript 框架时,Schiemann 表示,Dojo 与 React 最为相似,但 React 遵循的原则是允许开发人员灵活选择所使用技术栈的各个部分,而 Dojo 2 对前端应用的各个部分都具有自身倾向性的默认设置。Rubalcava 对此给出了进一步的解释:
React 是一个很好的软件库,非常棒的 UI 框架,并且十分灵活。但是对于团队工作,同样的灵活性会使新加入的团队成员难以融入。而使用 Dojo 2 时,它支持 JSX,团队成员将具有十分类似的虚拟 DOM 体验。当在团队环境中合作开发时,对所有内容的封装将使新团队成员很容易上手。
Dojo 2 是受 JS 基金会支持的一个开源项目。JS 基金会还为 jQuery、webpack 和 lodash 等关键 JavaScript 项目提供法律上的和管理上的支持。有意参与 Dojo 开发的开发人员,可参考给出在GitHub 上的贡献指南,或是在 Dojo Gitter Channel 上与团队和社区开展直接的交流。
评论