Git 仓库结构更新
维护任何复杂项目时面临的主要挑战之一就是组织,DataTables 也存在此类问题。该项目主要分为核心库、扩展和插件。此类添加 DataTables 功能的模块化方法行之有效,但在目前,困难之处在于与 DataTables 支持的多种样式库集成。
DataTables 提供其自带的样式表,但它还可以利用 Bootstrap、Zurb Foundation 和 jQuery UI ThemeRoller 提供的样式。此种由多种不同框架设置样式的能力是 DataTables 的基本内容,应该尽可能简化在这些环境中使用 DataTables。
目前不是这样 - 但此文章将讨论如何解决此问题以及即将发布的 DataTables 版本。如果您一直在发掘众多的 DataTables Git 仓库,您可能已经看到部分这些更改 - 此博客文章将明确说明这些更改是什么以及进行这些更改的原因。
我期望此博客文章作为在更新 DataTables 及其所有扩展时参与工作的参考和指导文档,因此它相对“枯燥无味”,但这儿提出的工作确实构成了 DataTables 未来发展的一个关键部分。
目前状态
目前,为了将 DataTables 与任何受支持的样式库配合使用,您需要将所需的 JavaScript 库包含在您的代码中,还需要包含用于您样式库的 DataTables 集成文件。
集成文件通过在 JavaScript 文件中设置默认值并调整样式库选项以匹配 DataTables 的需求来发挥作用。
此类方法通常十分有效,这从 DataTables 支持三个完全不同的样式库和它本身的默认样式这一点便可见一斑。但是,此类方法经常出错的两个地方是
- 对于使用此软件的开发者,既包含默认的 DataTables 样式又包含集成样式并不总是明确的
- 对于更新集成文件的 DataTables 开发者,此种方法是分散的并且未针对各种扩展版本发布特定信息。例如,针对 TableTools 的 Bootstrap 集成嵌入在通用集成文件中,因此它可能无法与 TableTools 同时更新,或者发布信息可能不同步。
解决方案
解决方案是将每个组件的集成选项移至其主机库,并提供一套文件名称应遵循的规则。此举可确保开发者能够立即访问他们需要更新的软件、发布版本是原子化的,并存在一种针对每种样式库包含所需文件的一致方法。
此类方法的缺点是,如果您使用许多扩展,它会大幅增加所需的文件数量。但是,一致的命名提供了以编程方式合并文件的能力,此类问题将被此类优点所掩盖 - 在未来的博客文章中将对此主题进行进一步探讨!
在本文余下的内容中,我将仅仅关注仓库文件结构的枯燥细节。
文件名规则
- 文件名为层次结构,最左侧为最重要的软件名称
- 每个插件都将它自己的函数名添加到层级结构(最右侧),除非它与层级结构中的前一个项目相同
- jQuery 位于层级树的顶部
- 层级结构以点分隔
- 文件名仅限于层级结构中的最后两个元素。
- 样式框架集成文件在层级结构中将框架名追加为最后一个元素
- DataTables 提供的样式也算作一个框架(JavaScript 默认值适用于其样式框架,因此永远不需要 JavaScript DataTables 集成文件!)
- 扩展
.min
用于表示经过精简的文件(在文件扩展名前追加) - 文件名将始终具有扩展名(例如
.css
或.js
)。 - 文件名采用 camelCase 格式 - 即除两个单词已合并之外,全部采用小写
示例 - DataTables
考虑 DataTables 的示例 - 它是一款 jQuery 插件,因此它的主 JavaScript 文件被称为 jquery.dataTables.js
。Bootstrap 集成文件将被称为 jquery.dataTables.bootstrap.js
,但规则 5 会将其截断为 dataTables.bootstrap.js
。因此 DataTables JavaScript 目录将包含
jquery.dataTables.js
dataTables.bootstrap.js
dataTables.foundation.js
dataTables.jqueryui.js
用于样式的 CSS 文件与集成文件类似,因此我们拥有
jquery.dataTables.css
dataTables.bootstrap.css
dataTables.foundation.css
dataTables.jqueryui.css
示例 - 响应式
现在考虑 Responsive 扩展。对于响应式,不需要 JavaScript 集成文件,因此我们只需拥有
dataTables.responsive.js
对于 CSS,我们需要集成文件,因此我们拥有
responsive.dataTables.css
responsive.bootstrap.css
responsive.foundation.css
responsive.jqueryui.css
存储库状态
在撰写此帖时,仅 DataTablesSrc、FixedColumns 和 Responsive 存储库已更新以符合这些新规则。
随着 DataTables 的持续开发,其他存储库将很快跟进。