расширение jquery (несколько расширений) с помощью require. js? - PullRequest
1 голос
/ 08 января 2020

Я в процессе преобразования старого кода сайта для использования AMD и загрузки по требованию, где это возможно. Одна из вещей, с которыми я столкнулся, заключается в том, что сайт использует более старую версию jquery на некоторых страницах (я выяснил, как это настроить до того, как код был подвергнут рефакторингу и протестирован с более новой), но также и оригинальные разработчики добавил несколько расширений к jquery для некоторых форм.

Я, в конце концов, тоже захочу их реорганизовать, но, поскольку он расширяет jquery с помощью ряда новых вспомогательных функций, я ' Мне интересно, как настроить require. js, чтобы убедиться, что эти расширения загружены. В худшем случае я могу добавить это к jquery. js, но я бы предпочел не делать этого, чтобы кто-то, возможно, не знал, что он там был, и заменить jquery сам, нарушая любой код в зависимости от этого расширения.

блок extends выглядит следующим образом:

jQuery.fn.extend({
    vshow: function(speed,callback) { /* ... */ },
    vhide: function(speed,callback) {  /* ... */  },
    vshowif: function(b) {  /* ... */  },
    showif: function(b) {  /* ... */  },
    selected: function(i) {  /* ... */  },
    addOptions: function(a,f,p) { /* ... */  },
    setOptions: function(a,f,p) {  /* ... */  },
    validateForm: function(f) {  /* ... */  },
    lt: function(n) {  /* ... */  },
    gt: function(n) {  /* ... */  }
});

Я знаю, что я также могу разбить их на несколько jquery .function. js файлов, но некоторые из них - всего несколько строк. Мне интересно, есть ли способ или как правильно убедиться, что они загружаются после jquery всякий раз, когда jquery используется?

1 Ответ

0 голосов
/ 09 января 2020

У меня есть временное исправление, основанное на нескольких факторах, касающихся кода, который я обновляю, но это не идеальное решение. (Я полагаю, что окончательным решением будет разделение пользовательских расширений на отдельные отдельные файлы плагинов и включение их в списки зависимостей, где они необходимы)

Одна из проблем, с которыми я сталкиваюсь, заключается в следующем это старая кодовая база. В настоящее время у меня нет времени полностью обновить / обновить все библиотеки и тщательно их протестировать, поскольку текущий проект является приоритетным. Но версия jquery, используемая существующим кодом, является старой версией, которая, вероятно, даже не полностью AMD. Функциональность, которую использует мой новый код, довольно проста c (в основном это просто ajax) и работает как с новой, так и со старой версиями. Я не могу быть уверен в использовании устаревшего кода или в работе этих расширений. Таким образом, использование старого jquery представляет собой более простое на данный момент решение.

В результате, когда я говорю, требуется. js загрузить «старый» jquery, чтобы сохранить совместимость с прежним код, это, по сути, повторная загрузка jquery и сглаживание расширенных функций, используемых исходной формой, что заставляет ее молча работать, когда расширенные функции не определены.

Я обошел это для в настоящее время, поместив вышеуказанный блок extends внутри своего собственного. js файла, который я назвал jquery -extended. js. Затем я добавляю конфигурацию shim для:

    "jquery.extended" : {
        "deps" : ['jquery'],
        "exports" : "$"
    },

Затем, для любой из моих текущих библиотек / библиотек, для которых требуется jquery, я вместо этого изменяю их зависимость на jquery .extended вместо jquery, и это кажется, по крайней мере, позволяет коду работать.

Но если есть какие-либо другие предложения по обработке этого, мне было бы интересно узнать о них.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...