Исправление проекта с несколькими фреймворками Javascript - PullRequest
1 голос
/ 11 февраля 2010

Я только что начал новую работу, и моя первая задача - очистить код Javascript для сайта - проблема в том, что используются две библиотеки JS (jQuery и Prototype / Scriptaculous).

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

У кого-нибудь есть предложения? Я, вероятно, предпочел бы отказаться от Prototype / Scriptaculous, если это возможно.

Ответы [ 5 ]

2 голосов
/ 11 февраля 2010

Я бы не советовал удалять библиотеку javascript, так как это будет изменение в поперечном сечении. Очень опасно и может стать причиной ложных ошибок сейчас и в будущем.

1 голос
/ 11 февраля 2010

Скорее всего, что Prototype будет использовать переменную $, и что jQuery будет работать в режиме noConflict, поэтому на него будет ссылаться переменная jQuery.

Это может быть сложно, например:

 // here $ = Prototype

 jQuery(function($){
     // here $ = jQuery

 });

 // here $ = Prototype

И в отдельных файлах:

// here $ = Prototype
(function($){
    // here $ = jQuery;
})(jQuery);
// here $ = Prototype

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

0 голосов
/ 13 февраля 2010

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

.. боль в методе прикладом, но сомнения вы найдете менее болезненными. Может быть полезно: http://api.jquery.com/browser/

0 голосов
/ 13 февраля 2010

Это немного сложная задача. Предложение жить и позволить жить обеим структурам неплохо, если все работает. Вероятно, jQuery находится в режиме noConflict, если они действительно находятся на одной странице.

Один очень полезный инструмент - использовать Панель инструментов веб-разработчика для Firefox, перейдите на страницу и выполните: Information -> View JavaScript - это даст вам полный список всех сценариев JavaScript, загруженных с <script> теги, а также встроенный JavaScript в тегах <script>, хотя я думаю, что встроенные обработчики событий там не перечислены.

Но одну вещь, которую вы можете сделать, это просто отцепить Prototype или JavaScript и посмотреть, что в итоге приведет к меньшему количеству ошибок. Тогда вы на пути к отладке того, чего не хватает.

Это проще стандартизировать для одной библиотеки, но есть еще один случай, когда "если она не сломана, не исправляйте ее".

Я потратил некоторое время, чтобы немного узнать обо всех фреймворках, выполняя те же эффекты на идентичном HTML: ArtLung Rosetta : Вы можете быстро погрузиться в различия между синтаксисами Prototype и jQuery, сравнивая это и это .

Удачи!

0 голосов
/ 11 февраля 2010

Избавиться от Prototype, в частности, может быть сложно, особенно если бы люди, работающие над базой кода, действительно "получили" Prototype. Я говорю здесь о себе, работая над очень большим веб-приложением, которое на самом деле содержит именно тот микс, который вы описываете (хотя я думаю, что к тому времени, как я покинул Scriptaculous, все пропало).

Из-за того, как работает Prototype, зависимости могут быть абсолютно везде.

...