NewsНовая старая админка

Решил, раз уж активно работаю и с админкой этого блога, освежить и её. Внешне не должно ничего поменяться, а вот под капотом изменения предстоят. Как уже писал тут в 2016-м, сделана она на Ember.js с Symfony. Вот с JS-частью и затеял обновление. Изначально и довольно давно задумал удалить SPA (single page application), переделать на обычный серверный рендеринг и избавиться от геморроя, связанного с быстрым устареванием фронтендовой инфраструктуры.

Но прошло уже 7 лет, а админка продолжает работать, bower не исчез, а всё так же скачивает пакеты, хоть и предупреждает уже несколько лет, что пора мигрировать на Yarn и Vite (что это, кстати?), крутится в докере 8-я версия Node.js, а выше не поднимешь, так как собираться код уже не будет...

NewsНовая админка

Спустя кучу лет привёл до работоспособного состояния и запустил третью версию движка этого бложика. Вернее, это только его часть, админка. Предыдущая торжественная заливка была почти 4 года назад :) Собственно, эту запись из неё первую и пишу.

Технически залитая часть сайта представляет из себя SPA (single page application) на Ember.js и REST API на PHP фреймворке Symfony2. Исходники доступны на гитхабе, так что можете изучать и ломать это приложение полностью.

Реализованы, конечно, не все задумки, но новая версия уже умеет больше, чем предыдущая. И можно будет уже начинать потихоньку писать новый фронтенд на чём-нибудь интересном.

Ember.jsКомпиляция шаблонов в Ember.js 1.10

Только немного отвлёкся от Ember.js, как в нём внезапно произошли изменения, а именно, сменился движок рендеринга шаблонов. Был Handlebars, а стал какой-то HTMLBars, у которого я даже официального сайта не наблюдаю. Хотя для рядового разработчика ничего не меняется, внешне сами шаблоны остаются почти как есть, основные же отличия во внутренностях.

Если в двух словах, то было и стало.

Раз:

1
2
<script src="/bower_components/handlebars/handlebars.js"></script>
<script src="/bower_components/ember/ember.js"></script>

Два:

1
2
<script src="/bower_components/ember/ember-template-compiler.js"></script>
<script src="/bower_components/ember/ember.js"></script>

Второй момент - это предварительная компиляция *.hbs шаблонов в JavaScript-код. В предыдущей записи, посвящённой Ember.js, использовался модуль ember-precompile, однако сейчас я его даже пробовать не стал, уверен, что ошибки вылезут довольно быстро. Есть же и другие инструменты, рекомендованные на официальном сайте данного фреймворка (здесь).

Symfony2Symfony2 и Ember.js

Внимание, данная запись устарела. Работоспособность модуля ember-precompile под вопросом начиная с Emberjs 1.9, в связи с переходом на handlebars 2.0.0, а с версии эмбера 1.10+ шаблоны рендерятся с помощью HTMLBars, об этом напишу в ближайшее время.

Эту тему, конечно, в двух словах не опишешь, но попробую. Что это такое и с чем его едят - рассказывать не буду, т.к. раз уж вы сюда попали, то слова эти для вас не пустой звук. Расписывать, почему именно Symfony2 и Ember.js - тоже. Просто так сложилось. Ладно, вступление окончено.

В данной записи будет затронута только серверная часть, хотя не исключено, что когда-нибудь дойдут руки и до статеек по эмберу. Собственно, Symfony-приложение предоставит яваскриптовому приложению REST API, а так же неким образом "подготовит" его и выдаст клиенту в браузер.