1

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

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

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

ответ

0

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

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

2

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

1

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

Он может получить сложно, например:

// here $ = Prototype 

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

}); 

// here $ = Prototype 

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

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

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

+0

Это только верхушка айсберга. «$» В Prototype только делает относительно ограниченную вещь, в отличие от «$» jQuery, которая делает практически все. Поскольку Prototype использует всевозможные функциональные возможности на всех типах прототипов базовых объектов, было бы excrutiating попытаться найти их все. Например, jQuery «$ .each()» выполняется в Prototype в качестве основной операции массива. – Pointy

+0

@Pointy, очень верно. Но, если говорить обо всех библиотеках, материал jQuery должен быть довольно простым, если вы знаете, когда '$ = jQuery'. Однако, когда материал Prototype выглядит как встроенная функциональность, это будет трудно определить наверняка. –

+0

Да, это так, хотя, как только вы его нашли, тогда вам нужно переписать его :-) Я согласен с ответом, в котором говорится: «Не делайте этого», я думаю! – Pointy

0

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

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

0

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

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

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

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

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

Удачи!