Генерация JS-фреймворка «по готовому»
Кому: Разработчикам, которые используют JS, а в частности — фреймворки аля jQuery, MooTools, ExtJS.
Я помню про кеширование, но оно начнет спасать только при втором посещение, которого уже может и не произойти.
— объем JS-кода уменьшается;
— пропадает мертвый код;
— сайт начинает грузиться быстрее.
Минус очевиден: если владелец сайта — разрабочик, он тратит время. А если нет — деньги. А денег может и не быть, всякое случается. Бюджет на разработку, например, закончился.
Есть деньги — тогда решение вроде бы и найдено, но не всё так просто. Разработчики они ведь разные бывают и тогда сталкиваемся с проблемами кроссбраузерности, скорости выполнения и наличия багов. Большинство из вас может вспомнить один из таких проектов.
2. В ФВ ищутся все связи между ф-ями, чтобы не удалить лишнего.
3. Стоит предусмотреть ручной ввод имен ф-ий, потому что имя исполняемой ф-и может передаватся как строка.
— удобнейший генератор регулярных выражений онлайн (англ, с подсказками и примерами; предупреждаю: сделано на flash). Говорят, что есть версия под Linux, Windows, OS X
ПС: Осталось ощущение что что-то упустил. Не смог сделать подсветку JS.
Описание проблемы
Вы наверняка встречали подобные фразы «90% функций jQuery на сайте не используюся...» или «Страница вести 13 КБ, а jQuery 26 КБ...». Ещё один пример — плагины к jQuery, которые опять же умеют много, когда нужно мало. Нужно ли пользователям качать 90% мертвого груза и ждать в 3 раза дольше? Очевидно, что не нужно.Что в итоге просходит:
Наступает момент осознания проблемы и происходит одно из двух (а будет и третье):1. Всё остается как есть
Владелец сайта останется в сомнительном плюсе: ему не нужно будет тратить деньги на разработчика, который справится с проблемой. А в итоге не получит всю прибыль, которую мог.Я помню про кеширование, но оно начнет спасать только при втором посещение, которого уже может и не произойти.
2. Разработчик переписывает код на чистом JS
Плюсы:— объем JS-кода уменьшается;
— пропадает мертвый код;
— сайт начинает грузиться быстрее.
Минус очевиден: если владелец сайта — разрабочик, он тратит время. А если нет — деньги. А денег может и не быть, всякое случается. Бюджет на разработку, например, закончился.
Есть деньги — тогда решение вроде бы и найдено, но не всё так просто. Разработчики они ведь разные бывают и тогда сталкиваемся с проблемами кроссбраузерности, скорости выполнения и наличия багов. Большинство из вас может вспомнить один из таких проектов.
3. Генерация JS-фреймворка «по готовому»
Идея
Оба варианта как-то не очень, да? Есть задумка, как боротся с поставленной проблемой. Называется она генерация JS-фреймворка «по готовому».Суть
Берем готовый (или пишем) код, который использует фреймворк (для краткости, ФВ). Дальше этот код и ФВ передается в «что-то». «Что-то» — средство удаления неиспользуемых функций из ФВ.Несколько скромных мыслей о алгоритме
1. В готовом коде ищутся все использованные функции (далее ф-и). Тоесть предстоит написать регулярных выражений. Дальше из них отсеиваются все, которые не входят в ФВ.2. В ФВ ищутся все связи между ф-ями, чтобы не удалить лишнего.
3. Стоит предусмотреть ручной ввод имен ф-ий, потому что имя исполняемой ф-и может передаватся как строка.
Разминка
Если вы решились создать этот генератор JS-фреймвока, для начала рекомендую размяться:Готовый код:
clear_func();
func_with_arg(arg);
with_dependence();
funny()
;«Фреймворк»:
function hello(){alert('Hello')}
function see_ya(){dep()}
function another_dep(){dep2()}
function clear_func(){alert('Clear
function func_with_arg(arg){alert(arg)}
function with_dependence(){dep()}
function dep(){alert('Dependence')}
function dep2(){alert('Dependence 2')}
var funny = function (){ alert('Not funny')}
var animal = function (){alert('Monkey')}
Должно получиться:
function clear_func(){alert('Clear Function')}
function func_with_arg(arg){alert(arg)}
function with_dependence(){dep()}
function dep(){alert('Dependence')}
var funny = function (){ alert('Not funny')}
Ссылки:
— онлайн сжиматель JS— удобнейший генератор регулярных выражений онлайн (англ, с подсказками и примерами; предупреждаю: сделано на flash). Говорят, что есть версия под Linux, Windows, OS X
ПС: Осталось ощущение что что-то упустил. Не смог сделать подсветку JS.
0 комментариев