Создание и настройки Турбо-сайта в Яндекс Директ
Создание Турбо-сайта в Яндекс Директ: полный гайд
В этой статье мы подробно расскажем, как сделать Турбо-сайт в Яндекс Директе. Вы поймете, зачем нужен такой формат лендинга, разберетесь в его возможностях и ограничениях. Сможете сами пошагово провести настройку своего интернет-магазина в конструкторе и опубликовать его в сети.
Поделиться
В этой статье мы подробно расскажем, как сделать Турбо-сайт в Яндекс Директе. Вы поймете, зачем нужен такой формат лендинга, разберетесь в его возможностях и ограничениях. Сможете сами пошагово провести настройку своего интернет-магазина в конструкторе и опубликовать его в сети.
Зачем вам нужен Турбо-сайт?
Вы получаете бесплатную площадку в интернете. На ней можно быстро разместить карточки товаров, корзину, форму обратной связи, а также настроить рекламу. При этом навыки программирования и дизайна не нужны — настройка Турбо-сайта происходит в интерфейсе Яндекс Директа.
Пример турбо-сайта
Отличие от Турбо-страниц
Механика создания Турбо-сайта в Яндекс Директе ничем не отличается от Турбо-страниц. Единственная разница: Турбо-страница — это лендинг, а сайт состоит из множества таких страниц.
Возможности Турбо-сайтов
Простые в создании
Сделать Турбо-сайт — как собрать конструктор: в интерфейсе Директа есть набор шаблонов и экранов для лендингов. Их можно видоизменять, переставлять, наполнять и редактировать. При этом блоки сайта уже адаптированы под мобильные устройства.
Загружаются быстро
Турбо-сайты от Яндекс Директа максимально облегчены — на них нет замысловатой графики и эффектов, сложных скриптов. За счет этого скорость загрузки страниц очень высокая. Покупатели с медленным интернетом успевают дождаться загрузки магазина — и число транзакций увеличивается.
Автоматически снабжены счетчиком
Вам не потребуется создавать счетчик Яндекс Метрики — он появится на новом сайте автоматически. И на нем уже будет настроено отслеживание нажатий на кнопки и заполнение форм.
Имеют незначительные ограничения
Турбо-сайт подойдет вам, если вы хотите быстро запустить рекламу на отдельный продукт или услугу. Или если у вашего интернет-магазина небольшой ассортимент.
Но у вас не получится загрузить свой дизайн и добавить разделы, которые не входят в набор шаблонов директа. А еще вы не сможете добавлять новые товары и обновлять наличие через фид.
С чего начать создание Турбо-сайта?
- Зайдите в Яндекс Директ, нажмите на вкладку «Инструменты» → «Конструктор Турбо-страниц».
Кнопка «Конструктор Турбо-страниц» - Введите название первой страницы, добавьте информацию из Справочника, если ваша представлена там, и выберите шаблон. Нажмите на кнопку «Создать».
Окно «Создать Турбо-сайт» - Вы попадете на экран настройки сайта, где сможете менять название, содержание и дизайн блоков — выбрать можно из стандартных вариантов.
Базовые настройки Турбо-сайта
Кнопка «Добавить секцию»
Все блоки Турбо-сайта в Директе настраиваются через кнопку «Добавить секцию». В меню они расположены в стандартном порядке, но вы можете выбрать любой:
|
|
Кнопка «Добавить секцию»
Меню выбора секций
Поле настройки секций
Слева находится меню, в котором можно видоизменять секции — выбирать шрифты, цвет текстов и блоков, добавлять изображения и ссылки. Секции, которые не заполнены или заполнены неверно, Директ отмечает красным цветом.
Меню редактирования секций
Степень готовности Турбо-сайта для публикации отражена в маленькой круговой диаграмме в верхнем правом углу. Этот удобный маркер будет появляться для каждой страницы и оповещать, стоит ли добавить на нее что-то еще.
Диаграмма готовности страницы
Предпросмотр
Во время и после проведения всех настроек вы можете оценить, как сайт будет смотреться на экранах разных устройств — компьютерах, планшетах и смартфонах. И при необходимости внести коррективы в расположение и содержание секций.
Кнопки предпросмотра страниц
Публикация Турбо-сайта
Когда вы заполните конструктор Турбо-сайтов в Директе до конца, кнопка «Опубликовать» в правом верхнем углу станет активной. После того, как вы на нее нажмете, сайт появится в выдаче Яндекса и будет готов к продвижению и сбору заявок от ваших клиентов.
Кнопка «Опубликовать» завершает создание Турбо-сайта в Яндекс.Директ
Оглавление
Что ещё почитать
Как экономить до 20 часов в неделю на управлении рекламой: опыт диджитал-агентств
Читайте мини-исследование К50 и пользуйтесь находками коллег
С 1 августа прекращаем поддержку Google Ads
Статистику можно сохранить до 15 августа
15 универсальных правил для управления рекламой в Яндекс Директе и MyTarget
Упростите оптимизацию рекламы и экономьте время на анализ результатов. В статье собрали подборку правил, которые будут полезны в любом проекте
Блог REES46 Как создать турбо-страницу через Яндекс.
ДиректСодержание
Реклама сайта в интернете ставит цель не только привлечь посетителя, но и удержать его на странице. Но современные ресурсы с яркими мультимедийными элементами иногда грузятся долго даже при хорошей скорости интернета. А клиенты с 3G на телефоне и вовсе через несколько секунд могут передумать ждать, пока загрузится «тормозной» сайт. Как решить такую проблему? Рассказывает команда ROMI center.
Решение этой проблемы — специальные турбо-страницы. Они создаются в сервисе рекламных объявлений Яндекс.Директ.
Турбо-сайт легче по объему в сравнении с обычным сайтом-визиткой, например. Поэтому такие лендинги мгновенно открываются на всех устройствах. Благодаря возможностям турбо-сайтов, вы сможете удерживать потенциальных клиентов на странице и быстрее призывать их к целевому действию. Фокус внимания пользователей будет направлен именно на то, чтобы логически завершить их визит — покупкой или передачей вам контактных данных. Благодаря отсутствию отвлекающих факторов и минимальному количеству информации, пользователь волей-неволей подойдет к тому, чтобы кликнуть на кнопку «Купить» или «Подписаться».
В этой статье мы расскажем о работе турбо-страницы, ее особенностях и пошагово объясним этапы ее создания.
Для чего нужны турбо-страницы
Турбо-страницы внешне мало чем отличаются от привычных сайтов. Поэтому у пользователей не возникает сомнений в том, что такой лендинг — официальный источник компании. Вот пример турбо-страницы и соответствующего ей сайта.
Изначально Яндекс придумал такой тип страниц специально для мобильных гаджетов. Но уже в течение двух лет турбо-сайты делают и для просмотра на десктопах.
Как работает такая страница?
- пользователь видит объявление либо баннер и кликает по нему;
- объявление ведет на турбо-страницу в рекламной системе Яндекс.Директ;
- на такой странице посетитель может в обычном режиме читать текст о вашем предложении, смотреть иллюстрации, заполнять формы с контактными данными и т.д.
Главное отличие от обычных лендингов и сайтов — на турбо-странице все процессы происходят намного быстрее. Это идеальный дополнительный вариант для медленно работающих сайтов.
Также вам однозначно пригодятся турбо-страницы, если целевая аудитория часто ищет информацию с мобильных устройств, находясь вне зоны Wi-Fi и 4G. Например, вы продаете походные палатки, а на сайте размещаете советы по их установке. Или у вас на странице есть подборка настольных игр для долгих морских путешествий. Далеко за городом или в лесу как раз часто нет высокоскоростного интернет-соединения.
Возможности и ограничения турбо-страниц
Преимущества:
- мгновенная загрузка гарантирует, что посетители не уйдут через пару секунд, значит количество отказов начнет снижаться;
- турбо-страницы адаптируются автоматически в соответствии с размером экрана устройства — будь то старенькая Nokia, последняя модель iPhone или планшет;
- поисковые системы тоже индексируют такие страницы, то есть вы однозначно получите бесплатный трафик по выбранным ключевикам;
- создание страницы бесплатно, и сделать их можно сколько угодно; вы продолжаете платить только за саму рекламную кампанию в Яндекс. Директ;
- турбо-сайт — отличный вариант, если у вас нет своего сайта или он не отображается корректно на мобильных гаджетах;
- удобно создавать временные страницы с промо-акциями и сравнивать трафик и конверсию, когда нет времени делать несколько полноценных лендингов.
- современные турбо-страницы поддерживают создание галерей, таблицы, встроенный контент из соцсетей, gif-анимации, видеоплееры, формы обратной связи, бесконечную ленту постов и многое другое.
В то же время у турбо-страниц есть и некоторые рамки:
- нельзя задействовать фиды для загрузки ваших товаров;
- нельзя разработать полностью свой дизайн сайта и его функции.
Как создать турбо-страницу
Разберем, как сделать турбо-страницу в Яндекс.Директ. Начнем с этапа создания рекламной кампании.
Подготовка рекламной кампании
Откройте главную страницу сервиса Яндекс.Директ. Добавьте рекламную кампанию или зайдите в настройки уже имеющейся.
Оставьте пустой строку «Ссылка на рекламируемую страницу», так как она будет заполнена позже. Выберите места, где будет показываться ваше объявление.
Настройте геолокацию и категории показа.
Заполните список ключевых запросов, по которым пользователи смогут найти вашу рекламу. Назначьте ставки к ключевикам — большая оплата за более популярные и востребованные; позже вы сможете перенастроить ставки, когда оцените эффективность запросов.
Сохраните введенные настройки. Теперь вам нужно создать само объявление в разделе «Редактирование» для вашей рекламы.
Укажите для объявления название, текст, картинки и другую информацию.
Теперь вы увидите блок, где нужно разместить ссылку объявления. Нажмите «Турбо-сайт» над строкой. Теперь ваша кампания получила связь с турбо-страницей.
Создание новой турбо-страницы
В Яндекс.Директ в блоке «Мои турбо-сайты» вы теперь видите список готовых страниц. В специальной «Библиотеке турбо-страниц» выберите шаблон. В будущем вы сможете быстро переходить к нему через «Инструменты» Яндекс.Директа.
Если вы до этого не создали этот тип страниц, то в пустом разделе зайдите в меню «Создать турбо-сайт». Там вводится название, организация и подбирается шаблон. В том числе можно взять пустой без готовых визуальных блоков.
Выберите «Создать».
Теперь вы видите упрощенную версию будущего турбо-ресурса. Настроим его основные параметры.
Настройка параметров турбо-сайта
Перейдите в настройки через значок шестеренки в верхней правой части страницы.
Сайт. В разделе «Настройки сайта» можно ввести адрес веб-ресурса, выбрать основную страницу, загрузить фавиконку (значок, который отображается рядом с названием страницы) и настроить счетчик Яндекс.Метрики. Рекомендуем использовать счетчик своего сайта, а не использовать автоматически сгенерированный. Тогда вы сможете привязывать к конкретным секциям сайта ваши личные цели в Метрике. Например, величину трафика или виды взаимодействия пользователей с контентом. Статистику вы увидите в отчетах аналитики Яндекса.
SEO. В разделе SEO можно ввести заголовок и описание страницы.
Метрика. Чтобы подключить отслеживание действий посетителей, настройте счетчик в Яндекс.Метрике. Также выберите внешний вид ссылок на необходимые социальные сети и соответствующие значки.
Ссылки для просмотра. В этом разделе вы увидите ссылки на готовую версию турбо-сайта, в том числе в режиме предварительного просмотра. Это удобно в том случае, если вы будете согласовывать эти опции с коллегами до окончательного сохранения настроек.
Организация. Пункт «Моя организация» позволяет привязать вам свои данные из Яндекс.Справочника. Для такого автоматического заполнения нужно отметить пункт «Подставить данные в секции». Тогда вам не придется вручную вводить информацию о компании.
Навигация. В разделе «Навигация» настраиваются разделы, меню, заголовки и т. д. Справа вы видите элементы сайта, включенные в него по умолчанию. Вы можете переставлять их, удалять лишние секции и вводить наполнение.
Нельзя убрать только элемент «Подвал», зато можно установить для нее тему, вставить логотип компании, информацию о ней и пункты меню.
Если секций недостаточно, вы всегда можете нажать «Добавить секцию» и выбрать необходимый шаблон.
Каждая добавленная секция присоединяется в правую часть раздела «Навигация». Есть возможность добавить любой необходимый тип контента.
Другие элементы турбо-страницы. Изучите все элементы в боковом меню «Навигация», чтобы открыть максимум возможностей при создании сайта. Уникальные сочетания разделов и их оформление помогут вам сделать страницу удобной и выделиться среди конкурентов.
При настройке элементов вы сможете увидеть слева изменения в режиме реального времени. Не забудьте настроить шапку страницы, загрузить логотип компании и ввести ваши контактные данные.
Другие блоки страницы тоже настраиваются в режиме реального времени.
В блоке «Форма» вы можете настроить окно заявки, которую сайт будет предлагать посетителям для заполнения. Можно выбрать обязательные и необязательные поля. Введите свой email, на который будут приходить заполненные формы от пользователей.
Чтобы окно работало, укажите юридическую информацию — ИНН и название вашей организации. Иначе сервис не даст вам права собирать контакты пользователей.
Сформулируйте приветливый текст благодарности для тех, кто заполнил заявку. Либо выберите, куда будет перенаправлен такой посетитель.
В разделе «Кнопки контактов» вы можете ввести любые данные, которые будут полезны потенциальным клиентам. Возможно, им будет удобнее изучить ваш товар в Инстаграме, а не звонить менеджеру. Если клиенту нужно прийти в ваш офис, загрузите карту и нарисуйте оптимальный маршрут.
Проверка и публикация готовой страницы
Перед сохранением проверьте, что настройки корректны. Система подскажет вам, если вы пропустили что-то обязательное.
Важно: Проверьте сохраняемую турбо-страницу в режиме предпросмотра. Система может что-то упустить. Например, «поехавшие» картинки.
В этом разделе вы увидите, как будет выглядеть ваш сайт на мобильных устройствах, планшетах и т. д. Ссылку на предварительный просмотр удобно копировать и согласовывать с коллегами итоговый внешний вид сайта.
Когда все проверено и готово, публикуйте вашу турбо-страницу. Сразу после модерации она будет доступна в интернете. При запуске рекламы в Директ с нее будет поступать трафик на новый турбо-сайт.
Вы узнали, как создать и настроить турбо-страницу в Яндекс.Директ. Запускайте этот удобный формат сайта вместе с рекламной кампанией и ждите посетителей с любых устройств!
Turbo Справочник
Turbo объединяет несколько методов для создания быстрых, современных, прогрессивно улучшаемых веб-приложений без большого использования JavaScript. Он предлагает более простую альтернативу преобладающим платформам на стороне клиента, которые помещают всю логику во внешний интерфейс и ограничивают серверную часть вашего приложения не более чем JSON API.
С помощью Turbo вы позволяете серверу доставлять HTML напрямую, что означает, что вся логика проверки разрешений, прямого взаимодействия с вашей моделью домена и всего остального, что входит в программирование приложения, может происходить более или менее исключительно на вашем любимом языке программирования. Вы больше не зеркалируете логику по обе стороны разделения JSON. Вся логика находится на сервере, а браузер работает только с конечным HTML.
Вы можете узнать больше о преимуществах этого подхода HTML-over-the-wire на сайте Hotwire. Ниже приведены методы, которые Turbo предлагает, чтобы сделать это возможным.
﹟ Turbo Drive: Навигация в постоянном процессе
Ключевым преимуществом традиционных одностраничных приложений по сравнению со старым подходом с отдельными страницами является скорость навигации. SPA получают большую часть этой скорости за счет того, что не прерывают процесс приложения постоянно, а только повторно инициализируют его на следующей странице.
Turbo Drive обеспечивает ту же скорость за счет использования той же модели постоянного процесса, но без необходимости создания всего приложения вокруг этой парадигмы. Нет маршрутизатора на стороне клиента, который нужно поддерживать, нет состояния, которым нужно тщательно управлять. Постоянный процесс управляется Turbo, и вы пишете свой серверный код так, как будто живете в начале нулевых — в блаженной изоляции от сложностей сегодняшних монстров SPA!
Это происходит путем перехвата всех нажатий на
ссылок на один и тот же домен. Когда вы щелкаете подходящую ссылку, Turbo Drive запрещает браузеру переходить по ней, изменяет URL-адрес браузера с помощью History API, запрашивает новую страницу с помощью fetch
, а затем отображает HTML-ответ.
То же самое с формами. Их представления превращаются в запросов на выборку
, из которых Turbo Drive будет следовать перенаправлению и отображать ответ HTML.
Во время рендеринга Turbo Drive заменяет текущие
элемент напрямую и объединяет содержимое элемента
. Объекты окна и документа JavaScript, а также элемент
сохраняются от одного рендеринга к другому.
Несмотря на то, что с Turbo Drive можно взаимодействовать напрямую, чтобы контролировать, как происходят посещения, или подключаться к жизненному циклу запроса, в большинстве случаев это простая замена, где скорость предоставляется бесплатно, просто принимая несколько соглашений.
﹟ Turbo Frames: Разложить сложные страницы
Большинство веб-приложений представляют страницы, содержащие несколько независимых сегментов. Для страницы обсуждения у вас может быть панель навигации вверху, список сообщений в центре, форма внизу для добавления нового сообщения и боковая панель со связанными темами. Создание этой страницы обсуждения обычно означает генерацию каждого сегмента в сериализованном виде, объединение их всех вместе, а затем предоставление результата в виде одного HTML-ответа в браузере.
С помощью Turbo Frames вы можете размещать эти независимые сегменты внутри элементов фрейма, которые могут контролировать свою навигацию и лениво загружаться. Навигация с заданной областью означает, что все взаимодействия внутри фрейма, такие как переход по ссылкам или отправка форм, происходят внутри этого фрейма, что предотвращает изменение или перезагрузку остальной части страницы.
Чтобы поместить независимый сегмент в его собственный навигационный контекст, заключите его в тег
. Например:
<турборама>
Когда вы отправляете форму выше, Turbo извлекает соответствующий элемент
из перенаправленного HTML-ответа и заменяет его содержимое на существующий элемент кадра new_message
. Остальная часть страницы остается такой же, как и была.
Фреймы также могут откладывать загрузку своего содержимого в дополнение к навигации по области. Чтобы отложить загрузку кадра, добавьте src
атрибут, значением которого является автоматически загружаемый URL-адрес. Как и в случае с навигацией по области, Turbo находит и извлекает соответствующий кадр из полученного ответа и заменяет его содержимое на место:
Это сообщение будет заменено ответом от /messages.
Это может звучать как фреймы старой школы или даже
s, но Turbo Frames являются частью того же DOM, поэтому в них нет странностей или компромиссов, связанных с «настоящими» фреймами. Турбо-кадры создаются с помощью одного и того же CSS, являются частью одного и того же контекста JavaScript и не подпадают под какие-либо дополнительные ограничения безопасности контента.
Помимо превращения ваших сегментов в независимые контексты, Turbo Frames предоставляет вам:
- Эффективное кэширование. В приведенном выше примере страницы обсуждения срок действия боковой панели связанных тем должен истекать всякий раз, когда появляется новая связанная тема, а список сообщений в центре — нет. Когда все состоит только из одной страницы, срок действия всего кеша истекает, как только истечет срок действия любого из отдельных сегментов. При использовании фреймов каждый сегмент кэшируется независимо, поэтому вы получаете более долговечные кэши с меньшим количеством зависимых ключей.
- Параллельное исполнение. Каждый кадр с отложенной загрузкой генерируется собственным HTTP-запросом/ответом, что означает, что он может обрабатываться отдельным процессом. Это позволяет выполнять параллельное выполнение без необходимости вручную управлять процессом. Сложная составная страница, полная обработка которой занимает 400 мс, может быть разбита кадрами, в которых первоначальный запрос может занять всего 50 мс, а каждый из трех кадров с отложенной загрузкой занимает по 50 мс. Теперь вся страница выполняется за 100 мс, потому что три кадра, каждый из которых занимает 50 мс, выполняются одновременно, а не последовательно.
- Готово для мобильных устройств. В мобильных приложениях обычно не бывает больших и сложных составных страниц. Каждому сегменту нужен отдельный экран. С приложением, созданным с использованием Turbo Frames, вы уже выполнили эту работу по превращению составной страницы в сегменты. Затем эти сегменты могут отображаться на собственных листах и экранах без изменений (поскольку все они имеют независимые URL-адреса).
﹟ Турбо-потоки: Доставка изменений страницы в реальном времени
Внесение частичных изменений страницы в ответ на асинхронные действия — это то, как мы оживляем приложение. В то время как Turbo Frames дает нам такие обновления в ответ на прямое взаимодействие внутри одного кадра, Turbo Streams позволяет нам изменять любую часть страницы в ответ на обновления, отправленные через соединение WebSocket, SSE или другой транспорт. (Вспомните imbox, который автоматически обновляется, когда приходит новое электронное письмо.)
Turbo Streams представляет элемент
с семью основными действиями: добавить
, добавить
, заменить
, обновить
, удалить
, 5 после 1 ,
5 1 , 6 0 до 1 ,
0 16 и
6 . С помощью этих действий вместе с атрибутом
target
, указывающим идентификатор элемента, над которым вы хотите работать, вы можете закодировать все мутации, необходимые для обновления страницы. Вы даже можете объединить несколько элементов потока в одно потоковое сообщение. Просто включите HTML, который вы хотите вставить или заменить, в тег шаблона, а Turbo сделает все остальное:
Мое новое сообщение!
Этот элемент потока возьмет div
с новым сообщением и добавит его в контейнер с идентификатором messages
. Так же просто заменить существующий элемент:
Это меняет существующее сообщение!
шаблон>
турбо-поток>
Это концептуальное продолжение того, что в мире Rails сначала называлось RJS, а затем SJR, но реализовано без использования JavaScript. Преимущества остаются прежними:
- Повторное использование шаблонов на стороне сервера : Изменения активной страницы генерируются с использованием тех же шаблонов на стороне сервера, которые использовались для создания страницы первой загрузки.
- HTML по сети : Поскольку все, что мы отправляем, это HTML, вам не нужен какой-либо клиентский JavaScript (кроме Turbo, конечно) для обработки обновления. Да, полезная нагрузка HTML может быть немного больше, чем сопоставимый JSON, но с gzip разница обычно незначительна, и вы экономите все усилия на стороне клиента, необходимые для извлечения JSON и преобразования его в HTML.
- Упрощенный поток управления : Совершенно очевидно, что происходит, когда сообщения поступают в WebSocket, SSE или в ответ на отправку формы. Нет необходимости в маршрутизации, всплытии событий или других косвенных действиях. Нужно изменить только HTML, завернутый в один тег, который говорит нам, как это сделать.
Теперь, в отличие от RJS и SJR, невозможно вызвать пользовательские функции JavaScript как часть действия Turbo Streams. Но это фича, а не баг. Эти методы могут легко привести к запутанному беспорядку, когда вместе с ответом отправляется слишком много JavaScript. Turbo фокусируется исключительно на обновлении DOM, а затем предполагает, что вы подключите любое дополнительное поведение, используя действия Stimulus и обратные вызовы жизненного цикла.
﹟ Turbo Native: гибридные приложения для iOS и Android
Turbo Native идеально подходит для создания гибридных приложений для iOS и Android. Вы можете использовать существующий HTML-код, отображаемый на сервере, чтобы получить базовый охват функциональности вашего приложения в собственной оболочке. Затем вы можете потратить все сэкономленное время на то, чтобы сделать несколько экранов, которые действительно выигрывают от высокоточных встроенных элементов управления, еще лучше.
В таком приложении, как Basecamp, сотни экранов. Переписать каждый из этих экранов было бы огромной задачей с очень небольшой пользой. Лучше зарезервировать встроенную огневую мощь для взаимодействий с высоким уровнем касаний, которые действительно требуют высочайшей точности. Например, что-то вроде почтового ящика «Новинки для вас» в Basecamp, где мы используем элементы управления смахиванием, которые должны быть правильными. Но большинство страниц, таких как та, на которой отображается одно сообщение, не были бы лучше, если бы они были полностью нативными.
Гибридный переход не только ускоряет процесс разработки, но и дает вам больше свободы для обновления вашего приложения без прохождения медленных и обременительных процессов выпуска в магазине приложений. Все, что делается в HTML, можно изменить в вашем веб-приложении и мгновенно сделать доступным для всех пользователей. Не нужно ждать, пока Big Tech одобрит ваши изменения, не нужно ждать, пока пользователи обновятся.
Turbo Native предполагает, что вы используете рекомендуемые методы разработки, доступные для iOS и Android. Это не фреймворк, который абстрагирует собственные API или даже пытается сделать ваш собственный код доступным для разных платформ. Часть, которой можно поделиться, — это HTML, отображаемый на стороне сервера. Но собственные элементы управления написаны в рекомендуемых собственных API.
Дополнительную документацию см. в репозиториях Turbo Native: iOS и Turbo Native: Android. Посмотрите родные приложения для HEY на iOS и Android, чтобы понять, насколько хорошо вы можете сделать гибридное приложение на базе Turbo.
﹟ Интеграция с базовыми платформами
Для использования Turbo вам не нужна какая-либо внутренняя структура. Все функции созданы для непосредственного использования без дополнительных абстракций. Но если у вас есть возможность использовать бэкенд-фреймворк, интегрированный с Turbo, жизнь станет намного проще. Мы создали эталонную реализацию такой интеграции для Ruby on Rails.
Далее: Навигация с помощью Turbo Drive
Справочник по Turbo
Turbo работает быстро, потому что предотвращает перезагрузку всей страницы, когда вы переходите по ссылке или отправляете форму. Ваше приложение становится постоянным, длительным процессом в браузере. Это требует от вас переосмысления того, как вы структурируете свой JavaScript.
В частности, вы больше не можете полагаться на полную загрузку страницы для сброса среды при каждом переходе. Окно JavaScript
и 9Объекты 0015 документа сохраняют свое состояние при смене страницы, и любые другие объекты, оставленные в памяти, останутся в памяти.
С осознанием и некоторой осторожностью вы можете спроектировать свое приложение, чтобы изящно справиться с этим ограничением, не тесно привязывая его к Turbo.
﹟ Работа с элементами скрипта
Ваш браузер автоматически загружает и оценивает любые
элементы,присутствующие при начальной загрузке страницы.
При переходе на новую страницу Turbo Drive ищет любыеэлементов новой страницы
,которых нет на текущей странице.Затем он добавляет их к текущему
,где они загружаются и оцениваются браузером.Вы можете использовать это для загрузки дополнительных файлов JavaScript по запросу.
Turbo Drive оцениваетэлементов в
страницы каждый раз,когда он отображает страницу.Вы можете использовать встроенные сценарии тела для настройки состояния JavaScript для каждой страницы или начальной загрузки моделей на стороне клиента.Для установки поведения или выполнения более сложных операций при изменении страницы избегайте элементов скрипта и используйте
turbo:вместо этого загрузить событие
.
Аннотируйтеэлементов с
data-turbo-eval="false"
,если вы не хотите,чтобы Turbo оценивал их после рендеринга.Обратите внимание,что эта аннотация не помешает вашему браузеру оценивать скрипты при начальной загрузке страницы.
﹟ Загрузка пакета JavaScript вашего приложения
Всегда загружайте пакет JavaScript вашего приложения,используяэлементов
ввашего документа.В противном случае Turbo Drive будет перезагружать пакет при каждом изменении страницы.
...
Вам также следует рассмотреть возможность настройки вашей системы упаковки ресурсов для отпечатков пальцев каждого сценария, чтобы он имел новый URL-адрес при изменении его содержимого. Затем вы можете использовать атрибут data-turbo-track
для принудительной полной перезагрузки страницы при развертывании нового пакета JavaScript. Дополнительные сведения см. в разделе «Перезагрузка при изменении активов».
﹟ Понимание кэширования
Turbo Drive поддерживает кэш недавно посещенных страниц. Этот кэш служит двум целям: для отображения страниц без доступа к сети во время посещений для восстановления и для улучшения воспринимаемой производительности за счет показа временных предварительных просмотров во время посещений приложений.
При навигации по истории (через Restoration Visits) Turbo Drive будет восстанавливать страницу из кэша без загрузки свежей копии из сети, если это возможно.
В противном случае при стандартной навигации (через Application Visits) Turbo Drive сразу же восстановит страницу из кеша и отобразит ее в виде предварительного просмотра, одновременно загружая свежую копию из сети. Это создает иллюзию мгновенной загрузки страниц для часто посещаемых мест.
Turbo Drive сохраняет копию текущей страницы в своем кеше непосредственно перед рендерингом новой страницы. Обратите внимание, что Turbo Drive копирует страницу, используя cloneNode(true)
, что означает, что все прикрепленные прослушиватели событий и связанные данные отбрасываются.
﹟ Подготовка страницы к кэшированию
Прислушивайтесь к событию turbo:before-cache
, если вам нужно подготовить документ до его кэширования Turbo Drive. Это событие можно использовать для сброса форм, свертывания развернутых элементов пользовательского интерфейса или удаления любых сторонних виджетов, чтобы страница была готова к повторному отображению.
document.addEventListener("turbo:before-cache", function() {
// ...
})
Некоторые элементы страницы по своей сути являются временными , например, быстрые сообщения или оповещения. Если они кэшируются вместе с документом, они будут повторно отображаться при его восстановлении, что редко бывает желательным. Вы можете аннотировать такие элементы с помощью data-turbo-temporary
, чтобы Turbo Drive автоматически удалял их со страницы до ее кэширования.
Ваша корзина обновлена!
...
﹟ Обнаружение, когда предварительный просмотр виден
Turbo Drive добавляет атрибут data-turbo-preview
к элементу
, когда он отображает предварительный просмотр из кэша. Вы можете проверить наличие этого атрибута, чтобы выборочно включить или отключить поведение, когда отображается предварительный просмотр.
if (document. documentElement.hasAttribute("data-turbo-preview")) {
// Turbo Drive отображает предварительный просмотр
}
﹟ Отказ от кэширования
Вы можете контролировать поведение кэширования для каждой страницы, включив элемент
в
вашей страницы и объявив директиву кэширования.
Используйте директиву no-preview
, чтобы указать, что кэшированная версия страницы не должна отображаться в качестве предварительного просмотра во время посещения приложения. Страницы, помеченные как недоступные для предварительного просмотра, будут использоваться только для восстановительных посещений.
Чтобы указать, что страница вообще не должна кэшироваться, используйте директиву no-cache
. Страницы, помеченные как не кэшированные, всегда будут загружаться по сети, в том числе во время посещений для восстановления.
...
Чтобы полностью отключить кэширование в приложении, убедитесь, что каждая страница содержит директиву no-cache.
﹟ Отказ от кэширования со стороны клиента
Значение элемента
также может контролироваться клиентским API, предоставляемым через Turbo.cache
.
// Установить для управления кешем текущей страницы значение `no-cache`
Turbo.cache.exemptPageFromCache()// Установить для управления кешем текущей страницы значение `no-preview`
Turbo.cache.exemptPageFromPreview()
Обе функции создадут элемент
в
, если элемент еще не присутствует.
Ранее установленное значение управления кэшем можно сбросить с помощью:
Turbo.cache.resetCacheControl()
﹟ Установка поведения JavaScript
Возможно, вы привыкли устанавливать поведение JavaScript в ответ на события window.onload
, DOMContentLoaded
или jQuery ready
. В режиме Turbo эти события будут срабатывать только в ответ на начальную загрузку страницы, а не после каких-либо последующих изменений страницы. Ниже мы сравниваем две стратегии подключения поведения JavaScript к модели DOM.
﹟ Наблюдение за навигационными событиями
Turbo Drive запускает серию событий во время навигации. Наиболее важным из них является событие turbo:load
, которое срабатывает один раз при начальной загрузке страницы и снова после каждого посещения Turbo Drive.
Вы можете наблюдать событие turbo:load
вместо DOMContentLoaded
для настройки поведения JavaScript после каждого изменения страницы:
document.addEventListener("turbo:load", function() {
// ...
})
Имейте в виду, что ваше приложение не всегда будет в первозданном состоянии при запуске этого события, и вам может потребоваться очистить поведение, установленное для предыдущей страницы.
Также обратите внимание, что навигация Turbo Drive может быть не единственным источником обновления страниц в вашем приложении, поэтому вы можете переместить свой код инициализации в отдельную функцию, которую вы можете вызывать из turbo:load
и из любого другого места, где вы можете изменить ДОМ.
По возможности избегайте использования turbo: загрузите событие
, чтобы добавить другие прослушиватели событий непосредственно к элементам в теле страницы. Вместо этого рассмотрите возможность использования делегирования событий для однократной регистрации прослушивателей событий в документе
или в окне
.
См. полный список событий для получения дополнительной информации.
﹟ Привязка поведения к стимулу
Новые элементы DOM могут появиться на странице в любое время посредством навигации по кадрам, потоковых сообщений или операций рендеринга на стороне клиента, и эти элементы часто необходимо инициализировать, как если бы они были получены при загрузке новой страницы.
Вы можете обрабатывать все эти обновления, включая обновления загрузки страниц Turbo Drive, в одном месте с помощью соглашений и обратных вызовов жизненного цикла, предоставляемых дочерней инфраструктурой Turbo, Stimulus.
Stimulus позволяет аннотировать ваш HTML с помощью атрибутов контроллера, действия и цели:
дел>Внедрите совместимый контроллер, и Stimulus подключит его автоматически:
// hello_controller. js
импорт {контроллера} из "@hotwired/stimulus"экспорт класса по умолчанию расширяет контроллер {
приветствие() {
console.log(`Привет, ${this.name}!`)
}получить имя() {
вернуть this.targets.find("имя").значение
}
}Stimulus подключает и отключает эти контроллеры и связанные с ними обработчики событий всякий раз, когда документ изменяется с помощью API MutationObserver. В результате он обрабатывает изменения страницы Turbo Drive, навигацию Turbo Frames и сообщения Turbo Streams так же, как и любой другой тип обновления DOM.
﹟ Создание идемпотентных преобразований
Часто вам нужно выполнять преобразования на стороне клиента в HTML, полученный с сервера. Например, вы можете использовать информацию браузера о текущем часовом поясе пользователя, чтобы сгруппировать набор элементов по дате.
Предположим, вы аннотировали набор элементов с атрибутами
data-timestamp
, указывающими время создания элементов в формате UTC. У вас есть функция JavaScript, которая запрашивает в документе все такие элементы, преобразует метки времени в местное время и вставляет заголовки даты перед каждым элементом, который появляется в новый день.Подумайте, что произойдет, если вы настроите эту функцию для работы на
turbo:load
. Когда вы переходите на страницу, ваша функция вставляет заголовки даты. Уйдите, и Turbo Drive сохранит копию преобразованной страницы в своем кеше. Теперь нажмите кнопку «Назад» — Turbo Drive восстановит страницу, снова запуститturbo:load
, и ваша функция вставит второй набор заголовков даты.Чтобы избежать этой проблемы, сделайте функцию преобразования идемпотентной . Идемпотентное преобразование безопасно применять несколько раз, не изменяя результат после первоначального применения.
Одним из способов сделать преобразование идемпотентным является отслеживание того, выполнялось ли оно уже, путем установки атрибута
data
для каждого обрабатываемого элемента. Когда Turbo Drive восстановит вашу страницу из кеша, эти атрибуты все еще будут присутствовать. Обнаружьте эти атрибуты в своей функции преобразования, чтобы определить, какие элементы уже были обработаны.Более надежный метод — просто обнаружить само преобразование. В приведенном выше примере с группировкой дат это означает проверку наличия разделителя даты перед вставкой нового. Этот подход изящно обрабатывает вновь вставленные элементы, которые не были обработаны исходным преобразованием.
﹟ Сохранение элементов при загрузке страницы
Turbo Drive позволяет помечать определенные элементы как постоянные . Постоянные элементы сохраняются при загрузке страницы, поэтому любые изменения, которые вы вносите в эти элементы, не нужно повторно применять после навигации.
Рассмотрим приложение Turbo Drive с корзиной для покупок. В верхней части каждой страницы есть значок с количеством товаров, которые в данный момент находятся в корзине. Этот счетчик динамически обновляется с помощью JavaScript по мере добавления и удаления элементов.