Когда я увидел этот вопрос, я подумал, что было бы полезно, если бы был написан компилятор jQuery. Теперь, компилятором, я имею в виду что-то, что принимает код jQuery и выводит исходный код javascript, который в конечном итоге выполняется.
Вот как я вижу блок выполнения jQuery-кода:
- вызывается функция jQuery и передаются параметры
- функция вызывает необработанную функцию javascript и передает полученные ей параметры.
- вновь вызываемая функция выполняет предполагаемое действие
Я понимаю, что это очень упрощенная модель, и это может быть намного сложнее, но я думаю, что сложность сводится к повторению шагов 2 и 3 с вызовами различных исходных js-функций и каждый раз, когда они загружаются со всеми или подмножеством параметров/предыдущих результатов.
Если мы подпишем эту модель, мы можем придумать методы, чтобы функции jQuery выполняли двойную работу:
- Что они уже делают
- Записывая, что они сделали в форме
raw_function(passed_params)
Я делаю некоторые неправильные предположения, которые сделают это невозможным? Любые идеи о том, как профайлер Firebug пытается получить имена функций? Можно ли здесь использовать?
Изменить
То, что я думал, делало черный ящик со входом/выходом как:
normal jquery code
→ [BB] → code you'd write if you used no library
- Я назвал это компилятором, потому что вы скомпилировали один раз и затем использовали полученный код.
- Я утверждал, что он может иметь как минимум образовательное использование и, возможно, другие виды использования.
- Люди сказали, что это потребует небольшого количества кода и выдаст огромную массу; что не бросает вызов намеченной цели, насколько я вижу
- Люди сказали, что я добавлю лишний лишний шаг к рендерингу страницы, который, учитывая, что только полученный код в конечном итоге будет использоваться (и, вероятно, будет использоваться только для изучения), неверен.
- Люди говорят, что между функциями javascript и функциями jquery нет взаимно однозначного отношения, и подразумевается, что такой конвертер будет слишком сложным и, вероятно, не стоит усилий. С этим я сейчас согласен.
Спасибо всем!