Есть несколько способов сделать это:
- Придерживайтесь одной версии Dojo и используйте ее последовательно.
- Переместите измененный код в собственное пространство имен и включите его оттуда.
- По сути, это разветвление существующего модуля DojoX. Вы несете ответственность за синхронизацию кода и обратное портирование.
- Обратите внимание на остальную часть додзё & ndash; если он изменяется таким образом, что он ломает вашу разветвленную версию, будьте готовы к исправлению вашего модуля.
- Скопируйте измененные файлы куда-нибудь и включите / потребуйте их, прежде чем потребуется исходный файл.
Чтобы проиллюстрировать последний метод, представьте, что есть один файл, который я хочу исправить, расположенный в dojox / charting / abc.js:
dojo.provide("dojox.charting.abc");
// the rest of the file
...
Я могу скопировать его в свой каталог, скажем, как мой / 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
...
В моем коде, использующем 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
...
Только будьте осторожны, чтобы избежать циклических операторов "require".
Эта техника очень хорошо работает для бэкпорта и незначительных настроек. Если ваши изменения более масштабны, вам следует написать собственный модуль.