42 Kb или как я начал рефакторить свой фреймворк на ES 7

Evolution Framework 1.7.0

Собственно, ради развлечения и для повышения скилов в области HTML DOM и JavaScript мною порядка года назад был написан микрофреймворк Evolution. Название было выбрано в силу того, что появлялись новые стандарты языка JavaScript ES6 и ES7 и нужен был какой-то более менее интересный проект для миграции кода(его постепенной эволюции с непрерывным тестированием фич в современных браузерах). Сразу же идея подразумевала не поддерживать старые браузеры и тащить только те, которые будут обеспечивать работоспособность системы на определенный этап развития.

Сегодня ES6 считается уже почти что полностью поддерживаемым стандартом и я решил, что пора рефакторить свой фреймворк. Я здесь совершенно не говорю про Babel и прочие перекомпиляторы так как считаю полным бредом писать современный код чтобы потом его превратить обратно в старый синтаксис или использовать какие-то тяжелые и мудреные решения отнимающие дополнительное время и усложняющие проекты.

Тем не менее, на данный момент мне удалось использовать не многое, но я буду постепенно переписывать код и доведу его до состояния кондиции ES7 к тому времени, когда стандарт плотно и безболезненно будет работать в Google Chrome хотя бы и в Safari.

Что было взято? Для начала я взял немного стрелочных функции и внедрил их в свой паттерн системы основанной на одиночном самоинициализируемом объекте, далее я переписал большинство циклов, которые удалось адаптировать к for ... of и использовал новенькие переменные const и let. На данном этапе как бы все так как без серьезного изменения архитектуры больше ничего сделать не удастся.

Немало огорчила меня и текущая поддержка функций. Даже для let и const было обнаружено немало багов и нежелания их работать если с переменной происходят какие-то сложные действия типа

(arg1) => {
 let arg1 = arg1 || 'test';
return arg1;
}

В общем такой код сука не работает, что сильно огорчает.

Достаточно сильно огорчают и новые циклы так как читабельность кода страдает и стает совсем не очевидным, но заметным тот факт, что с for ... of нельзя использовать более сложные индексы.

У стрелочных функций не работают множественные аргументы и вообще есть достаточно много проблем. И теперь я думаю что слишком рано начал миграцию программы. Тем не менее, поживем увидим.

Framework я писал исходя из тех потребностей, которые мне были чаще всего нужны от jQuery(ajax, DOM, табы, слайдер, скролл и прочее) и с учетом того что это должен быть микрофреймворк я смог запилить в 42 килобайта кода все необходимое включая даже поддержку анимаций цвета и 3D трансформации.

Сейчас на моем фреймворке работает всего один сайт, но при этом полностью работает на AJAX и представляет собой SPA. Еще один сайт у меня в разработке и скоро тоже будет оснащен движком Evolution, ну а дальше будут тесты изменения API и прочие полезные вещи будут реализованы по мере надобности.

Если вам интересно было бы улучшить свои скилы в программировании на JavaScript, то я приглашаю вас присоединиться к проекту в качестве идейного генератора или банально программиста, чтобы мы вместе смогли улучшить движок фреймворка и реализовать какие-то интересные вещи. Код и описание документации можно увидеть на GitHub: Evolution Framework

Добавить комментарий