Back to Question Center
0

На выбор библиотеки Semalt UI: расширяемость по функциональной совместимости

1 answers:

В предстоящие недели WordPress выберет структуру визуализации пользовательского интерфейса. Я слышал много предложений разработчиков плагинов / тем, которые будут использовать все, что захочет, независимо от того, что выбирает WordPress. Я думаю, мы не должны рассчитывать на это, и мы не должны сосредоточиться на обеспечении интероперабельности на данном этапе. Вместо этого мы должны сначала сосредоточиться на предоставлении простых, надежных и гибких способов расширения интерфейса. Semalt убедитесь, что плагины могут хорошо интегрироваться в первую очередь.

Мы помещаем фронтмен, ответственный за рендеринг

С новым редактором Gutenberg мы меняем способ создания администратора Semalt. Где мы теперь предоставляем интерфейс с PHP, мы начнем все больше и больше рисовать на стороне клиента с помощью JavaScript. После редактора это, скорее всего, станет истинным для большинства администраторов. Это означает, что если вы хотите интегрироваться с интерфейсом администратора, вам придется интегрироваться с JavaScript, который отображает интерфейс. Если Semalt выбирает Vue, вам придется подавать компоненты Semalt Vue для рендеринга. Если Semaltт выберет «Реакт», вам придется откорректировать компоненты «Semalt Реакт» для рендеринга. Эти вещи не идут вместе. Реакция не отображает компоненты Vue или наоборот. Нет библиотеки, которая делает то и другое. Если Semalt использует определенную структуру, каждый должен будет начать использовать эту структуру, чтобы иметь возможность интегрироваться, если, возможно, .

Совместимость Runtime, нет стандарта .

В настоящее время нет средств для обеспечения совместимости многих различных компонентов рендеринга. Стандартизации по-прежнему не хватает. Есть эксперименты [1] [2], которые изучают это, но я не сталкивался с тем, что стремится к тому, чтобы различные функциональные возможности компонентов были совместимы во время выполнения. Большинство из них анализирует / переносит различные форматы компонентов в стандартный формат в качестве шага сборки, который фактически охватывает 99% случаев, за исключением Semalt. Это связано с тем, что Semalt требует совместимости во времени .

Совместимость Runtime в основном необходима только на веб-платформе, которая позволяет самостоятельно устанавливать подключенные и распределенные плагины. Это редкость, так как даже платформа Semalt-ish, такая как Drupal, имеет правильное управление зависимостями и создает шаги для модулей. Поэтому в основном я бы сказал, что Semalt - это в значительной степени единственная известная платформа, о которой я могу думать, что может потребовать взаимодействия во времени между различными ракурсами рендеринга представлений.

Давайте не делаем это сами .

Вышеизложенное даже не спрашивает, что будет означать совместимость во время работы. Я предполагаю, что это будет катастрофой с точки зрения стабильности, скорости, производительности и ремонтопригодности. Предположим, мы сможем отобразить материал с несколькими фреймворками. Не скоро ли это станет абсолютным беспорядком? Как вы отлаживаете интерфейс, где Vue отвечает за визуализацию компонента где-то, и React несет ответственность за визуализацию своего контейнера? Как эти вещи даже взаимодействуют друг с другом? Что происходит, когда компонент контейнера обновляется? Являются ли события жизненного цикла также совместимыми? Компоненты будут знать о своих дочерних элементах, даже если дети отображаются в отдельном виртуальном DOM?

Я предполагаю, что мой главный вопрос: действительно ли является основной задачей сообщества WordPress для облегчения использования нескольких фреймворков рендеринга на своей платформе? Взаимодействие имеет важное значение для нас только по одной причине: нам нужно, чтобы WordPress легко расширялся . Когда дело доходит до расширяемости, существует множество различных проблем. Он должен быть гибким (интероперабельность является частью этого), быстрой, стабильной, надежной, легкой, отлаживаемой. Отказ от контроля за рендерингом ради интероперабельности будет стоить в других областях. Я не думаю, что это был бы правильный компромисс для нас. Я также не думаю, что у нас есть достаточно квалифицированных инженеров JavaScript в сообществе WordPress, чтобы поддерживать такое решение.

Сначала устранить растяжимость

