Я использую jQuery-migrate в большом проекте. Я исправил все предупреждения, которые мог, но теперь предупреждения находятся внутри библиотек.
Некоторые библиотеки больше не обновляются, поэтому я не могу обновить их, чтобы они работали с jQuery-3.3.1. Кроме того, я не могу заменить устаревшие функции непосредственно в библиотеках, потому что это создает ошибки.
Поэтому я думаю, что оставлю jQuery-migrate в своем проекте.
мой вопрос: Если jQuery-migrate умеет исправлять устаревшие функции при вызове, то почему он не может исправлять их прямо в коде?
Я перешел с jQuery 1.7.2 на jQuery 1.12.4 с помощью jQuery-migrate. Я исправил все предупреждения, а затем удалил jQuery migrate. Теперь я делаю тот же процесс, но перехожу с 1.12.4 на 3.3.1.
Многие методы ломаются, потому что я использую около 20 разных старых библиотек. Это проект 2011 года.
JavaScript не поддается статическому анализу кода.
Допустим, вам нужно заменить функцию foo
.
Это было бы довольно тривиально, если бы вызывающий его код был просто:
something.foo();
Становится сложнее, если это:
function call(bar, method) {
bar[method]();
}
call(something, "foo");
… и даже сложнее, если логика, необходимая для этого, была более сложной.
Создать something.foo
так, чтобы он просто существует, если что-то попытается получить к нему доступ во время выполнения, намного проще.
Итак, в моем случае вы думаете, что лучшим решением будет сохранить jQuery-migrate?
Я недостаточно знаю о вашей проблеме, чтобы сказать.
Дополнительная сложность будет заключаться в том, чтобы сделать устаревшие или измененные методы совместимыми с более высокой версией, поскольку они устарели или были изменены по какой-то причине.
@freedomn-m — Нет! Точно нет. Версии jQuery, для которых требуется миграция jQuery, больше не получают обновлений безопасности.
@Quentin дело в том, что сторонние библиотеки также не обновляются, поэтому, если вы используете плагины, использующие старый код jQuery, вероятно, лучше обновить их или переключиться на альтернативу, которую является поддерживает в актуальном состоянии.
Моя проблема в том, что исправлять около 20 различных библиотек из-за устаревших функций было бы очень долго. Одни из них нуждаются в обновлении, другие — в замене и т. д.
@freedomn-m — Изменение сторонних библиотек, вероятно, является разумным путем. Сохранение неподдерживаемого ядра jQuery — нет.
@William — jQuery 3.0 вышел 9 июня 2016 года. В то время 1.x и 2.x все еще поддерживались. Прошло много времени. Проблема в том, что проблема до сих пор игнорировалась. Будет только хуже.
Согласен, но это не мой проект, это от компании, в которой я работаю. Я работаю там всего 2 недели, хе-хе. Хорошо, я постараюсь обновить/заменить/найти решение для каждой библиотеки. И если я увижу, что это занимает слишком много времени, я оставлю Jquery-migrate.
Какие версии работали до обновления? Какие методы ломаются?