你如何管理你的DojoX代码?

5 javascript version-control dojo

您如何管理生产应用程序中DojoX代码或小部件的使用?

Dojo Toolkit的包括核心,Dijit和DojoX中的.作为扩展工具包的新想法的孵化器,DojoX代码和小部件具有不同程度的不稳定性.

QueryReadStore这样的DojoX代码(用于从服务器获取批量数据)或者像Grid这样的小部件(用于利用用户界面网格组件)不包含在Core或Dijit中.但它们的功能足以在某些情况下使用,需要注意"开发人员要小心",因为在将来的Toolkit版本中,API或源代码树中的组件位置可能会发生变化.另一个问题是,您可能必须调整正在使用的DojoX组件才能在您的环境中正常运行,因为代码中还没有高度的健壮性.

那么,您如何确保随着您使用的DojoX组件的发展,您的应用程序保持平稳轨道?

Eug*_*kin 3

有几种方法可以做到这一点:

  • 坚持使用一种版本的 Dojo 并始终如一地使用它。
  • 将修改后的代码移至您自己的命名空间并从那里包含它。
    • 实际上,它是现有 DojoX 模块的分支。所有代码同步和向后移植都是您的责任。
    • 请注意 Dojo 的其余部分 - 如果它的更改破坏了您的分叉版本,请准备好修补您的模块。
  • 将修改后的文件复制到某处并在需要原始文件之前包含/需要它们。

为了说明后一种技术,假设我想要修补位于 dojox/charting/abc.js 中的一个文件:

dojo.provide("dojox.charting.abc");
// the rest of the file
...
Run Code Online (Sandbox Code Playgroud)

我可以将其复制到我的目录,例如 my/patched_abc.js,并使其看起来像这样:

dojo.provide("my.patched_abc");
// now I include the rest of the file with my modifications

dojo.provide("dojox.charting.abc");
// the rest of the file
...
Run Code Online (Sandbox Code Playgroud)

在我使用 dojox.charting 的代码中,我将其包含在内:

dojo.require("my.patched_abc");
// now I can include dojox.charting,
// which will use my patched dojox.charting.abc module

dojo.require("dojox.charting.Chart2D");
// the rest of the file
...
Run Code Online (Sandbox Code Playgroud)

只是要小心避免循环的“require”语句。

该技术非常适合向后移植和小型定制。如果您的更改比这更广泛,您应该考虑编写自己的模块。