Интро

Первый пост я хотел бы сделать вводным и рассказать о своих планах по наполнению блога. Намерен я писать в первую очередь о своем опыте. И для начала я хотел бы начать с описания процесса разработки данного блога.

Я уже писал в Обо мне, что на примере разработки блога я решил плотно познакомиться с react'ом. До этого у меня уже был более чем двухлетний опыт разработки SPA-приложений на angular.js. А вот с react'ом приходилось сталкиваться лишь, читая статьи и иногда "играясь" в песочнице.

Привлек он меня в первую очередь возможностью серверного рендеринга и flux'ом, т.к. за два года использования angular.js мне не раз приходилось сидеть и дебажить код в стиле "не совсем понимаю почему вот это значение тут изменилось". А виной тому является двухстороннее связывание. Оно конечно может быть удобным, но до тех пор, пока от одного и того же значения у тебя не начинают зависеть/менять несколько компонентов. Плюс всем известная проблема производительности digest-цикла. С ней конечно можно справляться, но особого удовольствия это тоже не доставляет.

Сразу скажу, что с react'ом тоже не все так гладко как хотелось бы: например чтобы заставить правильно работать серверный рендеринг мне тоже пришлось повозиться, хотя казалось бы эта фича преподносится как одна из главных и все решения должны быть давно обкатаны. Об этой и остальных возникших проблемах я расскажу в следующих постах.

Но в целом react'ом я доволен.
Кому-то, конечно, может не нравится html прямо вперемешку с кодом компонента, но имхо тут необходимо сразу уяснить что jsx - это совсем не html, и при сборке он транслируется в вызовы react.createElement которые собственно и работают с тем самым виртуальным DOM'ом, а jsx - простое удобство. А то что у тебя шаблон находится прямо в компоненте - вдвойне удобно, нет необходимости постоянно "прыгать" между файлами.

Вообще при разработке я обкатал для себя много чего нового и помимо react'а. (а почему бы и нет?))
Тут и ES-2015, и webpack с npm-scripts в качестве task-runner'а, eslint, и много других инструментов. Также в процессе написал несколько вспомогательных библиотек, часть которых уже опубликована в каком-то виде на github, а некоторые я планирую доработать и опубликовать позже.

Для первого поста, наверное, получилось немного сумбурно, но в следующих я постараюсь исправиться и рассказывать более сфокусировано. До встречи!