Java, UX, HTML, CSS, WEB-design

S(GH)PA: взлом одностраничного приложения для страниц GitHub

Краткое описание по статье S(GH)PA: взлом одностраничного приложения для страниц GitHub

Название: S(GH)PA: взлом одностраничного приложения для страниц GitHub . Краткое описание: [ad_1] ⭐ Дэниел . Дата публикации: 02.02.2022 . Автор: Алишер Валеев .

Для чего создан сайт Novosti-Nedeli.ru

Данный сайт посвящен новостям мира и мира технологий . Также тут вы найдете руководства по различным девайсам.

Сколько лет сайту?

Возраст составляет 3 года

[ad_1]

  • Дэниел Бюхнер

  • 0 Комментарии

S(GH)PA: взлом одностраничного приложения для страниц GitHub

  • 5 минут чтения

  • Git, Приложения, Кодирование, Статические генераторы

Краткое резюме ↬

лорем ипсум

В течение некоторого времени я хотел иметь возможность маршрутизировать пути для веб-сайта GitHub Pages к его index.html для обработки в качестве одностраничного приложения (SPA). Это табличные ставки, потому что такие приложения требуют, чтобы все запросы направлялись в один файл HTML, если только вы не хотите копировать один и тот же файл во все ваши маршруты каждый раз, когда вы вносите изменения в проект. В настоящее время GitHub Pages не предлагает решения для обработки маршрутов; Система Pages задумана как плоский, простой механизм для обслуживания основного контента проекта.

Если вы не знали, GitHub предоставляет один элемент настройки для веб-сайта вашего проекта: возможность добавить 404.html файл и использовать его в качестве пользовательской страницы ошибок. Я предпринял первую попытку взлома SPA, просто продублировав свой index.html файл и переименовать копию в 404.html. Оказывается, у многих людей столкнулся с той же проблемой с GitHub Pages, и ему понравилась общая идея. Однако проблема, которую правильно подняли некоторые люди в Твиттере, заключалась в том, что 404.html страница по-прежнему обслуживается с кодом состояния 404, что не очень хорошо для сканеров поисковых систем. Перчатка была брошена, и я решил ответить — и ответить с силой!

Еще раз, с чувством

Выспавшись на нем, я подумал про себя: «Я глубоко зашел на территорию грязного хака, так почему бы мне не сделать этот хак еще грязнее?!» С этой целью я разработал еще лучший хак, который обеспечивает ту же функциональность и простоту, а также сохраняет возможности поискового робота вашего веб-сайта — и вам даже не нужно тратить время на дублирование вашего index.html файл и переименовать его в 404.html больше! Следующее решение должно работать во всех современных настольных и мобильных браузерах (Edge, Chrome, Firefox, Safari) и в Internet Explorer 10+.

Шаблон и демо: Если вы хотите пропустить объяснение и получить товар, вот репозиторий шаблонов и тестовый URL-адрес, чтобы увидеть его в действии.

Еще после прыжка! Продолжить чтение ниже ↓

Это так мета

Первое, что я сделал, это изучил другие варианты перенаправления браузера на index.html страница. Эта часть была довольно простой. В основном у вас есть три варианта: конфигурация сервера, JavaScript location манипуляция, или refresh метатег. Первый, очевидно, не подходит для страниц GitHub. И JavaScript в основном такой же, как обновление, но, возможно, хуже для индексации поисковым роботом. Это оставляет нас с метатегом. Метатег со значением обновления 0 похоже, поисковые системы обрабатывают его как переадресацию 301, что хорошо подходит для этого варианта использования.

Вам нужно начать с добавления 404.html файл в gh-pages репозиторий, внутри которого находится пустой HTML-документ. Этот документ должен всего более 512 байт (поясняется ниже). Затем поместите следующую разметку в свой 404.html страницы head элемент:

<script>
  sessionStorage.redirect = location.href;
</script>
<meta http-equiv="refresh" content="0;URL='/REPO_NAME_HERE'">

Этот код устанавливает URL-адрес попытки входа в переменную стандартного объекта sessionStorage и немедленно перенаправляет на ваш проект. index.html страницу с помощью мета-тега обновления. Если вы делаете сайт организации Github, не добавляйте имя репо в текст заменителя атрибута содержимого, просто сделайте следующее: content=“0;URL=‘/’”

Настройка обработки маршрута

Если вам нужна более сложная обработка маршрута, просто включите дополнительную логику JavaScript в script тег, показанный выше. Вы можете настроить несколько вещей: состав href что вы переходите к index.html страница; какие страницы должны оставаться на странице 404 (путем динамического удаления метатега); и любую другую логику, которую вы хотите внедрить, чтобы определять, какой контент отображается на основе входящего маршрута.

512 волшебных байтов

Это, без сомнения, одна из самых странных особенностей, с которыми я когда-либо сталкивался в веб-разработке. Вы должны убедиться, что общий размер вашего 404.html страница больше 512 байт, потому что если это не так, Internet Explorer проигнорирует ее и вместо этого покажет стандартную страницу браузера 404. Когда я, наконец, понял это, мне пришлось открыть пиво, чтобы справиться с количеством времени, которое потребовалось.

Давайте делать историю

Чтобы захватить и восстановить URL-адрес, по которому пользователь первоначально перешел, вам нужно добавить следующее script тег к head вашей index.html страница до любой другой JavaScript действует на текущее состояние страницы:

<script>
  (function(){
    var redirect = sessionStorage.redirect;
    delete sessionStorage.redirect;
    if (redirect && redirect != location.href) {
      history.replaceState(null, null, redirect);
    }
  })();
</script>

Этот фрагмент JavaScript извлекает URL-адрес, который мы кэшировали в sessionStorage на 404.html страницу и заменяет текущую history вход с ним. Как вы решите обращаться с вещами отсюда, зависит от вас, но я бы использовал popstate и hashchange на твоем месте.

Ну, ребята, вот и все. А теперь отпразднуйте, написав несколько одностраничных приложений на GitHub Pages!

Эта статья является частью серии веб-разработок от технических евангелистов и инженеров Microsoft, посвященных практическому изучению JavaScript, проектам с открытым исходным кодом и передовым методам взаимодействия, включая браузер Microsoft Edge.

Мы рекомендуем вам проводить тестирование в разных браузерах и на разных устройствах (включая Microsoft Edge — браузер по умолчанию для Windows 10) с помощью бесплатных инструментов на сайте dev.microsoftedge.com, включая инструменты разработчика F12: семь отдельных, полностью документированных инструментов, которые помогут вам отлаживать, тестировать и ускорить ваши веб-страницы. Кроме того, посетите блог Edge, чтобы получать информацию от разработчиков и экспертов Microsoft.

Дальнейшее чтение на SmashingMag:

  • Простой рабочий процесс от разработки до развертывания
  • Создание полноценного веб-приложения в Foundation For Apps
  • Создайте блог с помощью Jekyll и GitHub Pages
Сокрушительная редакция
(ал, ил)



[ad_2]
Source: https://smashingmagazine.com

Заключение

Вы ознакомились с статьей — S(GH)PA: взлом одностраничного приложения для страниц GitHub

Пожалуйста оцените статью, и напишите комментарий.

Похожие статьи

Добавить комментарий

Ваш адрес email не будет опубликован.

Кнопка «Наверх»