Рубрики
Без рубрики

Несколько Snak Peeks в Technology Hey.com (II – сочетания клавиш)

Начнем с хорошей маленькой особенности эй, сочетания клавиш. Каждая главная страница имеет несколько коротких … Tagged Rails, Ruby, WebDev, JavaScript.

Давайте начнем с хорошей маленькой особенности эй, горячие клавиши . Каждая главная страница имеет несколько ярлыков, которые позволяют выполнять общие задачи, не касаясь мыши. Вы можете узнать нажатия клавиш из списка, который появится, нажав "?" Или нажатие на маленькую клавиатуру значок в правом нижнем углу каждой страницы.

По сути, в эй, есть два типа ярлыков, которые просто сделают ваш браузер на другую страницу (как если бы вы нажимали обычный ссылка), другой будет вызвать некоторые Пользовательское действие JavaScript, создавая текущую страницу интерактивной.

Хорошо, как они работают? Давайте погрузимся в исходный код!

Ярлыки перехода страницы

Когда мы открываем инспектор страницы на странице Imbox (которая, как известно, не опечатка ), мы найдем несколько Теги, которые кажутся актуальны для сочетаний клавиш, прямо вблизи верхней части корпуса HTML.

Давайте рассмотрим один из них. Как видите, это просто нормальная HTML-ссылка, ничего особенного:

  • У него есть URL ( href ), что приводит к странице FeedBox.
  • У этого также есть Содержание , «Кормь», но на странице не отображается из-за скрытый атрибут . Это Глобальный атрибут Служение только этой конкретной целью – включая вещи в доме, но не показывая их. Таким образом, тег сидит молча на странице, невидимый.
  • Теперь Контроллер данных атрибут Важен и, вероятно, знаком для всех, кто имеет дело с недавними версиями рельсов: это указатель на соответствующие Контроллер стимула И значение предполагает, что этот контроллер есть что делать с горячими клавишами.
  • Наконец, ХОРОШКА ДАННЫХ атрибут Должен быть конкретное определение ключевого удара этого сочетания клавиш, что означает, что нажатие "2" Ключ загрузит страницу FeedBox.

Кстати. Укажите их цель очень хорошо Отказ Они определяют ярлыки, и сразу очевидно, какой ключ приводит к какой странице! Это чистота и сосредоточиться на читабельности, что мне нравится в рельсах. В шаблоне рельсов вы бы как-то написали такую ссылку (или, даже лучше, вы создадим Hotkey_Link помощник помощника):

link_to "The feed", "/feebox", data: { controller: "hotkey", hotkey: "2" }, 
                               hidden: true

Чтобы еще больше понять, как работает ссылка на горячую клавишу, мы должны что-то сказать о Стимул Отказ Это небольшой и высокоусовершенствованный JavaScript Framework, которая позволяет избавиться от JS «брызгает» в шаблонах, переместите все код JS, чтобы отделить файлы «контроллера» и связать их на страницу в очень чистоте и читаемом способе – через HTML атрибуты. Если вы еще не встречали стимул, дайте ему несколько минут и прочитайте через Стимул руководства И вы почувствуете, что все нужно было идти здесь.

Контроллер данных Атрибут ссылки направляет нас к контроллеру стимула «Горячая клавиша». Давайте посмотрим на это тогда! Мы перейдем на вкладку «Отладчик» в инструментах разработчиков и разверните WebPack ⟶ Приложение/JavaScriptКонтроллеры Путь, чтобы найти и открыть hotkey_controller.js :

Мы не будем притворяться, что все понять, но одно сразу выпрыгивает: код импортирует две функции, установить и Удалить , из @ Github/Горячая клавиша Библиотека И … Есть даже ссылка на это в комментарии … Итак, давайте заглянуть в :

И Вуаля! Библиотека GitHub, очевидно, делает все низкоуровневые хардкорные вещи, которые необходимы для настройки горячей клавиши на странице. Все, что ему нужно, это элемент на странице с ХОРОШКА ДАННЫХ атрибут и когда кто-то нажимает данный ключ, это практически нажимает элемент Отказ Учитывая, что наш элемент – это Теги, нажав на его просто посетите целевую страницу из href атрибут.

Для всего этого работать, вам нужно позвонить в Установить Метод из библиотеки, придавая на щелчок элемента в качестве аргумента. Это именно то, что делается в соединить Метод контроллера стимула. соединить Метод называется Всякий раз, когда соответствующий HTML-элемент (метка в нашем случае) добавляется в DOM, I.E. Сразу после загрузки веб-страницы.

Я думаю, что жизненный цикл сочетания клавиш страницы завершен сейчас:

  • Установка ярлыка:

    • Как страница нагрузки, структура стимула находит Контроллер данных атрибут в «ссылках на горячую клавишу».
    • Стимул создает новый экземпляр Hotkey_Controller и называет его инициализировать и соединить методы.
    • соединить Метод вызывает Установить Метод из библиотеки горячей клавиши GitHub, которая фактически добавит правильный обработчик событий JS низкого уровня для нажатия клавиши.
  • Когда ключ нажата:

    • Мероприятие низкого уровня ( Keydown ) запускается браузером.
    • Это поймано обработчиком событий библиотеки GitHub.
    • Этот обработчик практически «щелкает» оригинальный элемент, то есть ссылка «Горячая клавиша».
    • Браузер посещает URL по ссылке.

Дженерические ярлыки действия

Что если мы хотели вызвать пользовательскую функцию JS, вместо того, чтобы посетить страницу на нашей жарки? Во-первых, мы, вероятно, не должны использовать Элемент для нашего определения горячей клавиши, чтобы браузер не попытается посетить другую страницу после «нажатия».

Далее мы можем использовать Стимул Конвенция Чтобы сообщить браузеру, какие действия, чтобы позвонить по событию клики в нашем элементе.

Мы можем найти пример в исходном коде:

На этот раз это кнопка Элемент, и у него есть только одна конкретная разница от «Histley Link»: она определяет Data-Action атрибут :


Это короткая форма выражения, которое имеет следующий эквивалентный смысл:


В конвенции о стимулах Data-Action атрибут Рассказывает структуру стимула следить за мероприятию JS, заданное до -> А когда событие триггеры, вызовите действие контроллера стимула, учитывая после -> Отказ Если имя события не указано, это по умолчанию для Нажмите событие Для элемента кнопки.

Таким образом, в нашем случае Выберите Действие от bulk_action_controller.js Будут призвать «нажатие» этой скрытой кнопки, то есть на нажатии на "х" ключ на вашей клавиатуре. Аккуратный, не так ли?

Резюме

С удобным использованием библиотеки HitTub Hoteyys, код веб-страниц может быть очень чистым и лаконичным. И это рамка стимула, которая делает код очень гибким, не загромождая саму код HTML-страницы. HTML-страница остается коротким и чистым, а код JS в комплекте в другом месте и красиво кэшируется. Конвенция о стимулах делает весь процесс читаемого и предсказуемого, который всегда хорошая вещь!

Спасибо за чтение, оставайтесь настроенными для более эй, Tech Goodless! В следующий раз я вырожу в отличную новую особенность – Автоматическое обновление пользовательских областей страницы С сервера!

Оригинал: “https://dev.to/borama/a-few-sneak-peeks-into-hey-com-technology-ii-keyboard-shortcuts-11kj”