кто это? – блог компании r_keeper – Блог компании r_keeper
2021 Обзор Ресторан
24 сен 2021
🕓 время чтения: 5 мин.
Многие даже не представляют, чем занимается су-шеф на кухне. В действительности для гостей заведений общепита все, кто работает на кухне кафе или ресторана, – повара, классификация которых не имеет особого значения. Но тот, кто заходил за кулисы кухни заведения, знает о непростой иерархической лестнице среди поваров. Су-шеф идет сразу после шеф-повара и является вторым человеком на кухне.
Название профессии пришло из французского языка, но в его состав включено не существительное sou, означающее монету, а предлог су, который переводится как «под». Французское chef шеф значит «глава, руководитель», происходит от латинского caput — «голова», так что буквально су-шеф означает «второй шеф» или «под шефом, шеф, который является заместителем первого. Или, переводя на литературный язык, это замначальника.
В зависимости от востребованности заведения, его проходимости, требований начальства, су-шеф может значиться в качестве штатной единицы, а может и не значиться.
Обязанности су-шефа достаточно объемные:
-
Если шеф-повар отсутствует на месте, шеф-заместитель берет на себя весь организационный и управленческий функционал на кухне.
-
Су-шефы следят за тем, чем занимается каждый из подчиненных на кухне, контролируют приготовление блюд, корректирует действия персонала с целью улучшения конечного результата.
-
В обязанности этого человека входит составление списков продуктов на закупку. Как и шеф, он может получать товары, оценивая качество продовольствия, и при низком или ненадлежащем качестве возвращать поставщику.
-
Второй шеф следит за осуществлением санитарно-гигиенических норм сотрудниками заведения.
-
Шеф с приставкой су контролирует процессы и технологии приготовления блюд.
-
Второй шеф отвечает за техническое оснащение: корректную эксплуатацию кухонных приборов, составляет спискидля закупки требуемого инвентаря и оборудования, пишет заявки на требуемый ремонт или замену оборудования.
-
Следит, как и шеф, за соблюдением работниками правил трудового договора и техники безопасности.
-
В обязанностях этого повара – разработка учебных планов для сотрудников, поиск подходящих семинаров, мастер-классы, лекции.
-
Су-шефы также оценивают презентацию блюда перед подачей. В некоторых заведениях презентуют готовое блюдо.
-
Су шефы систематически готовят сложные блюда, разбираются в техниках и технологиях приготовления, принимают участие в рецептурах, знают, состав каждого блюда в меню, а также применяемые компоненты, как и шеф повар заведения.
Так что обязанности су-шефа достаточно разноплановые. Главное, что он должен суметь заменить главного человека на кухне в любой момент времени и так, чтобы процесс обслуживания гостей не пострадал. Кроме того, он делает все, что скажет ему шеф. От шеф-повара этот сотрудник отличается уровнем ответственности и, возможно, кулинарным опытом и рангом.
Подписка на новости и статьи r_keeper
Подпишитесь на полезную рассылку от r_keeper.Получайте не более 1 письма в неделю.
Нажимая кнопку Подписаться, Вы даете согласие на получение сервисных и рекламных сообщений о Программном обеспечении Оператора и продуктах/услугах его Партнеров, согласие на обработку персональных данных и соглашаетесь с политикой обработки персональных данных
Летние кафе и веранды
Сезонные форматы московских заведений
Вечно молодой
Как рестораны переосмысливают бургеры и делают их актуальными для всех
Чек-лист официанта
Расскажем что такое чек-листы и как их применять
Онлайн-бронирование
Как сервис r_k Booking помогает контролировать заполняемость ресторана
У тебя горят уши
Не так давно издательство «Пламень» перевыпустило сборник текстов Луи-Фердинана (sic!) Селина, смысловым ядром которого стал роман «Путешествие на край ночи» в переводе Юрия Корнеева. Поэтико-лирическими мыслями об этой книге и ее «русском» контексте делится Сергей Солоух.
Все мы начиная с 24 февраля 2022 года оказались перед лицом наступающего варварства, насилия и лжи. В этой ситуации чрезвычайно важно сохранить хотя бы остатки культуры и поддержать ценности гуманизма — в том числе ради будущего России. Поэтому редакция «Горького» продолжит говорить о книгах, напоминая нашим читателям, что в мире остается место мысли и вымыслу.
Луи-Фердинан Селин. Путешествие на край ночи. СПб.: Пламень, 2022. Перевод с французского Юрия Корнеева
Луи-Фердинанд Селин опять в цене. После фантастической находки потерянных манускриптов и бешеного успеха «Войны», разлетавшейся в ковидной Франции веселее свежих выпусков популярных комиксов, осенью уже 2022-го я собственными глазами видел, и не только в Париже, а на вокзале провинциального Лилля, города ткачей, в киоске Relay, забегаловке, где наскоро покупают в дорогу газировку и зубную щетку, в книжном углу — томики свеженького галлимаровского издания «Лондона». Все чин чинарем. Флагманская белая серия.
Родина тоже старается — если не успевать, то соответствовать. Новых книг, впрочем, пока не переводят и не издают, зато переиздают старые. Тоже, конечно, дело. Вот питерское издательство «Пламень» порадовало вторым (первое выходило в 2018-м) изданием «Путешествия».
Впрочем, порадовало ли, — вопрос. Увы, перевод Селина оказался той самой шапкой, что совершенно не по нашему русскому Сеньке. Мне самому приходилось об этом с огорчением писать. Писали об этом и другие. Прекрасный разбор перевода «Путешествия на край ночи» Юрия Корнеева, превратившего, к несчастью, великого французского поэта, лирика в банального уличного нытика-матерщинника, можно найти в общедоступной статье профессора Нины Разумовой, так что нет смысла повторяться. Сосредоточимся не на стиле и совершенстве текстов новой книги, а на их составе и композиции, и здесь уже блеснем цитатами.
И сразу надо отметить, что задуман томик в культурном Питере и хорошо, и правильно. Так и следует издавать книги вековой давности, насколько бы они не были актуальны в наши дни: с контекстом, с набором вариантов, перепиской с издателем. Не очень только ясно, почему лишь с Гастоном Галлимаром, ведь книгу-то издал в 1932-м Робер Деноель, и переписка с ним автора как раз весьма обширна. Зато есть «Церковь» в переводе, правда, Маруси Климовой — но, тем не менее, первый подход Селина к своей теме и героям: Африка, врач Бардамю, Нью-Йорк, парижский пригород — в общем, предварительный набросок «Путешествия». Ну и единственное художественное произведение Селина с очевидным антисемитским душком — для русского читателя тоже в некотором смысле откровение. Впрочем, тут же для баланса Лев Троцкий — один из первых рецензентов великого романа. И до кучи Иван Анисимов — автор предисловия к русскому изданию 1934-го, а может быть, и самого этого перевода Эльзы Триоле. Неплохо, но при этом ощущение случайности всего набора и состава стойкое. Поскольку самый краткий, вводный, скажем так, минимум, воссоздающий русской контекст «Путешествия на край ночи» Луи-Фердинанда Селина (пусть будет так, без революционной транслитерации Корнеева — Фердинан), совершенно непредставим без Юрия Карловича Олеши.
С одной стороны, автора большой и страстной рецензии 1936-го * Олеша Ю. «Путешествие на край ночи» // Литературное обозрение, 1936, №20 – С.13-16., а с другой — собственно, Бардамю в его русском, неизбежно интеллигентском изводе. Зависть — одно из главных, важнейших, всепоглощающих чувств (к богатым, к здоровым, к веселым, к настоящим хозяевам этого мира), одухотворяющее все помыслы и саму жизнь француза Бардамю, как его замечательно передал, буквально памятник ему соорудил, автор нашего русского романа «Зависть». Юрий Олеша.
Сам Олеша, впрочем, считал важнейшим другое: «с первых же страниц определяется одно из основных душевных качеств автора — цинизм» * Олеша Ю. «Путешествие на край ночи» // Литературное обозрение, 1936, №20 – С.14.. Еще бы, ему ли не знать! Автору «Книги прощания» — потрясающего документа, и формой, и содержанием в точности отвечающего тому определению, которое для слова «цинизм» дает Википедия: «откровенное, вызывающе-пренебрежительное и презрительное отношение к нормам морали, культурным ценностям и представлениям о благопристойности, отрицательное, нигилистическое отношение к общепринятым нормам нравственности, к официальным догмам господствующей идеологии». С поправкой на наше русское, конечно. Свое, интеллигентное, что непременно со флером — нежности, культуры, душевной тонкости, — что гаже и противнее, возможно, простого, животного и поэтому совершенно натурального цинизма сына парижских лавочников Луи-Фердинанда Селина. Но, впрочем, это так — придирки, чепуха. Два гениальных лирика, поэта, имеют полное и несомненное право выбирать метод и способ исследования тайн человеческой души. Как своей, так и чужой.
И в этом смысле, думаю, Луи-Фердинанд Селин, искавший откровения и понимания всего и вся там, где край ночи, был бы, наверное, в полном восторге от рецензии Юрия Карловича Олеши:
«Капиталистический мир уродует людей. Книга Селина показывает, как изуродован капиталистическим миром художник! Художник отказывается от главного, что есть в призвании художника. Скажем старомодные слова, которые звучат в наше время совсем по-иному. Это слова о том, что художник должен звать, воодушевлять человека. Должен учить надеяться, ждать, верить. Для человека Запада есть только один источник надежды. Лучшие люди уже увидели его. Они знают, что безумие мира прекратится с концом капитализма. Селин отравляет человека. „Истина, — говорит он, — это бесконечная предсмертная агония. Истина этого мира — смерть“» * Олеша Ю. «Путешествие на край ночи» // Литературное обозрение, 1936, №20 – С.15..
Да, был бы в восторге, когда бы положил рядом его же, Олеши, «Книгу прощания»:
«Додумался до вывода: единственная реальная вещь в мире — моя смерть. Остальное случайно, может быть, а может и не быть — призрак, а смерть моя будет обязательно» * Олеша Ю. Книга прощания. М.: Вагриус, 1999, с.37.
Это понятно. Безусловно. Но был, конечно, и свет. И тепло. Бебер у Селина. Самые трогательные страницы «Путешествия» — похожие на сон, на опьянение, буквально ворованное, на закате долгого, мучительного дня, — мелькающие, будто короткая передышка между собакой и волком, посвящены в романе, отданы мальчику из парижского пригорода. La Garenne-Rancy. Драньé — так, с ударением, чтобы споткнуться, как под ногтями грязь самого этого места, у Юрия Корнеева.
Был свой Бебер и у Юрия Олеши. Тепло и свет в его уже русском, но столь же безнадежном, как и французское, путешествии на край ночи. Старшая сестра Ванда.
«Сестра была для меня существом удивительным. Нет, вернее, в отношении моем к сестре было много такого, что сейчас удивляет меня: я, безусловно, например, видел в ней женщину. Иногда я даже совершал поступки, говорящие о моем именно таком к ней отношении. Например, я обнимал ее, например, мне хотелось целовать ее в шею и целовать голые руки, когда я их видел. Она не противилась этому. Наоборот, ей и самой это нравилось. Мы сидим, помню, на краю постели, в которой я сейчас буду спать, — где-то на перепутье квартиры, где стоит моя кровать, — сидим поздно вечером, когда все спят, и переживаем тяжкое, сладкое состояние существ, которые должны были бы отдаться друг другу, но останавливаются перед преградой стыда, ответственности, страха. Я то и дело прикасаюсь к ней, к ее голым рукам, плечам — потому что и она собирается спать, — и она говорит, чтобы все обратить в шутку:
— У тебя горят уши.
Мне кажется, что с ней я познал бы наибольшую сладость обладания женщиной. Оскорбляет ли ее память то, что я сейчас пишу? Думаю, что нет! Думаю, что признать женщину — женщиной никогда не может быть оскорбительно для нее — хотя бы это сделал не то что брат, а какой-нибудь действительно павиан!» *Олеша Ю. Книга прощания. М.: Вагриус, 1999, с.70
Так любит своего Бебера Юрий Олеша.
А так прощается с ним:
«Моя сестра Ванда умерла в девятнадцатом году от тифа. Она заразилась от меня. Я выздоровел, она умерла, ей было двадцать три года. Это произошло во время деникинщины в Одессе, зимой. На похоронах я не был, потому что не выходил еще из дому после болезни, и не знаю, в каком месте кладбища ее похоронили» *Олеша Ю. Книга прощания. М.: Вагриус, 1999, с.95.
Селин немножко по-иному. Не так.
«Я еще раз проверил себя — действительно ли во всем этом нет моей вины. Дома у меня было холодно, и я чувствовал себя так, словно в одном из углов большой ночи специально для меня выкроили маленькую ночь.
Время от времени с улицы наползал шум шагов, эхо их становилось все сильней, разносилось по комнате, затихало. Тишина. Я еще раз глянул наружу, не происходит ли что-нибудь у дома. Нет, все происходило только во мне: я беспрерывно задавал себе все тот же вопрос.
В конце концов с этим вопросом я и заснул в своей собственной ночи, в этом гробу — до того я устал бродить, ничего не находя» *Луи-Фердинан Селин. Путешествие на край ночи. Изд. 2-е. — М.: Пламень, 2022, с.267. .
Есть разница между сыном лавочников и русским интеллигентом. Да. Ощущается. Первый мучительно пытался понять степень своей вины за все происходящее, а второй как будто бы и нет. Он просто не знает, «в каком месте кладбища ее похоронили». Сестру. Его собственную. Веру, надежду и любовь. И не искал никогда. Что это означает? А то всего лишь навсего, что наш русский Бардамю, Юрий Карлович Олеша, дальше, много дальше ушел в ту сторону, где бесконечный и никогда не достижимый край ночи.
Не знаю, нужно ли этим гордиться. Но помнить и знать, безусловно, надо.
Преобразование: определение и словообразование
Как мы формируем новые слова? Различные процессы возникновения слов для обозначения чего-то определенного называются процессами словообразования . Фраза из первого предложения содержит пример особого типа процесса словообразования, известного как преобразование . Форма слова включает этот процесс преобразования ; где форма когда-то была только существительным — формой чего-то, например круга, — теперь это может быть и глагол — лепить или конструировать что-то.
Рис. 1. Можно преобразовать слова во что-то новое посредством процесса преобразования в английском языке.
Преобразование Определение
Официальное определение лингвистического преобразования выглядит следующим образом:
Тип процесса словообразования, при котором слово присваивается новому классу слов или части речи без какого-либо изменения формы.
Важнейшим элементом в процессе преобразования является смысл. Слово, которое не претерпевает структурных изменений, но изменяет грамматические категории (и, следовательно, в некоторой степени значение), претерпело преобразование.
Грамматическая категория — это единица грамматики, такая как существительное, глагол или прилагательное, которые имеют общие черты и одинаково функционируют в устной и письменной речи.
В примере со словом (словами) формой слово изменилось из существительного, выражающего форму чего-либо, в глагол, выражающий форму чего-либо. Есть небольшое изменение в значении, поскольку слова функционируют по-разному в речи, но не настолько резкое изменение, чтобы слова больше не были связаны.
Преобразование: вывод нуля
Этот процесс преобразования также называется нулевой деривацией или нулевой деривацией.
В лингвистике деривация — это процесс создания нового слова из существующего путем его изменения каким-либо образом, чаще всего путем добавления аффикса. Фразы нулевой или нулевой деривации указывают на необходимость того, чтобы процесс преобразования не изменил структуру слова — нулевая деривация в образовании.
Преобразование также иногда называют функциональным сдвигом, потому что изменение происходит в функции слова, а не обязательно в его значении. Вот пример двух слов, не связанных конверсией:
Plane (существительное) – самолет
To Plane (глагол) – гладить деревянную поверхность
Эти два слова звучат одинаково, но их значения даже близко не совпадают. Это не пример конверсии.
Примеры слов-преобразований
Вот несколько примеров истинных слов-преобразований. Некоторые начинаются как глаголы и превращаются в существительные, а другие работают в обратном порядке.
1. Хозяин (существительное) – человек, который принимает или развлекает другого
Принимать (глагол) – акт приема или развлечения другого
2. Надеется (глагол) – акт доверия или ожидания чего-либо
Надежда (существительное) – чувство доверия или ожидания того, что что-то произойдет
3. Микроволновая печь (существительное) – бытовой прибор, использующий электромагнитные волны для нагрева предметов
В микроволновую печь (глагол) – готовить или нагревать пищу (или другие предметы) с помощью микроволнового прибора
4. Глаз (существительное ) – орган, необходимый для зрения
To Eye (глагол) – смотреть на кого-то или что-то внимательно или с подозрением
Процесс преобразования в английском языке
Английский язык постоянно развивается. Согласно Global Language Monitor 1 , новое слово создается каждые 98 минут. Преобразования отвечают за придание нового значения существующим словам, и процесс преобразования в английском языке более распространен в лексиконе двадцать первого века, чем когда-либо прежде.
Темп общения для англоговорящих людей продолжает увеличиваться по мере того, как технологии управляют нашей перепиской. Мобильная связь имеет ощущение безотлагательности — потребность или желание быть понятым с использованием все меньшего и меньшего количества слов и все более уникальными способами. В результате преобразование стало более законным и распространенным способом создания новых слов. Рассмотрим глагол «в Google». Раньше Google был просто названием поисковой системы; теперь это слово является синонимом поиска чего-либо в Интернете.
Рис. 1. Google изменился с простого названия компании на глагол в английском лексиконе — пример преобразования.
Рассмотрим, например, слово призрак . Традиционно это существительное означает дух умершего человека. В процессе преобразования люди взяли значение слова призрак и превратили его в глагол, чтобы выразить акт игнорирования чьих-либо попыток общения, обычно в цифровом виде с помощью текста или обмена сообщениями, — исчезновение, как призрак.
Напоминаем, что омофоны — это слова, которые звучат одинаково, но имеют разное значение и могут писаться по-разному. Помните пример с самолетом и самолетом?
Лингвистическое преобразование не дает тех же результатов, что и слова, являющиеся омофонами. Существительное призрак (жуткое видение) и глагол призрак (игнорировать кого-то) родственны по смыслу — они оба имеют отношение к исчезновению человека. Это не просто омофоны; они прошли процесс преобразования.
Призрак , жуткое привидение, не является буквально синонимом термина к призраку или игнорировать. Хотя они основаны на одной и той же идее или основном значении, есть небольшая разница в значении из-за изменения грамматического класса (например, существительного на глагол) и контекста, в котором люди используют каждое из них.
Типы преобразования в английском языке
В английском языке существует несколько различных типов преобразования. В процессе обычно используются существительное и глагол, но это не единственные варианты преобразования.
Существительное в глагол (вербификация)
Наиболее распространенная форма преобразования в английском языке — существительное в глагол; это означает, что большинство случаев преобразования — это существительное в глагол (также называемое вербированием).
Обмен в комиксе Calvin and Hobbes (1993), написанном Биллом Уоттерсоном, объясняет искусство вербализации (или вербализации).
Кэлвин: Я люблю глаголить слова.
Хоббс: Что?
Кальвин: Я беру существительные и прилагательные и использую их как глаголы. Помните, когда был важен «доступ»? Теперь это то, что вы делаете. Получилось глагольно. Странный язык глаголов.
Последняя фраза «Глаголирование странного языка» является примером использования прилагательного (странный) в качестве глагола.
Глагол в существительное
Менее распространенная форма преобразования, чем вербализация, — это переход от глагола к существительному, все еще широко используемый.
Следующее предложение из Искусство войны (5 век до н.э.), написанное Сунь Цзы, содержит пример использования глагола в качестве существительного.
Вы можете быть уверены в успехе своих атак, если атакуете только незащищенные места. (Глава 6)
В этом примере слово атака используется сначала как существительное, а затем как глагол. Слово атака началось в английском языке как глагол, но, как видно здесь, также может быть существительным.
Другие преобразования
Преобразования с участием других частей речи, помимо глаголов и существительных, менее распространены, но следуют той же концепции.
Прилагательные могут стать существительными:
Зеленый (прилагательное) – цвет
Зеленый (существительное) – пространство травы возле лунки в гольфе
Наречия могут стать существительными:
Вверх (наречие) – направление или положение
Вверх (существительное) – восходящая тенденция в мировоззрении или удаче (например, «Взлеты и падения в жизни»)
Преобразование – основные выводы
- Преобразование — это тип процесса словообразования, при котором слово присваивается новому классу слов или части речи без изменения формы.
- Преобразование не дает такого же результата, как омофоны.
- Преобразование обычно включает глаголы и существительные, но также может включать и другие части речи.
- Значение слова в основном сохраняется благодаря преобразованию.
- Процесс конверсии в английском языке более распространен в лексиконе двадцать первого века, чем когда-либо прежде.
1 Количество слов в английском языке. Глобальный языковой монитор. 2020.
Создание фреймворка микроинтерфейса | Toptal®
Микроинтерфейсная архитектура — это подход к проектированию, при котором интерфейсное приложение разбивается на отдельные полунезависимые «микроприложения», свободно работающие вместе. Концепция микроинтерфейса смутно вдохновлена микросервисами и названа в их честь.
Преимущества шаблона микро-интерфейса включают:
- Архитектура микро-интерфейса может быть проще, и, следовательно, легче анализировать и управлять.
- Независимые группы разработчиков могут упростить совместную работу над интерфейсным приложением.
- Они могут предоставить средства для миграции со «старого» приложения, запустив параллельно с ним «новое» приложение.
Несмотря на то, что в последнее время микрофронтендам уделяется много внимания, на данный момент не существует единой доминирующей реализации и четкого «лучшего» микрофронтенда. На самом деле существует множество подходов в зависимости от целей и требований. См. библиографию для некоторых из наиболее известных реализаций.
В этой статье мы пропустим большую часть теории микроинтерфейсов. Вот что мы не будем охватывать :
- «Разделение» приложения на микроприложения
- Проблемы с развертыванием, в том числе то, как микроинтерфейсы вписываются в модель CI/CD
- Тестирование
- Должны ли микроприложения быть согласованы один к одному с микросервисами на серверной части
- Критика концепции микроинтерфейса
- Разница между микрофронтендом и простой старой компонентной архитектурой
Вместо этого мы представим учебник по микро-интерфейсу, посвященный конкретной реализации, выделив важные проблемы в архитектуре микро-интерфейса и их возможные решения.
Наша реализация называется Yumcha. Буквальное значение «ням ча» на кантонском диалекте — «пить чай», но его повседневное значение — «выйти за димсам». Идея состоит в том, что отдельные микроприложения внутри макроприложений (так мы будем называть составленное приложение верхнего уровня) аналогичны различным корзинам с небольшими порциями, приготовленными во время обеда димсам.
Мы иногда будем называть Yumcha «средой микроинтерфейса». В современном мире термин «фреймворк» обычно используется для обозначения Angular, React, Vue.js или других подобных надстроек для веб-приложений. Мы вообще не говорим о фреймворке в этом смысле. Мы называем Yumcha фреймворком просто для удобства: на самом деле это скорее набор инструментов и несколько тонких слоев для создания приложений на основе микрофронтенда.
Учебное пособие по микроинтерфейсу Первые шаги: разметка для составного приложения
Давайте углубимся и подумаем, как мы можем определить макроприложение и микроприложения, которые его составляют. Разметка всегда была в основе Интернета. Таким образом, наше макроприложение не будет иметь ничего более сложного, чем следующая разметка:
<голова> голова> <тело>Здравствуйте, микроинтерфейсное приложение.
тело>
Определение нашего макроприложения с помощью разметки дает нам полный доступ к возможностям HTML и CSS для компоновки и управления нашими микроприложениями. Например, одно микроприложение может быть расположено поверх другого, или сбоку, или в углу страницы, или в одной панели гармошки, или оставаться скрытым до тех пор, пока что-то не произойдет, или постоянно оставаться в фоновом режиме. .
Мы назвали пользовательский элемент, используемый для микроприложений,
, потому что «портал» — многообещающий термин для микроприложений, используемый в предложении портала, ранней попытке определить стандартный элемент HTML для использования в микроинтерфейсах.
Реализация пользовательского элемента
Как реализовать
? Так как это пользовательский элемент, как веб-компонент, конечно! Мы можем выбирать из множества сильных претендентов на написание и компиляцию веб-компонентов микроинтерфейса; здесь мы будем использовать LitElement, последнюю версию Polymer Project. LitElement поддерживает синтаксический сахар на основе TypeScript, который обрабатывает для нас большую часть шаблонов пользовательских элементов. Чтобы сделать
доступен на нашей странице, мы должны включить соответствующий код в виде
,как мы сделали выше.
Но что на самом деле делает
?В первом приближении было бы просто создать iframeс указанным источником:
render(){return html``;}
…гдеrender
— стандартный хук рендеринга LitElement,использующий егоhtml
Встраивание микроприложений в
iframe
s iframe
s — это элемент HTML, который все любят ненавидеть, но на самом деле они обеспечивают чрезвычайно полезное, надежное поведение в песочнице. Тем не менее, существует длинный список проблем, о которых следует помнить при использовании iframe
s, которые могут повлиять на поведение и функциональность нашего приложения:
- Во-первых,
iframe
имеют хорошо известные особенности в плане размера и компоновки. - CSS, конечно же, будет полностью изолированным от
iframe
, к лучшему или к худшему. - Кнопка «назад» браузера будет работать достаточно хорошо, хотя текущий навигационный статус
iframe
не будет отражаться в URL-адресе страницы , поэтому мы не могли ни вырезать, ни вставлять URL-адреса, чтобы получить то же состояние составленного приложение, ни глубокая ссылка на них. - Связь с iframe
postMessage
. - Необходимо принять меры для аутентификации через границы
iframe
. - Некоторые программы чтения с экрана могут наткнуться на на границе iframe
и
или нуждаются вiframe
, чтобы иметь заголовок, который они могут объявить пользователю.
Некоторых из этих проблем можно избежать или смягчить, не используя iframe
, альтернативу, которую мы обсудим позже в этой статье.
Положительным моментом является то, что iframe
будет иметь свою собственную, независимую Content-Security-Policy
(CSP). Кроме того, если микроприложение, на которое указывает iframe
, использует сервис-воркер или реализует рендеринг на стороне сервера, все будет работать должным образом. Мы также можем указать различные параметры песочницы для iframe
, чтобы ограничить его возможности, например возможность перехода к верхнему фрейму.
Некоторые браузеры добавили или планируют добавить атрибут loading=lazy
для iframe
s, который откладывает загрузку нижних iframe
s до тех пор, пока пользователь не прокрутит их до них, но это не обеспечивает мелкозернистый контроль ленивой загрузки, который мы хотим.
Настоящая проблема с iframe
s заключается в том, что для извлечения содержимого iframe
потребуется несколько сетевых запросов. Принимается верхнего уровня index.html
, его сценарии загружаются и его HTML анализируется, но затем браузер должен инициировать еще один запрос для iframe
HTML, подождите, чтобы получить его, проанализируйте и загрузите его сценарии и визуализируйте содержимое iframe
. Во многих случаях JavaScript iframe
по-прежнему должен был бы раскручиваться, выполнять свои собственные вызовы API и отображать значимые данные только после того, как эти вызовы API возвращаются и данные обрабатываются для просмотра.
Это может привести к нежелательным задержкам и артефактам рендеринга, особенно когда задействовано несколько микроприложений. Если приложение iframe
реализует SSR, это поможет, но все же не избавит от необходимости дополнительных круговых обходов.
Таким образом, одна из ключевых проблем, с которыми мы сталкиваемся при разработке реализации нашего портала, заключается в том, как справиться с проблемой кругового пути. Наша цель состоит в том, чтобы один сетевой запрос отключил всю страницу со всеми ее микроприложениями, включая любой контент, который каждое из них может предварительно заполнить. Решение этой проблемы кроется в сервере Yumcha.
Сервер Yumcha
Ключевым элементом представленного здесь решения микроинтерфейса является настройка выделенного сервера для обработки состава микроприложений. Этот сервер проксирует запросы на серверы, на которых размещено каждое микроприложение. Конечно, для настройки и управления этим сервером потребуются некоторые усилия. Некоторые подходы к микроинтерфейсу (например, single-spa) пытаются обойтись без таких специальных настроек сервера во имя простоты развертывания и настройки.
Однако стоимость установки этого обратного прокси-сервера с лихвой компенсируется преимуществами, которые мы получаем; на самом деле, есть важные особенности поведения приложений на основе микроинтерфейса, которых мы просто не можем добиться без него. Существует множество коммерческих и бесплатных альтернатив настройке такого обратного прокси.
Обратный прокси-сервер, помимо маршрутизации запросов микроприложений на соответствующий сервер, также направляет запросы макроприложений на сервер макроприложений. Этот сервер особым образом подготавливает HTML-код для составленного приложения. При получении заявки на index.html
из браузера через прокси-сервер по URL-адресу, такому как http://macroapp.example.com
, он извлекает index.html
и затем подвергает его простому, но важному преобразованию перед вернуть его.
В частности, HTML анализируется на тегов
, что можно легко сделать с помощью одного из компетентных парсеров HTML, доступных в экосистеме Node.js. Использование атрибута src
для
выполняется связь с сервером, на котором запущено микроприложение, и извлекается его index.html
, включая отображаемый на стороне сервера контент, если таковой имеется. Результат вставляется в HTML-ответ в виде тега
или,чтобы браузер не выполнял его.
Преимущества этой настройки заключаются,прежде всего,в том,что при самом первом запросеindex.html
для составленной страницы сервер может получить отдельные страницы с отдельных серверов микроприложений целиком,включая SSR-отображаемый контент,если таковой имеется,и доставить в браузер единую полную страницу,включая контент,который можно использовать для заполненияiframe
без дополнительных обращений к серверу(с использованием недостаточно используемого атрибутаsrcdoc
).Прокси-сервер также гарантирует,что любые сведения о том,откуда обслуживаются микроприложения,скрыты от посторонних глаз.Наконец,это упрощает проблемы с CORS,поскольку все запросы приложений отправляются к одному и тому же источнику.
Вернувшись к клиенту,создается экземпляр тега
,который находит содержимое в том месте,где он был помещен в ответном документе сервером,и в соответствующее время отображает0217 iframe
и присваивает содержимое своему атрибутуsrcdoc
.Если мы не используемiframe
s(см.ниже),то содержимое,соответствующее этому тегу
,вставляется либо в теневую модель DOM пользовательского элемента,если мы ее используем,либо непосредственно в документ..
На данный момент у нас уже есть частично функционирующее приложение на основе микроинтерфейса.
Это только верхушка айсберга с точки зрения интересной функциональности сервера Yumcha.Например,мы хотели бы добавить функции для управления тем,как обрабатываются ответы об ошибках HTTP от серверов микроприложений,или как поступать с микроприложениями,которые отвечают очень медленно — мы не хотим ждать целую вечность,чтобы обслужить страницу,если одно микроприложение не работает.отвечает!Эти и другие темы мы оставим для другого поста.
Логика преобразования Yumcha macroappindex.html
может быть легко реализована в виде бессерверной лямбда-функции или в качестве промежуточного программного обеспечения для серверных платформ,таких как Express или Koa.
Управление микроприложениями на основе заглушек
Возвращаясь к стороне клиента,есть еще один аспект реализации микроприложений,который важен для эффективности,ленивой загрузки и рендеринга без зависаний.Мымогли бысгенерировать тегiframe
для каждого микроприложения либо сsrc
,который делает другой сетевой запрос,или с атрибутомsrcdoc
,заполненным содержимым,заполненным для нас сервером.Но в обоих этих случаях код в этомiframe
запустится немедленно,включая загрузку всех его скриптов и тегов ссылок,начальную загрузку и любые начальные вызовы API и связанную обработку данных,даже если пользователь даже не получит доступ к рассматриваемому микроприложению..
Наше решение этой проблемы состоит в том,чтобы сначала представить микроприложения на странице в виде крошечных инактивированных заглушек,которые затем можно будет активировать.Активация может быть вызвана попаданием в поле зрения области микроприложения с использованием недоиспользуемыхIntersectionObserver
API или,чаще,предварительными уведомлениями,отправленными извне.Конечно,мы также можем указать,что микроприложение будет активировано немедленно.
В любом случае,когда и только когда микроприложение активировано,iframe
фактически визуализируется,а его код загружается и выполняется.С точки зрения нашей реализации с использованием LitElement и при условии,что статус активации представлен переменной экземпляраактивированного
,у нас будет что-то вроде:
рендеринг(){если(!this.activated)return html`{this.placeholder}`;иначе вернуть html` `;}
Связь между микроприложениями
Хотя микроприложения,составляющие макроприложение,по определению являются слабо связанными,они все же должны иметь возможность взаимодействовать друг с другом.Например,навигационное микроприложение должно отправить уведомление о том,что какое-то другое микроприложение,только что выбранное пользователем,должно быть активировано,и приложение,которое должно быть активировано,должно получать такие уведомления.
В соответствии с нашим минималистским мышлением,мы хотим избежать введения большого количества механизмов передачи сообщений.Вместо этого,в духе веб-компонентов,мы будем использовать события DOM.Мы предоставляем тривиальный широковещательный API,который заранее уведомляет все заглушки о надвигающемся событии,ждет,пока все запрошенные активируются для активации этого типа события,а затем отправляет событие в документ,который может прослушивать любое микроприложение.это.Учитывая,что все нашиiframe
имеют одинаковое происхождение,мы можем связаться сiframe
на страницу и наоборот,чтобы найти элементы,для которых будут запускаться события.
Маршрутизация
В наши дни мы все привыкли ожидать,что строка URL-адреса в SPA представляет состояние просмотра приложения,поэтому мы можем вырезать,вставлять,отправлять по почте,текст и ссылаться на нее,чтобы перейти непосредственно на страницу.внутри приложения.Однако в приложении с микроинтерфейсом состояние приложения на самом деле представляет собой комбинацию состояний,по одному для каждого микроприложения.Как мы должны представлять и контролировать это?
Решение состоит в том,чтобы закодировать состояние каждого микроприложения в один составной URL-адрес и использовать небольшой маршрутизатор макроприложений,который знает,как объединить этот составной URL-адрес и разобрать его на части.К сожалению,для этого в каждом микроприложении требуется специфичная для Yumcha логика:получать сообщения от маршрутизатора макроприложения и обновлять состояние микроприложения и,наоборот,сообщать маршрутизатору макроприложения об изменениях в этом состоянии,чтобы можно было обновить составной URL-адрес.Например,можно представитьYumchaLocationStrategy
для Angular или элемент
для React.
Вариант iframe
безКак упоминалось выше,размещение микроприложений вiframe
имеет некоторые недостатки.Есть два варианта:включить их непосредственно в HTML-код страницы или поместить в теневой DOM.Обе альтернативы несколько отражают плюсы и минусыiframe
,но иногда по-разному.
Например,отдельные политики CSP для микроприложений должны быть каким-то образом объединены.Вспомогательные технологии,такие как программы для чтения с экрана,должны работать лучше,чем сiframe
s,при условии,что они поддерживают теневой DOM(что пока делают не все).Должно быть несложно организовать регистрацию сервис-воркеров микроприложения,используя концепцию «области действия» сервис-воркеров,хотя приложение должно гарантировать,что его сервис-воркер зарегистрирован под именем приложения,а не"/"
.Ни одна из проблем макета,связанных сiframe
,не относится к встроенным или теневым методам DOM.
Однако приложения,созданные с использованием таких фреймворков,как Angular и React,скорее всего,будут недовольны встроенными или теневыми DOM.Для них мы,вероятно,захотим использоватьiframe
с.
Встроенные и теневые методы DOM различаются,когда речь идет о CSS.CSS будет полностью инкапсулирован в теневой DOM.Если бы по какой-то причине мы захотели поделиться внешним CSS с теневым DOM,нам пришлось бы использовать конструируемые таблицы стилей или что-то подобное.Со встроенными микроприложениями весь CSS будет общим для всей страницы.
В конце концов,реализовать логику встроенных и теневых микроприложений DOM в
несложно.Мы извлекаем содержимое для данного микроприложения из того места,где оно было вставлено на страницу логикой сервера в виде HTML 9.0217
,клонируйте его,затем добавьте к тому,что LitElement называетrenderRoot
,который обычно является теневым DOM элемента,но также может быть установлен для самого элемента(this
)для встроенного(не теневого ДОМ)дело.Но подождите!Контент,обслуживаемый сервером микроприложений,представляет собой целую HTML-страницу.Мы не можем вставить HTML-страницу для микроприложения с тегамиhtml
,head
иbody
в середину страницы для макроприложения,не так ли?
Мы решаем эту проблему,используя особенность тегашаблона,в который заворачивается содержимое микроприложений,полученное с сервера микроприложений.Оказывается,когда современные браузеры встречают тег
template
,хотя они и не «выполняют» его,онианализируютего и при этом удаляют недействительный контент,такой как,
и
,сохраняя при этом их внутреннее содержимое.Итак,
Теги
ив
,а также содержимое
сохраняются.Это именно то,что нам нужно для вставки содержимого микроприложений на нашу страницу.
Архитектура микро-фронтенда:дьявол кроется в деталях
Микро-фронтенды укоренятся в экосистеме веб-приложений,если(а)они окажутся лучшим архитектурным подходом,и(б)мы сможем выяснить,как их реализовать способами,которые удовлетворяют бесчисленным практическим требованиям современной сети.
Что касается первого вопроса,никто не утверждает,что микрофронтенды — это правильная архитектура для всех случаев использования.В частности,было бы мало причин для разработки одной командой с нуля использовать микроинтерфейсы.Я оставлю другим комментаторам вопрос о том,какие типы приложений и в каких контекстах могут извлечь наибольшую выгоду из шаблона микроинтерфейса.
Что касается реализации и осуществимости,мы увидели,что есть множество деталей,о которых нужно позаботиться,включая некоторые,даже не упомянутые в этой статье,в частности,аутентификация и безопасность,дублирование кода и SEO.Тем не менее,я надеюсь,что в этой статье изложен базовый подход к реализации микроинтерфейсов,который при дальнейшей доработке сможет соответствовать требованиям реального мира.
Библиография
- Micro Front Ends — Doing It Angular Style — Часть 1
- Micro Front Ends —«Doing It Angular Style»— Часть 2
- Развитие приложения AngularJS с использованием микроинтерфейсов
- Микроинтерфейсы
- Микросервисы пользовательского интерфейса — отмена анти-шаблона(микроинтерфейсы)
- Микросервисы пользовательского интерфейса — антишаблон?
- Создание страниц с использованием Micro-Frontends использует подход,похожий на Yumcha,с обратным прокси-сервером и SSI,который я настоятельно рекомендую.
- Ресурсы микроинтерфейсов
- Подиум
- Я не понимаю микро-фронтенды.Это довольно хороший обзор типов микроинтерфейсных архитектур и вариантов их использования.
- Бессерверные микроинтерфейсы с использованием Vue.js,AWS Lambda и Hypernova
- Micro Frontends:отличный исчерпывающий обзор.
Понимание основ
Что такое микроинтерфейсы?
Микроинтерфейсы — это новый шаблон,в котором пользовательские интерфейсы веб-приложений(интерфейсы)состоят из полунезависимых фрагментов,которые могут создаваться разными командами с использованием разных технологий.Микроинтерфейсные архитектуры напоминают серверные архитектуры,в которых серверные части состоят из полунезависимых микросервисов.
Что такое архитектура микроинтерфейса?
Архитектура микроинтерфейса излагает подход к структурным элементам каркаса микроинтерфейса.Он также определяет отношения между ними,управляя тем,как фрагменты пользовательского интерфейса собираются и обмениваются данными для достижения оптимального взаимодействия с разработчиком и пользователем.
Могут ли микросервисы иметь пользовательские интерфейсы?
Да,в некотором смысле могут.Шаблоны микро-интерфейса часто используют подход,при котором один фрагмент микро-интерфейса,возможно,реализованный как веб-компонент микро-интерфейса,связан с микросервисом,чтобы обеспечить его пользовательский интерфейс.
Что определяет микросервис?
Микрослужба — это элемент архитектуры,в которой приложения структурированы как набор взаимодействующих служб.