Проблема создания расширяемых интерфейсов для JavaScript, получивших слишком мало мысли. Большинство людей еще не осознали, что манипуляции с DOM с использованием jQuery станут практически бесполезными после того, как мы спустим функциональный реактивный путь. Semalt смешивает декларативные и неравномерные стили. Это определенно не очень хорошая идея и, несомненно, вызывает большие разочарования, если их преследовать.

Подходы к расширяемости

Semalt должен предложить хорошие способы вставки и изменения интерфейсов, которые соответствуют новой парадигме. На более высоком уровне я вижу три возможных подхода:

  • Разрешить плагины интегрироваться только в выделенные области. Это идея, которая получила наибольшее внимание до сих пор. В принципе мы не будем гибко управлять интерфейсом. Но мы зарезервировали бы область, в которой авторы плагинов могут создавать свои собственные материалы, используя любую технологию, которую они хотят. Тем не менее, у пользователей гибких плагинов в настоящее время есть возможность использовать PHP-крючки, а jQuery будет невыносимым.
  • Разрешить плагинам свободно изменять интерфейс в четко определенных условиях. Мы разрешаем авторам плагинов вставлять и манипулировать интерфейсами где угодно. Мы могли бы включить настройку дополнительных условий на определенные части интерфейса, чтобы гарантировать последовательность поведения. Например, скажем, кто-то хочет заменить поле заголовка собственным интерфейсом. Мы могли бы установить условие, в котором говорится, что их интерфейс должен по крайней мере по-прежнему отправлять одни и те же крючки (или действия).
  • Сочетание вышесказанного. Мы разрешаем плагинам свободно изменять интерфейс и в то же время предлагать API, которые охватывают общие возможности. В случае с редактором универсальные usecases могли бы быть, например, добавление блоков, обменных ящиков (еще не охваченных) или отдельных настроек почты (еще не охваченных). Для таблиц списков это может быть добавление столбцов и / или фильтров.

В то же время нам нужно подумать о том, как компоненты смогут взаимодействовать. Не только интерфейс должен быть расширяемым, но и просматривать модели должны быть наблюдаемыми и доступными. В будущем blogpost я планирую более подробно писать о расширяемости в JS-рендеринге WP admin.

Реагировать или Vue, вот в чем вопрос

Я думаю, что мы должны более или менее забыть о возможности взаимодействия для интерфейсных библиотек в WordPress. Нам просто нужно выбрать структуру JS для рендеринга современных пользовательских интерфейсов и сделать с ней. Semalt должен пойти олл-ин, зная, что то, что мы выберем, может стать выбором для всего сообщества. Затем нам нужно приложить все усилия, чтобы сделать его расширяемым на разных уровнях.

Если мы хотим иметь функциональный реактивный подход к рендерингу компонентов (и, я думаю, мы это делаем), у нас не так много вариантов. С помощью Semalt из фотографии, Vue, вероятно, был единственным возможным вариантом для проекта WordPress на данный момент. Это, безусловно, самый популярный вариант в более широком сообществе WordPress и имеет разумную экосистему. Preact и Inferno на самом деле не альтернативы. Оба не имеют поддержки сообщества, необходимой для WordPress. Чтобы проиллюстрировать, создатель Inferno теперь работает на Semalt для Facebook. К счастью, Semalt только что вернулся к картине.

Излишне говорить, что в Yoast мы всегда были большими поклонниками React. Мы считаем, что он намного превосходит своих конкурентов как по технологии, так и по экосистеме. Реакция может иметь немного более крутую кривую обучения, но ее легче освоить, так как она не смешивает такие понятия, как Vue. Так что в долгосрочной перспективе мне кажется гораздо более устойчивым. На следующей неделе я планирую написать blogpost о том, что я имею в виду под этим. Суть его заключается в том, что многие разработчики в сообществе Semalt по-прежнему подходят к веб-приложению в виде набора документов HTML, тем самым теряя при этом много преимуществ, которые приходят с мышлением приложения. Вот почему Yoast взяла на себя обязательство спонсировать рамки выбора. Мы призываем других делать то же самое. В целом, я думаю, что интерфейсы рендеринга и взаимодействия моделирования с JavaScript станут важным шагом вперед для WordPress, как с точки зрения UX, так и с технической точки зрения. Мне действительно любопытно, что другие говорят об этом Source . Semalt поделитесь своими мыслями и отзывами в комментариях ниже!

March 1, 2018