Лучшие конструкторы html писем в 2021 году
Email-рассылка способна на большее, чем просто сообщать новости. Дизайн письма создает настроение, формирует впечатление о компании, влияет на лояльность клиентов и конверсию.
Создать привлекательные и современные рассылки проще всего в конструкторе емейл писем. Рассказываем, что это такое, как выбрать конструктор писем и какие из сервисов рассмотреть в первую очередь.
Что такое конструктор email писем
Html-конструктор писем — это инструмент для создания шаблонов электронной почты, которые затем можно использовать в емейл-кампаниях. Практически все рассылки с красочными баннерами, которые ежедневно приходят на почту, созданы с помощью html-шаблонов. Если вы еще не создавали письма в конструкторе, вот несколько причин, чтобы попробовать:
- Экономия времени. Даже если кто-то из сотрудников отлично владеет html, оформление письма вручную займет слишком много времени. Конструктор email рассылок позволяет создавать шаблоны быстрее и без лишних усилий.
- Готовые дизайны. Используя конструктор email писем, не придется изощряться с оформлением, поскольку готовые шаблоны созданы профессиональными дизайнерами. Достаточно изменить дизайн под свои потребности.
- Совместимость с большинством email-клиентов гарантирует, что письмо будет выглядеть одинаково у каждого получателя, и все элементы дизайна отобразятся корректно.
- Простая совместная работа. Многие конструкторы писем онлайн дают возможность совместного редактирования, благодаря чему в создании дизайна может участвовать вся команда.
- Легкий доступ. Еще одно преимущество онлайн-конструктора писем — это то, что созданные дизайны хранятся в облаке. Не нужно ждать, пока коллеги отправят файлы — доступ к ним возможен в любое время с любого устройства.
Как выбрать конструктор html писем
Конструктор емейл писем — очень популярный сервис. Существует большой выбор программ с разным функционалом и на любой бюджет. Какие функции наиболее важны при выборе конструктора писем для рассылки?
Достаточная библиотека готовых шаблонов
Есть простые бесплатные онлайн-конструкторы html писем, которые содержат не большое количество дизайнов. Есть сервисы с тысячами шаблонов. Если вариантов слишком мало, вероятно, будет сложно найти подходящий дизайн. С другой стороны, оплачивая дорогой конструктор с огромным количеством шаблонов, компании часто используют всего несколько из них. Хорошее решение — подобрать сервис, где шаблонов достаточно много, но не слишком. К слову, CRM-система NetHunt позволяет хранить от 10 и более готовых шаблонов и бесплатно рассылать неограниченное количество писем через Gmail.
Встроенный редактор изображений
Конечно, можно обойтись и без этой функции, поскольку существует много сторонних редакторов изображений. Но практика показывает, что возможность редактировать изображения в конструкторе email-писем — это удобно и экономит время.
Быстрый предварительный просмотр
Прежде чем использовать шаблон в емейл-кампании, необходимо убедиться, что он корректно отобразится у получателей. Для этого в конструкторе html-писем нужна функция предварительного просмотра.
Совместимость с почтовыми клиентами
Перед тем, как выбрать конструктор писем для рассылки, убедитесь, что его шаблоны совместимы со всеми основными почтовыми клиентами.
Интеграция с сервисом рассылки
Интеграция конструктора email-шаблонов с вашим сервисом рассылки — важная функция для удобства работы и экономии времени.
Простой и понятный интерфейс
Чтобы программой можно было легко пользоваться, выбирайте конструктор email рассылок с понятным управлением. Также рекомендуем убедиться, что визуальный редактор не зависает, работает быстро и без ошибок.
Совместное редактирование
Эта функция становится все более актуальной, особенно при переходе многих компаний на удаленную работу. Совместное редактирование позволяет работать над шаблоном нескольким сотрудникам одновременно и видеть изменения в реальном времени.
5 лучших конструкторов HTML-шаблонов емейл писем в 2021 году
Прежде чем остановить выбор на одном из конструкторов писем, рассмотрите лидеров рынка. Они заслужили свою популярность благодаря тому, что смогли удовлетворить потребности множества компаний.
1. Stripo
Это русифицированный конструктор email-шаблонов, редактор которого напоминает WordPress. Письма создаются из стандартных модулей, управление простое и понятное. Stripo имеет прямую интеграцию с множеством сервисов емейл рассылок, а также базовый бесплатный тариф. Одна из фишек этого конструктора шаблонов — возможность геймифицировать изображения.
2. Mailchimp
Много лет Mailchimp остается одним из самых известных онлайн конструкторов html писем: 23% маркетологов по всему миру используют именно этот сервис. В Mailchimp сравнительно немного шаблонов, но простое управление. Кроме того, он позволяет загружать и редактировать сторонние шаблоны писем, которые можно скачать в интернете. Конструктор шаблонов email — это одна из функций Mailchimp, поскольку в первую очередь он является сервисом рассылки.
3. Canva
Если вы ищете бесплатный онлайн конструктор html писем, присмотритесь к Canva. Это многофункциональный сервис создания дизайнов для различных целей: баннеров, визиток, флаеров, презентаций и многого другого. Есть и конструктор email-шаблонов. Преимущества Canva — это большой выбор бесплатных шаблонов и элементов (понравившиеся платные можно приобретать отдельно), великолепное управление, встроенный редактор изображений, широкий функционал (включая анимацию), совместное редактирование, русскоязычный интерфейс и гибкие тарифы. Базовый тариф — бесплатный.
4. BEE Free
Создатели этого сервиса назвали его Best Email Editor и не преувеличили. Это бесплатный онлайн конструктор html писем с возможностью покупки pro-версии. Он содержит более 500 адаптивных шаблонов писем, редактор изображений, возможность управлять отображением элементов дизайна в зависимости от размера экрана получателя. Поддерживает интеграцию с MailChimp и Gmail. Из недостатков: отсутствие русскоязычного интерфейса и возможности хранить созданные шаблоны в облаке.
5. Chamaileon
Этот конструктор email рассылок включает большое количество шаблонов писем на любой вкус и совместим со всеми возможными почтовыми клиентами. Пользователь может создавать собственные блоки или использовать предустановленные, управлять отображением элементов в зависимости от размера экрана и предварительно просматривать результат. Среди других функций — встроенный редактор изображений, совместное редактирование, интеграция через Zapier.
При выборе конструктора шаблонов писем не забудьте о тестировании и убедитесь, что сервис отвечает вашим требованиям. Большинство конструкторов email писем предлагают бесплатный пробный период. А некоторые позволяют создавать шаблоны сразу, даже без регистрации.
Get more NetHunt in your life
Receive popular, monthly sales and marketing insights
Thank you!
You have been subscribed.
Поделиться постом с друзьями и коллегами!
Конструкторы HTML писем
На сегодняшний день почта в интернете чаще используется для различного вида рассылок, нежели для простого общения. Из-за этого становится актуальной тема создания HTML-шаблонов, предоставляющих куда больше возможностей, чем стандартный интерфейс практически любого почтового сервиса. В этой статье мы рассмотрим несколько наиболее удобных веб-ресурсов и настольных приложений, предоставляющих возможность решения данной задачи.
Конструкторы HTML-писем
Подавляющее большинство существующих на сегодняшний день средств для конструирования HTML-писем являются платными, но у них есть пробный период. Это следует учитывать заранее, так как использование подобных сервисов и программ будет нецелесообразным для отправки нескольких писем — по большей части, они ориентированы на массовую работу.
Читайте также: Программы для рассылки писем
Mosaico
Единственный в рамках нашей статьи максимально доступный сервис, не требующий регистрации и предоставляющий удобный редактор писем. Весь принцип его работы раскрывается прямо на начальной странице сайта.
Процедура редактирования HTML-писем происходит в специальном редакторе и заключается в составлении дизайна из нескольких подготовленных блоков. При этом каждый элемент оформления можно изменить до неузнаваемости, что придаст вашим работам индивидуальности.
После создания шаблона письма получить его можно в виде файла формата HTML. Дальнейшее его использование будет зависеть от ваших целей.
Перейти к сервису Mosaico
Tilda
Онлайн-сервис Tilda является полноценным конструктором сайтов на платной основе, но предоставляется им и бесплатная пробная подписка на две недели. При этом непосредственно сам сайт создавать не нужно, достаточно зарегистрировать аккаунт и создать шаблон письма, используя стандартные заготовки.
Редактор писем содержит множество инструментов как для создания шаблона с нуля, так и для корректировки стандартных образцов.
Итоговый вариант разметки можно будет получить после публикации на специальной вкладке.
Перейти к сервису Tilda
CogaSystem
Как и предыдущий онлайн-сервис, CogaSystem позволяет одновременно создавать HTML-шаблоны писем и организовывать рассылку на электронную почту, указанную вами. Во встроенном редакторе есть все необходимое для создания красочных почтовых рассылок с использованием веб-разметки.
Перейти к сервису CogaSystem
GetResponse
Последним онлайн-сервисом в рамках настоящей статьи является GetResponse. Данный ресурс по большей части ориентирован на почтовые рассылки, а имеющийся в нем HTML-редактор является, скорее, дополнительным функционалом. Им можно воспользоваться как на бесплатной основе с целью проверки, так и путем приобретения подписки.
Перейти к сервису GetResponse
ePochta
Практически любая программа для почтовой рассылки на ПК обладает встроенным редактором HTML-писем по аналогии с рассмотренными онлайн-сервисами. Наиболее актуальным софтом является ePochta Mailer, содержащий большую часть функций почтовых сервисов и удобный редактор исходного кода.
Основное достоинство при этом сводится к возможности бесплатного использования HTML-конструктора, в то время как оплата необходима только для непосредственного создания рассылки.
Скачать ePochta Mailer
Outlook
Outlook наверняка знаком большинству пользователей ОС Windows, так как входит в стандартный пакет офисных приложений от Microsoft. Это почтовый клиент, в котором имеется свой редактор HTML-сообщений, которые после создания можно будет отправить потенциальным адресатам.
Программа является платной, без каких-либо ограничений все ее функции могут быть использованы только после приобретения и установки пакета Microsoft Office.
Скачать Microsoft Outlook
Заключение
Мы рассмотрели лишь некоторые из существующих сервисов и приложений, однако при углубленном поиске в сети можно найти множество альтернативных вариантов. При этом стоит помнить о возможности создания шаблонов напрямую из специальных текстовых редакторов при должном знании языков разметки. Такой подход является наиболее гибким и не требует финансовых вложений.
Мы рады, что смогли помочь Вам в решении проблемы.Опишите, что у вас не получилось. Наши специалисты постараются ответить максимально быстро.
Помогла ли вам эта статья?
ДА НЕТКак создать письмо в блочном редакторе
Блочный редактор — это визуальный конструктор, в котором письма можно собирать из разных элементов (картинки, текст, кнопки).
Создание рассылки в блочном редакторе проходит в пять этапов:
1. Выберите шаблон
Все письма в блочном редакторе можно создать с нуля или на основе шаблонов. Шаблоны бывают двух видов:
Базовые — это заготовки из элементов, которые расположены на странице в соответствии с типом рассылки: приветственное письмо, каталог товаров, оповещения, акции, новости и письмо подтверждения (последний доступен только в разделе Контент).
Тематические — это макеты с готовым дизайном. Вам нужно только подставить текст, контакты и логотип бренда.
Кроме того, любое письмо можно сохранить как шаблон — он будет храниться в разделе Контент. Чтобы сделать рассылку по своему шаблону, при создании письма откройте вкладку «Избранное» в левом столбике.
2. Добавьте секции
Письма состоят из секций, у которых можно задать следующие настройки:
стиль — цвет или картинка на фон (можно установить на всю ширину секции и отдельно для блока контента по центру),
персонализация — видимость секции для получателей: её можно показать не всем, а только определённому типу подписчиков,
колонки — в секции может быть максимум четыре колонки, у каждой регулируются размеры и отступы.
Как персонализировать рассылку
Чтобы открыть настройки, просто нажмите на секцию. При этом справа появятся три иконки, чтобы переместить, скопировать или удалить секцию:
3. Добавьте элементы
Всего в редакторе семь элементов:
текст,
картинки,
кнопки,
разделитель (визуально отбивает секции друг от друга),
кнопка «Поделиться» (для фейсбука, твиттера и ВКонтакте),
профили в соцсетях,
HTML-блок.
Чтобы добавить элемент, перетащите его в нужную секцию, а чтобы удалить — в корзину (она появится в левой части экрана, если нажать на элемент в письме и удерживать левую кнопку мыши).
У каждого элемента можно задать индивидуальные параметры — для этого нужно нажать на него, и в левой части экрана появится окно настроек.
Важно: ошибки в вёрстке в HTML-блоке могут поломать отображение всего остального.
4. Задайте настройки письма
В общих настройках можно установить цвет текста, ссылок и кнопок, а также фон письма. Обратите внимание: фон письма выравнивается не по центру, а по левому краю, так как не все почтовые клиенты умеют его центрировать. Установить его по центру можно только в настройках секции (во вкладке «Стили»).
5. Проверьте письмо в режиме предпросмотра
В режиме предпросмотра можно посмотреть, как письмо будет выглядеть на разных экранах (на компьютере, планшете и смартфоне), а также проверить, работают ли персонализация и функции PROScript (если они есть). Чтобы открыть предпросмотр, нажмите на иконку любого гаджета в верхней части редактора и выберите слева режим:
посмотреть письмо для подписчиков, у которых нет данных для персонализации,
посмотреть письмо с данными конкретного подписчика (нужно ввести его адрес),
посмотреть все настроенные варианты персонализации.
Помните, что все почтовые клиенты немного по-разному отображают письма. Если вы хотите точно знать, как подписчики увидят ваше рассылку, заведите ящики на основных доменах (Яндекс, Mail, Gmail, Outlook) и отправьте себе несколько тестовых копий. На бесплатных аккаунтах можно отправить только одну тестовую копию — на почту, на которую зарегистрирован аккаунт.
Как работать с почтовыми шаблонами
В Битрикс24 есть возможность создать свои почтовые шаблоны и использовать их при отправке писем из CRM.
Управление почтовыми шаблонами находится на странице CRM > Настройки > Работа с почтой > Почтовые шаблоны.
Как создать шаблон?
Для создания шаблона нажмите на кнопку Добавить почтовый шаблон:
Рассмотрим доступные поля для заполнения:
-
Доступен всем
-
Активен – для того, чтобы шаблон можно было использовать, отметьте это поле, иначе он не появится в списке выбора шаблонов при отправке писем.
-
Название – название шаблона в списке шаблонов.
-
Привязка – выберите сущность (Лид, Сделка, Контакт, Компания, Счет, Предложение или без привязки к сущности), для которой можно будет использовать шаблон.
Обратите внимание, шаблон будет доступен только для выбранной сущности.
-
От кого – адрес почты, который будет указан в качестве отправителя.
-
Тема – укажите тему письма.
В теме и в самом теле письма можно добавлять поля выбранной сущности, которые вы хотите вставить в шаблон, а также можно прикрепить файл:
Также в шаблонах можно использовать и html-форматирование. Для этого переключитесь в режим html-форматирования и отредактируйте шаблон под ваш стиль:
Переключившись обратно в визуальный редактор, вы сразу же увидите, как будет выглядеть ваш html-код:
Список разрешенных html-тегов и их атрибутов можно найти в отдельной статье.
В шаблонах вы можете использовать как предустановленные поля сущностей, так и Пользовательские поля сущностей. При отправке письма поля сущности и файл будут подставлены автоматически.
После всех настроек не забудьте нажать Сохранить.
Обратите внимание, при отправке письма сразу нескольким контактам в письме не будут автоматически проставлены данные каждого отдельного элемента, поэтому шаблоны следует использовать только при отправке письма одному клиенту.
Как написать письмо по созданному шаблону?
Откроется форма создания письма, в этой форме в поле Шаблон будут доступны созданные почтовые шаблоны:
Выбрав шаблон, в поле содержания письма автоматически вставятся заполненные поля данной сущности.
Далее можно дополнить письмо нужной информацией и отправить.
Как удалить почтовый шаблон?
Перейдите в список шаблонов и выберите в меню действий Удалить почтовый шаблон:
Дизайн и верстка email-рассылок с помощью Stripo
Тренды email-маркетинга меняются быстро, особенно дизайн и верстка. Для создания письма теперь не нужно задействовать всю команду – достаточно email-маркетолога. Затраты времени на создание действительно красивого и эффективного письма должны сводиться к минимуму.
Такую возможность предоставляет онлайн-редактор Stripo.
Библиотека готовых шаблонов и блоков
В самом редакторе есть библиотека готовых шаблонов, которые можно выбирать с учетом тематики. То есть не приходится каждый раз выдумывать структуру письма заново. Это освобождает время на решение более творческих задач.
Чтобы не создавать элементы письма каждый раз заново, их можно сохранить в библиотеке блоков. Теперь меню, футер, карточки товаров и многое многое другое никуда не пропадёт, а всегда будет под рукой. Что, опять же, освободит время для выполнения других задач.
Создание основных блоков
1. Блок меню
Добавлять меню и менять его впоследствии тоже просто. При работе с блоком в один клик мыши добавляются и редактируются новые пункты меню.
Выглядит этот процесс так:
2. Социальные сети
Добавляются по аналогии с блоком меню. Соцсети присутствуют в любом редакторе как стандартный блок, но мало где можно настроить его достаточно быстро.
В Stripo одним кликом выбирается размер, цвет, отображение иконок. При этом не нужно заходить в HTML-код.
Оценить скорость добавления и простоту редактирования блока можно ниже.
3. Добавление видео
В Stripo это вопрос нескольких кликов:
Инструменты для творчества
Stripo не только автоматизирует рутину, но и упрощает творческий процесс. Если раньше, чтобы отредактировать картинку, нужен был Photoshop или с десяток онлайн-приложений, то теперь все эти задачи решаются в одном редакторе.
1. Встроенный банк картинок и создание баннеров
Можно выбрать картинку непосредственно в редакторе через банк картинок. Для этого удобно использовать поиск по ключевому слову: девушка, парень, Новый год, Рождество и т. п.
После чего из этой картинки непосредственно в Stripo создается готовый баннер.
Редактор позволяет накладывать фильтры, менять размер отображаемой части картинки и многое другое. Вот как это работает:
Так выглядит готовый баннер:
2. Встроенный фоторедактор, или мини-фотошоп
Используя встроенный фоторедактор, можно сделать из прямоугольной карточки товара закругленную, добавить рамки и фильтр. Инструментов для редактирования картинок множество, сам фоторедактор выглядит так:
Адаптивность
Весь функционал редактора адаптивен. Можно отключать показ определенных блоков для мобильных телефонов, настраивать отображение шрифтов, заголовков, включать и выключать адаптивность картинок.
Письма в мобильных выглядят классно — это ценное преимущество.
Создание и редактирование карточек товара
И совершенно новый функционал. В Stripo можно настроить динамический контент, или smart-containers. Т.е. можно сгенерировать абсолютно любую карточку товара, всего лишь вставив ссылку на него в нужную строку.
В случаях, когда нужно добавлять десятки товаров в письмо, вручную на это уходит несколько часов. В Stripo аналогичная работа потребует меньше часа.
Чего ждать от Stripo в будущем?
- Скоро в редакторе появятся новые функции:
- настройка сложного динамического контента;
- автоматическая обработка больших массивов данных для преобразования их в письмо;
- тестирование отображения писем на Litmus;
- создание интерактивных таймеров непосредственно в Stripo.
«Конструктор писем» от Tilda Publishing помогает делать по-настоящему красивые рассылки
«Конструктор писем» — новая функция Tilda, редактор для создания рассылок. Его можно интегрировать с аккаунтом MailChimp, SendGrid, Unisender или получить HTML-код готового письма, который импортируется в любой другой сервис рассылок.
Почему это классно
Не нужно привлекать программиста или дизайнера, чтобы сделать рассылку. Можно вставить свой контент в готовый шаблон и получить красиво оформленное и оригинальное письмо. Не нужно ничего адаптировать: рассылка автоматически масштабируется под разные устройства. Отправить письмо можно прямо из Tilda или в любом другом сервисе, скопировав HTML-код.
Ира Смирнова
дизайнер Tilda Publishing.
Идея «Конструктора писем» родилась из наших нужд. Мы пытались верстать свои рассылки сначала в одном сервисе, потом в другом. Это было мучительно, долго и изматывало нервы нашим дизайнерам. Тогда мы подумали: а почему бы не сделать «Конструктор писем» на Tilda? Сначала сделали MVP — буквально несколько блоков только для наших задач. Когда поняли, что это безумно удобно, расширили библиотеку, функциональность, сделали шаблоны, настроили интеграцию и открыли для всех пользователей.
Для кого сделан «Конструктор писем»
«Конструктор писем» — универсальный инструмент, который помогает сфокусироваться на целях вашего проекта. Сервис подойдёт специалистам, которые имеют дело с рассылками. В понятном интерфейсе разберётся и предприниматель, и маркетолог, и дизайнер.
Например, владелец малого бизнеса может собрать письмо по шаблону и напрямую обратиться к своим покупателям. Дизайнер сможет больше внимания уделить восприятию контента пользователем, вместо того чтобы рисовать кнопки.
Как это работает
1. Заходите в аккаунт Tilda.
2. Создаёте проект рассылки и в нём — новое письмо.
3. Выбираете шаблон письма.
4. Вставляете и редактируете свой контент.
5. Отправляете тестовое письмо на проверку.
6. Подключаете сервис отправки писем (MailChimp, SendGrid или Unisender).
7. Задаёте дату отправки письма или сразу отправляете по своей базе.
8. Либо получаете код и импортируете в любой другой сервис.
Какие есть функции
По аналогии с конструктором сайтов письмо собирается из блоков по одному из шаблонов. Шаблон — просто образец хорошего дизайна, его можно менять как угодно.
Всего есть четыре вида блоков: можно добавить текст, изображения и гифки, вставить карточки товаров или статей, сделать шапку и футер рассылки. Есть опция загрузки фонового изображения.
Возможности для онлайн-торговли
В «Конструкторе писем» Tilda к карточкам можно добавлять кнопки действий и отправлять товары, статьи и списки с разным содержанием.
Электронная почта сегодня главный инструмент онлайн-торговли и ретаргетинга. Всё больше магазинов отказываются от текстов в рассылках в пользу интерактивных карточек товаров с возможностью быстрого перехода к покупке. В «Конструкторе писем» Tilda эту функцию можно активно использовать.
SEO
У каждого письма есть своя страница с адресом — можно подключить отдельный домен или субдомен вашего сайта. После отправки письма можно поделиться ссылкой на него в блоге или социальных сетях. Такие обновления положительно влияют на SEO.
Сделать свою рассылку
снижаем стоимость разработки регулярного письма — Блог EMAILMATRIX
У компании EMAILMATRIX большой опыт работы с некоммерческими организациями. Совместно с «Гринпис» мы реализовали предновогоднюю емейл-кампанию с благотворительной эстафетой и спецпроект по раздельному сбору мусора в Москве и МО. Но всё равно было волнительно приступать к проекту для Всемирного фонда природы (WWF). Это одна из крупнейших международных природоохранных организаций, главная цель которой — сохранение биологического разнообразия Земли. Коллеги из фонда обратились к нам с большим пулом задач — о решении самой интересной, а именно о внедрении конструктора писем для рассылки, я расскажу в этой статье.
Начало работ
Прежде чем внедрить конструктор писем для рассылки, мы провели аудит текущей коммуникации, выявили проблемы и поставили перед собой следующие задачи:
- Погрузить пользователей в инфраструктуру продукта, рассказать про разные уровни участия в благотворительности и про деятельность фонда;
- выстроить долгосрочные отношения с пользователями;
- повысить средний чек пожертвований;
- стимулировать к первому пожертвованию, добиться конверсии в регулярные переводы;
- реактивировать неактивных пользователей;
- оптимизировать процесс работы над письмами регулярной коммуникации.
Для их решения мы сформировали план работ:
- Переработать текущую приветственную цепочку для повышения лояльности пользователей;
- разработать тактику реактивации для повышения среднего чека пожертвований и вообще активности пользователей;
- подготовить конструктор писем для рассылки с кастомными блоками для создания регулярных емейл-коммуникаций. Об этом пуле работ мы и поговорим подробнее ниже.
Разработка конструктора писем для регулярных рассылок
Одной из основных задач была переработка писем регулярной коммуникации, т. к. при аудите рассылок этого типа мы выявили следующие недочёты:
- текст сплошной, не расставлены основные акценты;
- дизайн устаревший;
- вёрстка неадаптивная.
Письма выглядели так:
Емейлы до внедрения конструктора писем для рассылок
Мы решили использовать конструктор писем для рассылок, т. к. клиент планировал заниматься ими самостоятельно, без подключения агентства, и отдельных ресурсов на подготовку емейлов не планировалось. Необходимо было организовать понятный для менеджера процесс.
Конструктор писем для рассылок реализовали на базе существующих функций GetResponse, т. к. клиент уже работал в этой платформе.
Реализация конструктора писем для рассылок
1. Подготовительный этап
Что нужно предусмотреть перед разработкой конструктора писем для рассылок, чтобы избежать трудностей реализации на последующих этапах:
- Платформа должна поддерживать кастомные html-блоки и уметь сохранять свои заголовки.
- Важно протестировать, как работает адаптация стандартных блоков в платформе.
- Нужно проверить, что и как можно менять в блоках именно в вашей платформе, отталкиваясь от текущих потребностей наполнения писем.
- Дизайн должен разрабатываться сразу для конструктора, учитывая все ограничения.
2. Этап разработки подстановочных блоков конструктора писем для рассылок
На первом этапе работы над welcome-письмами мы уже разработали новый дизайн, так что собирать шаблон было намного проще, поскольку:
- основная концепция писем уже была готова — мы решили, что они должны быть яркими, с красивыми фотографиями природы и животных, ведь главная миссия фонда — сохранение биоразнообразия Земли. Такие образы помогают проникнуться идеей WWF;
- часть необходимых блоков уже присутствовала в этих письмах.
Пример емейла из приветственной цепочки WWF, который послужил основой для дизайна конструктора писем для рассылок
Важно
При разработке конструктора писем для рассылок важно учесть все блоки (например, заголовки, которые вы будете использовать в оформлении письма, баннеры для разных информационных разделов, текстовое наполнение), которые понадобятся при формировании последующих писем регулярной коммуникации. Тщательно анализируйте все письма, которые рассылались ранее.
В итоге у нас получилось письмо, которое на следующем этапе мы заверстали и разбили на отдельные редактируемые блоки.
Шаблон емейла со всеми блоками конструктора писем для рассылки
3. Вёрстка и настройка блоков в платформе
Сложности, с которыми мы столкнулись, начав верстать блоки и добавлять их в конструктор писем для рассылок:
- HTML-сниппеты
Getresponse их не поддерживает. Выбрали реализацию через стандартные блоки платформы. - Адаптация
Невозможно повлиять на адаптацию блоков в мобильной версии. - Редактирование
Чтобы блок был редактируемым, сделали добавление картинки в блок фоном, чтобы тексты можно было править в шаблоне.
Конечно же, со всеми проблемами мы справились и создали подстановочные блоки, которые можно редактировать.
Выглядело это таким образом:
Выглядит сложно, но не пугайтесь. Мы написали подробную инструкцию по работе с новым конструктором писем для рассылок.
Вот пример выдержки из инструкции:
Выводы
Несмотря на все сложности разработки, конструктор писем для рассылок — эффективный вариант для тех, кто ограничен во времени и ресурсах. За короткое время любой заинтересованный специалист, даже если он не владеет навыками вёрстки, может создать письмо.
Спойлер: в следующей статье я расскажу о тактике реактивации, следите за обновлениями блога.
документов ТОПОЛ | Встраиваемый редактор электронной почты для приложений SaaS
Введение
ПлагинTopol — это редактор электронной почты с возможностью перетаскивания, который вы можете встроить на свой сайт. Шаблоны электронной почты управляются на вашей стороне (самостоятельно). После сохранения редактора мы предоставляем вам HTML и JSON шаблона электронной почты. Редактор может загружать только шаблоны в формате JSON, созданные специально в нашем редакторе. Обратите внимание, что загрузить HTML в редактор невозможно.
Интеграция займет у вас всего несколько минут.
- Интегрируйте плагин Topol за 2 простых шага
- Сохраните и загрузите свои шаблоны
- Расширенная конфигурация плагина
- Пользовательское хранилище — AWS или GCS
- Пользовательский файловый менеджер
- Пользовательские конечные точки API
Интеграция плагинов
Шаг 1. Создайте токен API
В вашем аккаунте Topol перейдите в Настройки -> Плагин и создайте токен API.
В качестве имени токена можно указать любое имя (обычно имя вашего проекта).В качестве домена токена вы установили домен, на котором хотите запустить наш плагин, примеры:
topol.io
www.topol.io
* .topol.io
локальный: 563295
Ключ API всегда связан с заданными доменами и не будет работать в другом домене.
Шаг 2. Добавьте необходимый код
Как только вы получите ключ API, сначала вставьте этот HTML-код в свое приложение:
Здесь будет отображаться плагин.(Важно указать явную высоту и ширину для элемента, иначе высота и ширина div могут быть слишком малы для построителя TOPOL.io.)
apiKey — как получить токен API
userId — UserId — это идентификатор вашего пользователя (вы не найдете его в нашем приложении, просто используйте любой идентификатор, который хотите). UserID — это буквенно-цифровая строка (она может содержать буквы, цифры, _ или -), которая идентифицирует уникального пользователя вашего приложения и позволяет плагину загружать ресурсы для этого пользователя (например,г. картинки). Он будет считаться уникальным пользователем при ежемесячном выставлении счетов.
Затем вставьте это в свой файл с реализацией плагина:
<сценарий>
const TOPOL_OPTIONS = {
id: "#app",
авторизовать: {
apiKey: "ВАШ_API_KEY",
userId: "UserID",
},
обратные вызовы: {
onSave: function (json, html) {
}
}
};
TopolPlugin.init (TOPOL_OPTIONS);
fetch ('https://tlapi.github.io/topol-editor/templates/1.json')
.then (response => response.text ())
.then (template => {
TopolPlugin.load (шаблон)
}
);
Руководство по обновлению
Обновление редактора 2 до редактора 3 (расчетное время обновления составляет 5 минут)
Пожалуйста, обратите внимание, что нет никаких серьезных критических изменений в функциональности плагинов или структурах шаблонов и т. Д. Если у вас возникнут какие-либо проблемы с новой версией, вы можете вернуться к версии Editor 2.
Из:
Кому:
Коды языков теперь соответствуют стандарту ISO 639-1.
Измененные коды языков:
Старый код | Новый код |
---|---|
jp | ja |
se | sv |
fi | fin |
iw | 000 he |
Предварительные требования: | Базовая компьютерная грамотность, базовое понимание HTML и CSS, знакомство с основами JavaScript (см. Первые шаги и Строительные блоки) и основами OOJS (см. Введение в объекты). |
---|---|
Цель: | Понять основную теорию объектно-ориентированного программирования, как это связано с JavaScript («все является объектом») и как создавать конструкторы и экземпляры объектов. |
Для начала давайте дадим вам упрощенное общее представление о том, что такое объектно-ориентированное программирование (ООП).Мы говорим упрощенно, потому что ООП может быстро стать очень сложным, и полное рассмотрение этого вопроса сейчас, вероятно, больше запутает, чем поможет. Основная идея ООП заключается в том, что мы используем объекты для моделирования вещей реального мира, которые мы хотим представить в наших программах, и / или предоставляем простой способ доступа к функциям, которые в противном случае было бы трудно или невозможно использовать.
Объекты могут содержать связанные данные и код, которые представляют информацию об объекте, который вы пытаетесь смоделировать, а также о функциональных возможностях или поведении, которые вы хотите, чтобы он имел.Данные объекта (а часто и функции) могут аккуратно храниться (официальное слово инкапсулировано ) внутри пакета объекта (которому можно дать конкретное имя для ссылки, которое иногда называют пространством имен ), что делает его легко структурировать и получить доступ; объекты также обычно используются в качестве хранилищ данных, которые можно легко пересылать по сети.
Определение шаблона объекта
Давайте рассмотрим простую программу, которая отображает информацию об учениках и учителях в школе.Здесь мы рассмотрим теорию ООП в целом, а не в контексте какого-либо конкретного языка программирования.
Для начала мы могли бы вернуться к нашему типу объекта Person из нашей первой статьи об объектах, которая определяет общие данные и функциональность человека. Есть много вещей, которые вы могли бы знать о человеке (их адрес, рост, размер обуви, профиль ДНК, номер паспорта, важные черты личности …), но в этом случае нас интересует только указание их имени, возраста , пол и интересы, и мы также хотим иметь возможность написать о них краткое введение на основе этих данных и заставить их поздороваться.Это известно как абстракция — создание простой модели более сложной вещи, которая представляет ее наиболее важные аспекты таким образом, чтобы с ней было легко работать для целей нашей программы.
Создание реальных объектов
Из нашего класса мы можем создать экземпляров объектов — объектов, которые содержат данные и функции, определенные в классе. Из нашего класса Person мы теперь можем создавать реальных людей:
Когда экземпляр объекта создается из класса, для его создания запускается функция конструктора класса .Этот процесс создания экземпляра объекта из класса называется экземпляром — экземпляр объекта создан экземпляром из класса.
Классы специалистов
В данном случае нам не нужны обычные люди — нам нужны учителя и ученики, которые являются более конкретными типами людей. В ООП мы можем создавать новые классы на основе других классов — эти новые дочерние классы (также известные как подклассы ) можно сделать так, чтобы наследовал данные и функции кода своего родительского класса , поэтому вы можете повторно использовать функциональность, общая для всех типов объектов, вместо того, чтобы дублировать ее.Если функциональные возможности разных классов различаются, вы можете определять специализированные функции непосредственно на них по мере необходимости.
Это действительно полезно — учителя и ученики имеют много общих черт, таких как имя, пол и возраст, поэтому удобно определять эти особенности только один раз. Вы также можете определить одну и ту же функцию отдельно в разных классах, так как каждое определение этой функции будет в другом пространстве имен. Например, приветствие ученика может иметь форму «Йо, я [имя]» (напр.g Йо, я Сэм ), тогда как учитель может использовать что-то более формальное, например: «Здравствуйте, меня зовут [Prefix] [lastName], и я преподаю [Subject]». (например, Здравствуйте, меня зовут мистер Гриффитс, я преподаю химию ).
Примечание : Модное слово для обозначения способности нескольких типов объектов реализовывать одну и ту же функциональность — это полиморфизм . На всякий случай вам было интересно.
Теперь вы можете создавать экземпляры объектов из дочерних классов. Например:
В оставшейся части статьи мы начнем смотреть, как теория ООП может быть применена на практике в JavaScript.
JavaScript использует специальные функции, называемые функциями конструктора , для определения и инициализации объектов и их функций. Они полезны, потому что вы часто будете сталкиваться с ситуациями, в которых вы не знаете, сколько объектов вы будете создавать; конструкторы предоставляют средства для эффективного создания сколь угодно большого количества объектов, присоединяя к ним данные и функции по мере необходимости.
Давайте рассмотрим создание классов с помощью конструкторов и создание из них экземпляров объектов в JavaScript.Прежде всего, мы хотели бы, чтобы вы сделали новую локальную копию файла oojs.html, который мы видели в нашей первой статье об объектах.
Простой пример
- Давайте начнем с рассмотрения того, как можно определить человека с нормальной функцией. Добавьте эту функцию в элемент сценария
:
function createNewPerson (name) { const obj = {}; obj.name = имя; obj.greeting = function () { alert ('Привет! Я' + имя объекта + '.'); }; return obj; }
- Теперь вы можете создать нового человека, вызвав эту функцию - попробуйте следующие строки в консоли JavaScript вашего браузера:
const salva = createNewPerson ('Salva'); сальва.название; salva.greeting ();
- Замените предыдущую функцию следующей:
function Person (имя) { this.name = имя; this.greeting = function () { alert ('Привет! Я' + это.имя + '.'); }; }
Функция-конструктор - это версия класса в JavaScript. Обратите внимание, что у него есть все функции, которые вы ожидаете от функции, хотя он ничего не возвращает и не создает явно объект - он в основном просто определяет свойства и методы. Обратите внимание, что здесь также используется ключевое слово и
- в основном это означает, что всякий раз, когда создается один из этих экземпляров объекта, свойство name объекта
будет равно значению имени, переданному в вызов конструктора, и приветствию ()
метод также будет использовать значение имени, переданное в вызов конструктора.
Примечание : Имя функции конструктора обычно начинается с заглавной буквы - это соглашение используется для облегчения распознавания функций конструктора в коде.
Так как же вызвать конструктор для создания некоторых объектов?
- Добавьте следующие строки под предыдущим добавлением кода:
let person1 = new Person («Боб»); let person2 = новый человек ('Сара');
- Сохраните свой код, перезагрузите его в браузере и попробуйте ввести следующие строки в консоль JS:
человек1.название person1.greeting () person2.name person2.greeting ()
Круто! Теперь вы можете видеть, что у нас есть два новых объекта на странице, каждый из которых хранится в другом пространстве имен - когда вы получаете доступ к их свойствам и методам, вы должны начинать вызовы с person1
или person2
; функциональность, содержащаяся внутри, аккуратно упакована, поэтому она не будет конфликтовать с другими функциями. Однако у них есть то же свойство name,
и welcome ()
.Обратите внимание, что они используют собственное имя , значение
, которое было присвоено им при создании; это одна из причин, почему очень важно использовать и
, поэтому каждый из них использует свое собственное значение, а не какое-либо другое значение.
Давайте еще раз посмотрим на вызовы конструктора:
let person1 = new Person («Боб»);
let person2 = новый человек ('Сара');
В каждом случае ключевое слово new
используется, чтобы сообщить браузеру, что мы хотим создать новый экземпляр объекта, за которым следует имя функции с ее обязательными параметрами, содержащимися в круглых скобках, а результат сохраняется в переменной - очень похоже на как вызывается стандартная функция.Каждый экземпляр создается в соответствии с этим определением:
function Person (имя) {
this.name = имя;
this.greeting = function () {
alert ('Привет! Я' + this.name + '.');
};
}
После создания новых объектов переменные person1
и person2
содержат следующие объекты:
{
имя: 'Боб',
приветствие: function () {
alert ('Привет! Я' + this.name + '.');
}
}
{
имя: 'Сара',
приветствие: function () {
alert ('Привет! Я' + это.имя + '.');
}
}
Обратите внимание, что когда мы вызываем нашу функцию-конструктор, мы каждый раз определяем welcome ()
, что не идеально. Чтобы избежать этого, мы можем вместо этого определять функции в прототипе, что мы рассмотрим позже.
Создание нашего готового конструктора
Пример, который мы рассмотрели выше, был всего лишь простым примером для начала. Давайте теперь приступим к созданию нашей последней функции-конструктора Person ()
.
- Удалите код, который вы вставили до сих пор, и добавьте в этот конструктор замены - это в принципе то же самое, что и простой пример, только немного сложнее:
функция Человек (имя, фамилия, возраст, пол, интересы) { это.name = { первое: первое, последний: последний }; this.age = возраст; this.gender = пол; this.interests = интересы; this.bio = function () { alert (this.name.first + '' + this.name.last + '' + this.age + 'лет. Ему нравится' + this.interests [0] + 'и' + this.interests [1] + '.'); }; this.greeting = function () { alert ('Привет! Я' + this.name.first + '.'); }; }
- Теперь добавьте следующую строку под ним, чтобы создать из него экземпляр объекта:
let person1 = new Person («Боб», «Смит», 32, «мужчина», [«музыка», «катается на лыжах»]);
Теперь вы можете видеть, что у вас есть доступ к свойствам и методам, как мы делали раньше - попробуйте их в своей консоли JS:
человек1 ["возраст"]
person1.интересы [1]
person1.bio ()
Дальнейшие упражнения
Для начала попробуйте добавить еще пару собственных строк создания объекта, а также попробуйте получить и установить члены результирующих экземпляров объекта.
Кроме того, есть несколько проблем с нашим методом bio ()
- вывод всегда включает местоимение «Он», даже если ваш человек - женщина, или какой-либо другой предпочтительный гендерный класс. И биография включает только два интереса, даже если их больше указано в массиве интересов
.Можете придумать, как исправить это в определении класса (конструкторе)? Вы можете поместить в конструктор любой код, который вам нравится (возможно, вам понадобятся несколько условных выражений и цикл). Подумайте о том, как предложения должны быть по-разному структурированы в зависимости от пола и в зависимости от того, составляет ли число перечисленных интересов 1, 2 или более 2.
До сих пор мы видели два разных способа создания экземпляра объекта - объявление литерала объекта и использование функции-конструктора (см. Выше).
В них есть смысл, но есть и другие способы - мы хотим познакомить вас с ними на тот случай, если вы встретите их во время своих путешествий по Интернету.
Конструктор Object ()
Прежде всего, вы можете использовать конструктор Object ()
для создания нового объекта. Да, даже у универсальных объектов есть конструктор, который генерирует пустой объект.
- Попробуйте ввести это в консоль JavaScript вашего браузера:
let person1 = new Object ();
- Сохраняет пустой объект в переменной
person1
. Затем вы можете добавить свойства и методы к этому объекту, используя точечную или квадратную нотацию по желанию; попробуйте эти примеры на своей консоли:человек1.name = 'Крис'; person1 ['age'] = 38; person1.greeting = function () { alert ('Привет! Я' + this.name + '.'); };
- Вы также можете передать литерал объекта в конструктор
Object ()
в качестве параметра, чтобы предварительно заполнить его свойствами / методами. Попробуйте это в своей консоли JS:let person1 = new Object ({ имя: 'Крис', возраст: 38, приветствие: function () { alert ('Привет! Я' + this.name + '.'); } });
Использование метода create ()
Конструкторы могут помочь вам упорядочить код - вы можете создавать конструкторы в одном месте, а затем создавать экземпляры по мере необходимости, и ясно, откуда они взялись.
Однако некоторые люди предпочитают создавать экземпляры объектов без предварительного создания конструкторов, особенно если они создают только несколько экземпляров объекта. В JavaScript есть встроенный метод create ()
, который позволяет вам это делать. С его помощью вы можете создать новый объект, используя существующий объект в качестве прототипа вновь созданного объекта.
- Завершив упражнение из предыдущих разделов, загруженное в браузер, попробуйте выполнить это в консоли JavaScript:
let person2 = Объект.создать (person1);
- Теперь попробуйте следующее:
person2.name; person2.greeting ();
Вы увидите, что person2
был создан на основе person1
в качестве его прототипа - он имеет те же свойства и доступные ему методы.
Одно из ограничений create ()
состоит в том, что IE8 не поддерживает его. Так что конструкторы могут быть более эффективными, если вы хотите поддерживать старые браузеры.
Мы рассмотрим эффекты create ()
более подробно позже.
Вы дошли до конца этой статьи, но можете ли вы вспомнить самую важную информацию? Вы можете найти несколько дополнительных тестов, чтобы убедиться, что вы сохранили эту информацию, прежде чем двигаться дальше - см. Проверка своих навыков: объектно-ориентированный JavaScript.
Обратите внимание, что этот набор тестов основан на некоторых знаниях, изложенных в следующих двух статьях, поэтому вы можете сначала прочитать их, прежде чем приступить к тестам.
В этой статье представлен упрощенный взгляд на объектно-ориентированную теорию - это еще не вся история, но она дает вам представление о том, с чем мы здесь имеем дело.Кроме того, мы начали рассматривать различные способы создания экземпляров объектов.
В следующей статье мы рассмотрим прототипы объектов JavaScript.
Создать шаблон электронной почты
Эта страница теперь доступна на других языках.
английский Español Français Português Deutsch
Mailchimp предоставляет различные варианты шаблонов, которые помогут вам найти правильный вид для вашего электронного маркетинга.Добавьте свой логотип и выберите цвета и шрифты, которые подходят вашему бренду, чтобы вы могли создать многоразовый дизайн для своих будущих почтовых кампаний.
Из этой статьи вы узнаете, как создать шаблон электронной почты.
Перед тем, как начать
Вот несколько вещей, которые необходимо знать перед созданием шаблона.
- В зависимости от вашего тарифного плана у вас может не быть доступа ко всем параметрам шаблона. Чтобы узнать, какие функции включены в каждый план, посетите нашу страницу с ценами.
- Если вы не уверены, какой шаблон использовать, прочтите больше о различных вариантах шаблона.
- Чтобы ваш классический шаблон отображался должным образом, ознакомьтесь с нашими требованиями к изображениям для блоков содержимого.
- Когда вы редактируете шаблон с пользовательским кодом, ваши изменения могут повлиять на существующие кампании, в которых используется этот шаблон. Изменения в шаблоне перетаскивания не будут отображаться в существующих кампаниях.
Новостройке
Чтобы создать шаблон для нового конструктора электронной почты, выполните следующие действия.
- Щелкните значок Кампании .
- Щелкните Шаблоны электронной почты.
- Щелкните Создать шаблон .
- Наведите указатель мыши на шаблон, с которого хотите начать, и нажмите Выберите .
- Во всплывающем окне Create New Template введите имя и нажмите Save .
- Добавляйте или редактируйте блоки содержимого и стили, чтобы создать свой шаблон по мере необходимости. Чтобы узнать больше, прочтите статью «Создание электронного письма с помощью New Builder».
- Щелкните Preview , чтобы увидеть, как ваш шаблон будет выглядеть на настольных компьютерах и мобильных устройствах.
- Когда будете готовы, нажмите Сохранить шаблон и выйти из .
Ваш новый шаблон будет доступен для использования на странице Templates вашей учетной записи или в новом конструкторе электронной почты.
Для классического строителя
Чтобы создать шаблон для классического конструктора электронной почты, выполните следующие действия.
- Щелкните значок Кампании .
- Щелкните Шаблоны электронной почты .
- Щелкните Создать шаблон .
- Щелкните вкладку, чтобы выбрать категорию шаблона.
Вкладка Layouts содержит шаблоны Featured и Basic. Рекомендуемые шаблоны содержат рекомендации по типу контента для включения в кампанию, а базовые шаблоны предоставляют пустые макеты. Вкладка Themes содержит готовые макеты. Вкладка Code your own позволяет импортировать или вставлять HTML для создания макета шаблона.Чтобы узнать больше об этих параметрах, ознакомьтесь с Типами шаблонов электронной почты. - Щелкните шаблон, с которым хотите работать.
- Перетаскивайте блоки содержимого в макет шаблона для добавления и форматирования текста, изображений, файлов и другого содержимого по мере необходимости.
- Когда вы закончите, нажмите Сохранить и выйти .
- В модальном всплывающем окне Сохранить шаблон введите имя для своего шаблона.
- Нажмите Сохранить .
Ваш новый шаблон будет доступен для использования на странице Шаблоны или в разделе Сохраненные шаблоны в классическом конструкторе электронной почты.
Создайте собственный код
Если вам нужен больший контроль над дизайном электронной почты, чем предлагают наши шаблоны, подумайте о создании собственного настраиваемого шаблона. Дизайнеры могут использовать язык шаблонов Mailchimp для создания динамических шаблонов, которые они могут импортировать как HTML. Это полезно для веб-дизайнеров, которые хотят загрузить шаблон для клиента и создать разделы, которые можно редактировать, повторять или скрывать.
Чтобы просмотреть или добавить шаблон с пользовательским кодом, перейдите на страницу Templates и щелкните Create Template .На вкладке Code your own вы увидите варианты Вставить в код , Import HTML или Import zip . Вы также можете получить доступ к настраиваемым шаблонам в классическом конструкторе.
Для получения дополнительной информации о шаблонах с настраиваемым кодом ознакомьтесь с разделами «Начало работы с языком шаблонов Mailchimp» и «Импорт настраиваемого HTML-шаблона».
Следующие шаги
Теперь, когда вы создали новый шаблон электронной почты, вы готовы использовать его в будущих кампаниях по электронной почте.Вот несколько ресурсов, которые помогут вам начать работу.
Доступ к сохраненным шаблонам электронной почты
Создайте регулярную кампанию
Использование BeautifulSoup для анализа HTML и извлечения URL-адресов пресс-брифингов
Веб-страница - это просто текстовый файл в формате HTML. А HTML-форматированный текст - это, в конечном счете, просто текст. Итак, давайте напишем наш собственный HTML с нуля, не беспокоясь пока о «Сети»:
htmltxt = " Привет, мир
"
Смысл HTML-синтаксического анализа заключается в том, чтобы иметь возможность эффективно извлекать значения text в HTML-документе - e.г. Hello World
- кроме от разметки HTML - например,
.
Мы начнем с использования Beautiful Soup, одной из самых популярных библиотек Python для анализа HTML.
Импорт функции конструктора BeautifulSoup
Это стандартный оператор импорта для использования Beautiful Soup:
из BS4 импорт BeautifulSoup
Функция-конструктор BeautifulSoup
принимает два строковых аргумента:
- Анализируемая строка HTML.
- Необязательно, имя парсера . Не вдаваясь в предысторию того, почему существует несколько реализаций синтаксического анализа HTML, для наших целей мы будем всегда использовать
'lxml'
.
Итак, давайте разберем немного HTML:
из BS4 импорт BeautifulSoup
htmltxt = " Привет, мир
"
soup = BeautifulSoup (htmltxt, 'lxml')
Объект «суп»
Что такое суп
? Как всегда, используйте метод type ()
для проверки неизвестного объекта:
тип (суп)
# bs4.BeautifulSoup
Хорошо, по крайней мере, мы знаем, что суп
- это не просто текст. Более сложный ответ заключается в том, что soup
теперь является объектом с гораздо большей сложностью и методами, чем просто строка Python. Однако в эту сложность стоит погрузиться, потому что объект типа BeautifulSoup
имеет специальные методы, предназначенные для эффективной работы с HTML.
Объект Hello World BeautifulSoup
имеет атрибут text
, который возвращает простой текст строки HTML без тегов .Учитывая наш простой суп из
, атрибут text
возвращает:
суп. Текст
# 'Привет мир'
Давайте попробуем более сложную строку HTML:
soup = BeautifulSoup ("" " Hello
World
" "", 'lxml')
soup.text
# 'Привет мир'
А вот строка HTML, содержащая URL:
mytxt = "" "
Привет, мир
Это ссылка
" ""
soup = BeautifulSoup (mytxt, 'lxml')
soup.text
# 'Hello World \ nЭто ссылка'
По сути, атрибут text
объекта BeautifulSoup
будет возвращать строку без каких-либо HTML-тегов и метаданных.
Как правило, мы не хотим просто выводить весь текст HTML-документа без тегов. Обычно мы хотим извлечь текст всего из нескольких определенных элементов.
Давайте повторно используем нашу "сложную" HTML-строку сверху:
mytxt = "" "
Привет, мир
Это ссылка
"" "
Он содержит 3 тега HTML:
Чтобы найти первый элемент по тегу, мы используем метод find ()
объекта BeautifulSoup
, который принимает имя тега в качестве первого аргумента:
суп = BeautifulSoup (mytxt, 'lxml')
суп.Найди')
# ссылка
Опять же, используйте type ()
, чтобы выяснить, что именно возвращается:
тип (soup.find ('a'))
# bs4.element.Tag
В чем разница между объектом Tag
и BeautifulSoup
? Точно не знаю, но для нас важно их схожести . Объект Tag
также имеет текстовый атрибут
:
суп.найти ('а'). текст
# ссылка на сайт
Попробуйте find ()
с другими тегами:
soup.find ('p')
# Это ссылка
soup.find ('p'). текст
# 'Это ссылка'
Для пресс-брифингов в Белом доме и других упражнений по синтаксическому анализу HTML нам нужно больше, чем просто визуализированный текст HTML. Нам понадобятся некоторые метаатрибуты HTML, такие как значения href
для тегов ссылок.
Объект Tag
имеет атрибут attrs
, который возвращает словарь пар ключ-значение. Начнем сверху:
из BS4 импорт BeautifulSoup
mytxt = "" "
Привет, мир
Это ссылка
"" "
soup = BeautifulSoup (mytxt, 'lxml')
mylink = soup.find ('а')
Чтобы извлечь значение атрибута href
из объекта mylink
, используйте attrs
:
типа (mylink.attrs)
# dict
mylink.attrs
# {'href': 'http://example.com'}
mylink.attrs ['href']
# 'http://example.com'
А как насчет других тегов в нашем фрагменте HTML? У них нет атрибутов, поэтому для их атрибутов attrs
будут пустые словари:
soup.find ('h2'). Attrs
# {}
Хорошо, давайте увеличим сложность; что, если есть несколько тегов
, из которых мы хотим извлечь href
и текстовые значения? Мы используем метод find_all ()
, который возвращает коллекцию элементов:
moretxt = "" "
Посетите New York Times
Посетите Wall Street Journal
"" "
soup = BeautifulSoup (moretxt, 'lxml')
теги = soup.find_all ('а')
тип (теги)
# bs4.element.ResultSet
ResultSet
действует так же, как и другие виды последовательности Python, такие как список :
лен (теги)
# 2
теги [0]. текст
# Газета "Нью-Йорк Таймс
теги [0] .attrs ['href']
"http://www.nytimes.com"
для t в тегах:
печать (т.текст, t.attrs ['href'])
# New York Times http://www.nytimes.com
# Wall Street Journal http://www.wsj.com
Однако будьте осторожны и не относитесь к ResultSet
как к тегу
- постарайтесь понять, почему следующее не имеет особого смысла (не говоря уже об ошибке):
tags.attrs ['href']
# AttributeError: объект ResultSet не имеет атрибута attrs
Атрибуты HTML существуют на уровне каждого тега - что вы ожидаете от него для набора тегов? Таким образом, дизайнер BeautifulSoup не имеет представления о сообщении об ошибке.
Если вам нужно значение href
для каждого из тегов, вы должны сделать это по старинке с помощью цикла for:
hrefs = []
для t в тегах:
hrefs.append (t)
Что происходит, когда нам нужно более одной «группы» тегов ссылок? Во фрагменте ниже интересующие нас теги
вложены в теги
:
evenmoretxt = "" "
Превосходно
Действительно потрясающе
"" "
soup = BeautifulSoup (evenmoretxt, 'lxml')
Во-первых, мы можем собрать все теги
с помощью find_all ()
:
heds = soup.find_all ('h2')
Каждый из членов heds
является объектом Tag
, и каждый объект Tag
имеет метод find ()
, который мы можем использовать для выбора только вложенного тега
:
ссылок = []
для h в изгородях:
а = ч.Найди')
links.append (а)
Или, точнее:
ссылок = []
для h в изгородях:
links.append (h.find ('а'))
Разбирать наш собственный вручную созданный HTML не так уж и весело. Итак, давайте возьмем «настоящий» HTML-документ из Интернета.
Эта часть должна быть знакома:
запросов на импорт
resp = requests.get ('http://www.example.com')
txt = соответственно текст
Является ли содержимое txt
строкой, созданной вручную или полученной из Интернета, не имеет значения, когда мы работаем с Beautiful Soup - мы заботимся только о преобразовании строки в объект BeautifulSoup:
из BS4 импорт BeautifulSoup
суп = BeautifulSoup (txt, 'lxml')
Посмотрите на веб-страницу http: // www.example.com/. Осмотрите его источник. Затем посмотрите, сможете ли вы написать код Python, который извлекает:
- Количество
тегов. - Текст в первом теге
- Длина текста первого тега
- Текст первого (и единственного)
-
href
первого тега
Мои ответы ниже:
№1.Количество тегов ``.
len (soup.find_all ('p'))
# 2. Текст в первом теге `
`
soup.find_all ('p') [0]. текст
# 3. Длина текста первого тега `
`
len (soup.find ('h2'). текст)
# 4. Текст первого тега `
`
soup.find ('a'). текст
# 5. Href первого тега ``
soup.find ('a'). attrs ['href']
Теперь посмотрим, сможете ли вы извлечь URL-адрес каждого брифинга для прессы из этого образца страницы брифингов для прессы Белого дома:
http: // stash.compjour.org/samples/webpages/whitehouse-press-briefings-page-50.html
Изучение исходного HTML-кода каждого тега пресс-релиза
Давайте посмотрим на этот первый URL.
Его текст :
Брифинг пресс-секретаря Джея Карни, 06.12.2013
Его значение href
:
https://www.whitehouse.gov/the-press-office/2013/12/06/press-briefing-press-secretary-jay-carney-1262013
Если вы проверите источник и выполните поиск определенного тега, вы найдете этот HTML:
Для этой страницы ссылка - это не просто тег
; он вложен в несколько других тегов. Вот красиво отформатированная версия этой ссылки и ее родительских тегов:
Обработка страницы пресс-брифингов как суп
Давайте превратим этот запутанный HTML в суп.Посмотрите, сможете ли вы достаточно хорошо запомнить шаги по загрузке веб-страницы и ее преобразованию в объект супа, чтобы ввести их по памяти:
запросов на импорт
из bs4 импорт BeautifulSoup
url = 'http://stash.compjour.org/samples/webpages/whitehouse-press-briefings-page-50.html'
resp = requests.get (URL)
soup = BeautifulSoup (соответственно текст, lxml)
На каждой странице 10 брифингов для прессы, но должно быть очевидно, что тегов ссылок больше 10. Достаточно легко узнать:
лен (суп.find_all ('а'))
# 263
Так как же нам получить только URL-адреса для настоящих брифингов для прессы? Из HTML, который мы проверили ранее, нам нужны теги
, вложенные в теги
.
Итак, давайте найдем и посчитаем количество тегов h4
:
лен (soup.find_all ('h4'))
# 10
Эй, какое совпадение - тегов h4
ровно столько, сколько ссылок на брифинги для прессы. Это просто счастливый результат того, как веб-разработчики Белого дома решили создать эту страницу.
Вот один из способов извлечь все URL-адреса вложенных тегов ссылок в список:
urls = []
для h в soup.find_all ('h4'):
а = h.find ('а')
urls.append (a.attrs ['href'])
Вот более краткая - хотя и сложная для чтения - версия:
urls = []
для h в soup.find_all ('h4'):
urls.append (h.find ('a'). attrs ['href'])
В любом случае это содержимое URL-адресов
:
['https: // www.whitehouse.gov/the-press-office/2013/12/06/press-briefing-press-secretary-jay-carney-1262013 ',
'https://www.whitehouse.gov/the-press-office/2013/12/05/daily-briefing-press-secretary-1252013',
'https://www.whitehouse.gov/the-press-office/2013/12/05/press-briefing-senior-administration-officials-fact-sheet-strengtching-',
'https://www.whitehouse.gov/the-press-office/2013/12/04/press-briefing-press-secretary-1232013',
'https://www.whitehouse.gov/the-press-office/2013/12/02/press-briefing-press-secretary-jay-carney-1222013',
https: // www.whitehouse.gov/the-press-office/2013/11/26/press-gaggle-principal-deply-press-secretary-josh-earnest-los-angeles-c ',
'https://www.whitehouse.gov/the-press-office/2013/11/25/press-gaggle-principal-deplic-press-secretary-josh-earnest-aboard-air-fo',
'https://www.whitehouse.gov/the-press-office/2013/11/22/daily-briefing-press-secretary-112213',
'https://www.whitehouse.gov/the-press-office/2013/11/21/briefing-principal-deplic-press-secretary-josh-earnest-112113',
'https://www.whitehouse.gov/the-press-office/2013/11/20/press-briefing-press-secretary-jay-carney-111']
Чтобы извлечь URL-адреса из готового образца веб-страницы, вот весь код:
запросов на импорт
из bs4 импорт BeautifulSoup
url = 'http: // stash.compjour.org/samples/webpages/whitehouse-press-briefings-page-50.html '
resp = requests.get (URL)
soup = BeautifulSoup (соответственно текст, lxml)
urls = []
для h в soup.find_all ('h4'):
а = h.find ('а')
urls.append (a.attrs ['href'])
Теперь все, что нам нужно сделать, это повторить это для каждой страницы списков брифингов для прессы…
Генератор CSS-стилей шрифтов| 𝗧𝗛𝗘 𝗕𝗘𝗦𝗧 𝗢𝗡𝗟𝗜𝗡𝗘 𝗖𝗦𝗦 𝗚𝗘𝗡𝗘𝗥𝗔𝗧𝗢𝗥
Семейство шрифтов:
Грузия
Грузия
Палатино
Times New Roman
Arial
Ариал Черный
Comic Sans
Удар
Lucida Sans
Тахома
Требуше
Вердана
Курьер
Консоль Lucida
Украшение:
Нет
Подчеркнутый
Overline
Линейный
Стиль:
Обычный
Не задано
Курсив
косой
Преобразовать:
нет
прописные
строчная
капитализировать
Создайте стиль своего веб-текста с помощью этого онлайн-генератора шрифтов CSS.Установите желаемый стиль для текста на панели управления и сразу же получите код.
Найти правильную строку для объявления шрифта CSS - не всегда самая простая вещь, которая приходит в голову людям. Здесь вы можете легко выбрать веб-шрифт из раскрывающегося списка, увеличить размер шрифта, установить расстояние между буквами и словами. Настройте цвет, толщину шрифта, оформление, стиль шрифта, вариант и преобразование.
Когда предварительный просмотр приблизится к вашей цели, отправьте код в интерактивный редактор для ручной корректировки.Обратите внимание, что на действующем веб-сайте с другим файлом .ccs текст может выглядеть немного иначе.
Не забудьте проверить онлайн-генератор теней для текста, чтобы стилизовать текст еще лучше. Вы даже не поверите, как с этим можно добиться потрясающих эффектов.
Передача функций компонентам - React
Как передать компоненту обработчик событий (например, onClick)?
Передавать обработчики событий и другие функции в качестве свойств дочерним компонентам:
Если вам нужен доступ к родительскому компоненту в обработчике, вам также необходимо привязать функцию к экземпляру компонента (см. Ниже).
Как привязать функцию к экземпляру компонента?
Есть несколько способов убедиться, что функции имеют доступ к атрибутам компонентов, таким как this.props
и this.state
, в зависимости от того, какой синтаксис и шаги сборки вы используете.
Привязка в конструкторе (ES2015)
class Foo extends Component {
конструктор (реквизит) {
супер (реквизит);
это.handleClick = this.handleClick.bind (это);
}
handleClick () {
console.log («Щелчок произошел»);
}
оказывать() {
return ;
}
}
Class Properties (этап 3 предложения)
class Foo extends Component {
handleClick = () => {
console.log («Щелчок произошел»);
}
оказывать() {
return ;
}
}
Привязка в рендере
class Foo extends Component {
handleClick () {
приставка.log ('Щелчок произошел');
}
оказывать() {
return ;
}
}
Примечание:
Использование
Function.prototype.bind
в рендере создает новую функцию каждый раз при рендеринге компонента, что может повлиять на производительность (см. Ниже).
Функция стрелки в рендере
class Foo extends Component {
handleClick () {
console.log («Щелчок произошел»);
}
оказывать() {
return ;
}
}
Примечание:
Использование стрелочной функции при рендеринге создает новую функцию каждый раз при рендеринге компонента, что может нарушить оптимизацию, основанную на строгом сравнении идентичности.
Можно ли использовать стрелочные функции в методах рендеринга?
Вообще говоря, да, это нормально, и часто это самый простой способ передать параметры функциям обратного вызова.
Если у вас есть проблемы с производительностью, во что бы то ни стало оптимизируйте!
Зачем вообще нужна привязка?
В JavaScript эти два фрагмента кода эквивалентны , а не :
var method = obj.метод;
метод ();
Методы привязки помогают гарантировать, что второй фрагмент кода работает так же, как и первый.
В React обычно нужно только привязать методы, которые вы передаете другим компонентам. Например,
передает this.handleClick
, поэтому вы хотите его привязать. Однако связывать метод render
или методы жизненного цикла необязательно: мы не передаем их другим компонентам.
В этом сообщении Иегуды Кац подробно объясняется, что такое привязка и как функции работают в JavaScript.
Почему моя функция вызывается каждый раз при рендеринге компонента?
Убедитесь, что не вызывает функцию при передаче ее компоненту:
render () {
return
}
Вместо этого передают саму функцию (без скобок):
render () {
return
}
Как передать параметр в обработчик событий или обратный вызов?
Вы можете использовать стрелочную функцию, чтобы обернуть обработчик события и передать параметры:
Это эквивалентно вызову .bind
:
Пример: передача параметров с помощью стрелочных функций
const A = 65
Класс Alphabet расширяет React.Компонент {
конструктор (реквизит) {
супер (реквизит);
this.state = {
justClicked: null,
буквы: Array.from ({length: 26}, (_, i) => String.fromCharCode (A + i))
};
}
handleClick (letter) {
this.setState ({justClicked: letter});
}
оказывать() {
возвращение (
Только что нажал: {this.state.justClicked}
{this.state.letters.map (letter =>
- this.handleClick (letter)}>
{письмо}
)}
)
}
}
Пример: передача параметров с использованием атрибутов данных
В качестве альтернативы вы можете использовать DOM API для хранения данных, необходимых для обработчиков событий.Рассмотрите этот подход, если вам нужно оптимизировать большое количество элементов или иметь дерево рендеринга, основанное на проверках равенства React.PureComponent.
const A = 65
class Alphabet extends React.Component {
конструктор (реквизит) {
супер (реквизит);
this.handleClick = this.handleClick.bind (это);
this.state = {
justClicked: null,
буквы: Array.from ({length: 26}, (_, i) => String.fromCharCode (A + i))
};
}
handleClick (e) {
this.setState ({
justClicked: e.target.dataset.letter
});
}
оказывать() {
возвращение (
Только что нажал: {this.state.justClicked}
{this.state.letters.map (letter =>
-
{письмо}
)}
)
}
}
Как я могу предотвратить вызов функции слишком быстро или слишком много раз подряд?
Если у вас есть обработчик событий, например onClick
или onScroll
, и вы хотите предотвратить слишком быстрое выполнение обратного вызова, то вы можете ограничить скорость выполнения обратного вызова.Это можно сделать с помощью:
См. Эту визуализацию для сравнения функций дроссельной заслонки ,
и , дребезга
.
Примечание:
_.debounce
,_.throttle
иraf-schd
предоставляют методcancel
для отмены отложенных обратных вызовов. Вы должны либо вызвать этот метод изcomponentWillUnmount
, либо проверить , чтобы убедиться, что компонент по-прежнему смонтирован в отложенной функции.
Дроссель
Регулирование предотвращает вызов функции более одного раза в заданный промежуток времени. В приведенном ниже примере дросселируется обработчик «щелчка», чтобы предотвратить его вызов чаще одного раза в секунду.
импортный дроссель от 'lodash.throttle';
class LoadMoreButton расширяет React.Component {
конструктор (реквизит) {
супер (реквизит);
this.handleClick = this.handleClick.bind (это);
this.handleClickThrottled = дроссель (this.handleClick, 1000);
}
componentWillUnmount () {
это.handleClickThrottled.cancel ();
}
оказывать() {
return ;
}
handleClick () {
this.props.loadMore ();
}
}
Debounce
Debouncing гарантирует, что функция не будет выполнена до тех пор, пока не пройдет определенное время с момента ее последнего вызова. Это может быть полезно, когда вам нужно выполнить некоторые дорогостоящие вычисления в ответ на событие, которое может быть отправлено быстро (например, события прокрутки или клавиатуры).В приведенном ниже примере показан ввод текста с задержкой 250 мс.
импорт debounce из lodash.debounce;
class Searchbox расширяет React.Component {
конструктор (реквизит) {
супер (реквизит);
this.handleChange = this.handleChange.bind (это);
this.emitChangeDebounced = debounce (this.emitChange, 250);
}
componentWillUnmount () {
this.emitChangeDebounced.cancel ();
}
оказывать() {
возвращение (
<ввод
type = "текст"
onChange = {this.handleChange}
placeholder = "Искать... "
defaultValue = {this.props.value}
/>
);
}
handleChange (e) {
this.emitChangeDebounced (e.target.value);
}
emitChange (value) {
this.props.onChange (значение);
}
}
requestAnimationFrame
дросселирование requestAnimationFrame
- это способ постановки в очередь функции для выполнения в браузере в оптимальное время для производительности рендеринга. Функция, поставленная в очередь с requestAnimationFrame
, будет запущена в следующем кадре.Браузер приложит все усилия, чтобы обеспечить скорость 60 кадров в секунду (60 кадров в секунду). Однако, если браузер не может сделать это, естественно, ограничит количество кадров в секунду. Например, устройство может обрабатывать только 30 кадров в секунду, поэтому вы получите только 30 кадров за эту секунду. Использование requestAnimationFrame
для регулирования - полезный метод, поскольку он не позволяет выполнять более 60 обновлений в секунду. Если вы выполняете 100 обновлений в секунду, это создает дополнительную работу для браузера, которую пользователь все равно не увидит.
Примечание:
При использовании этого метода будет зафиксировано только последнее опубликованное значение в кадре. Вы можете увидеть пример того, как эта оптимизация работает на
MDN
импорт rafSchedule из 'raf-schd'; class ScrollListener расширяет React.Component {
конструктор (реквизит) {
супер (реквизит); this.handleScroll = this.handleScroll.bind (это);
this.scheduleUpdate = rafSchedule (
точка => this.props.onScroll (точка)
);
} handleScroll (e) {
это.scheduleUpdate ({x: e.clientX, y: e.clientY});
} componentWillUnmount () {
this.scheduleUpdate.