Почему jQuery-миграция не заменяет устаревшие функции непосредственно в коде?

Я использую jQuery-migrate в большом проекте. Я исправил все предупреждения, которые мог, но теперь предупреждения находятся внутри библиотек.

Некоторые библиотеки больше не обновляются, поэтому я не могу обновить их, чтобы они работали с jQuery-3.3.1. Кроме того, я не могу заменить устаревшие функции непосредственно в библиотеках, потому что это создает ошибки.

Поэтому я думаю, что оставлю jQuery-migrate в своем проекте.

мой вопрос: Если jQuery-migrate умеет исправлять устаревшие функции при вызове, то почему он не может исправлять их прямо в коде?

Какие версии работали до обновления? Какие методы ломаются?

charlietfl 09.04.2019 15:17

Я перешел с jQuery 1.7.2 на jQuery 1.12.4 с помощью jQuery-migrate. Я исправил все предупреждения, а затем удалил jQuery migrate. Теперь я делаю тот же процесс, но перехожу с 1.12.4 на 3.3.1.

William 09.04.2019 15:38

Многие методы ломаются, потому что я использую около 20 разных старых библиотек. Это проект 2011 года.

William 09.04.2019 15:39
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
В настоящее время производительность загрузки веб-сайта имеет решающее значение не только для удобства пользователей, но и для ранжирования в...
Безумие обратных вызовов в javascript [JS]
Безумие обратных вызовов в javascript [JS]
Здравствуйте! Юный падаван 🚀. Присоединяйся ко мне, чтобы разобраться в одной из самых запутанных концепций, когда вы начинаете изучать мир...
Система управления парковками с использованием HTML, CSS и JavaScript
Система управления парковками с использованием HTML, CSS и JavaScript
Веб-сайт по управлению парковками был создан с использованием HTML, CSS и JavaScript. Это простой сайт, ничего вычурного. Основная цель -...
JavaScript Вопросы с множественным выбором и ответы
JavaScript Вопросы с множественным выбором и ответы
Если вы ищете платформу, которая предоставляет вам бесплатный тест JavaScript MCQ (Multiple Choice Questions With Answers) для оценки ваших знаний,...
0
3
390
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

JavaScript не поддается статическому анализу кода.

Допустим, вам нужно заменить функцию foo.

Это было бы довольно тривиально, если бы вызывающий его код был просто:

something.foo();

Становится сложнее, если это:

function call(bar, method) {
    bar[method]();
}

call(something, "foo");

… и даже сложнее, если логика, необходимая для этого, была более сложной.


Создать something.foo так, чтобы он просто существует, если что-то попытается получить к нему доступ во время выполнения, намного проще.

Итак, в моем случае вы думаете, что лучшим решением будет сохранить jQuery-migrate?

William 09.04.2019 15:13

Я недостаточно знаю о вашей проблеме, чтобы сказать.

Quentin 09.04.2019 15:14

Дополнительная сложность будет заключаться в том, чтобы сделать устаревшие или измененные методы совместимыми с более высокой версией, поскольку они устарели или были изменены по какой-то причине.

charlietfl 09.04.2019 15:15

@freedomn-m — Нет! Точно нет. Версии jQuery, для которых требуется миграция jQuery, больше не получают обновлений безопасности.

Quentin 09.04.2019 15:35

@Quentin дело в том, что сторонние библиотеки также не обновляются, поэтому, если вы используете плагины, использующие старый код jQuery, вероятно, лучше обновить их или переключиться на альтернативу, которую является поддерживает в актуальном состоянии.

freedomn-m 09.04.2019 15:45

Моя проблема в том, что исправлять около 20 различных библиотек из-за устаревших функций было бы очень долго. Одни из них нуждаются в обновлении, другие — в замене и т. д.

William 09.04.2019 15:47

@freedomn-m — Изменение сторонних библиотек, вероятно, является разумным путем. Сохранение неподдерживаемого ядра jQuery — нет.

Quentin 09.04.2019 15:48

@William — jQuery 3.0 вышел 9 июня 2016 года. В то время 1.x и 2.x все еще поддерживались. Прошло много времени. Проблема в том, что проблема до сих пор игнорировалась. Будет только хуже.

Quentin 09.04.2019 15:49

Согласен, но это не мой проект, это от компании, в которой я работаю. Я работаю там всего 2 недели, хе-хе. Хорошо, я постараюсь обновить/заменить/найти решение для каждой библиотеки. И если я увижу, что это занимает слишком много времени, я оставлю Jquery-migrate.

William 09.04.2019 15:54

Другие вопросы по теме