Создание прогрессивно улучшенных веб-сайтов с использованием пуленепробиваемых преобразований Backbone и CSS

  1. Все дело в идее
  2. Подумаешь?
  3. Мой подход к пуленепробиваемой магистрали для сайтов
  4. Основы построения
  5. Приправить вещи
  6. Прогрессивные Переходы

Когда вы заканчиваете проект, у вас, как правило, гораздо более глубокое понимание проблем, связанных с проектом, чем в начале. Возможно, вы бы даже подошли к некоторым вещам совершенно по-другому. Вот почему вы должны проверить, нашли ли другие лучшие решения для проблем, с которыми вы столкнулись, независимо от того, можете ли вы что-то изменить в коде или нет.

Мы часто понимаем, что проблема не в том, что ответов там нет. Мы просто не задаем правильные вопросы . Разработка полезных продуктов и веб-сайтов означает полное понимание сложности под рукой и превращение ее в простое, доступное и легкое для понимания решение. Когда я разработал свой блог, я начал все заново ... Дважды.

Это довольно технический пост об уроках разработки моего блога с использованием HTML5 pushState, Backbone.js и CSS-преобразований. Цель состоит в том, чтобы постепенно улучшить взаимодействие с пользователем, не нанося вреда SEO и не испортив пользовательский опыт в старых браузерах.

Все дело в идее

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

читабельность был своего рода вдохновением. Я хотел получить список постов в блоге, которые извлекают статьи по запросу и плавно переходят в них, помня положение прокрутки на странице обзора.

Подумаешь?

Многие веб-сайты, использующие Backbone, имеют центральные страницы, которые управляют поведением всего веб-интерфейса. У вас может быть что-то вроде www.backbone-site.com/#/showPicture . Затем вы окажетесь на индексе, к которому подключен Маршрутизатор, который в конечном итоге вызывает метод showPicture.

Теперь в чем здесь проблема? Хотя это может работать для приложения, в котором вы инициализируете свои вещи в определенном файле, это поведение неэффективно для веб-сайтов (является ли хорошей идеей использовать магистраль для нормального веб-сайта, обсуждение ). Зачем? Потому что вы попадете на индекс сайтов, который основан на запуске метода Javascript для фактического отображения чего-либо (вы можете найти решение, чтобы избежать первоначальной выборки Вот , Но даже с этим, все еще намного лучше иметь ваши данные в DOM).

Мое решение должно решить эту проблему и сделать следующее:

  • Полностью работайте без JS и постепенно улучшайте работу , если доступны JS и pushState
  • Загружайте содержимое сразу, чтобы поисковые системы могли получить к ним доступ
  • Разрешить пользователям загружать контент напрямую, не отображая анимацию при загрузке
  • Записать данные инициализации в голову для создания экземпляров моделей

Я скоро узнаю, что этот подход имеет огромные преимущества. Например, я могу отключить прогрессивное улучшение для дрянных браузеров, и пользователи никогда не поймут, что они упускают.

Мой подход к пуленепробиваемой магистрали для сайтов

Дэн Седерхольм придумал термин пуленепробиваемый веб-дизайн , Среди прочего он хотел иметь формы, которые работают с AJAX, но возвращаются к нативному поведению HTML, если Javascript или объект XMLhttpRequest недоступны. Я хотел включить эту концепцию в свой блог.

Основы построения

Мы все знаем, как противный JS может участвовать в больших проектах. Несмотря на то, что это был небольшой проект, Backbone проделал невероятную работу благодаря своим универсальным возможностям, и я искренне считаю, что это одна из лучших вещей, которая случится с миром Javascript. В то время как моя первая версия основана на классической процедуре Backbone - то есть загрузка моделей в коллекцию при их создании и последующем рендеринге данных с помощью мощного движка шаблонов подчеркивания, - решение, которое теперь работает на сервере, намного проще. Я не буду вдаваться в подробности о том, как работает Backbone (если вы ищете это, проверьте Книга Адди Османи или учебники Джеффри Уэй на tutsplus .). Я начал разрабатывать два представления, даже не думая о бэкенде:

  • Просмотр сообщений в блоге
  • Просмотр статьи

Затем я включил их в мою тему WordPress. Все работало так, как вы ожидаете. Обычный блог с несколькими просматриваемыми статьями. Пока ничего особенного.

Приправить вещи

Пришло время добавить немного магии на этот сайт. Теперь мы рассмотрим те несколько строк кода, которые отвечают за пуленепробиваемую магистраль , кросс-браузерные преобразования CSS и pushState в HTML5 . Начнем с роутера:

var Router = Backbone.Router.extend ({initialize: function () {App.States.firstRun = true; $ ('a [class * = js-action]'). click (function (event) {event.preventDefault ( ); window.App.Routers.Main.navigate ($ (this) .attr ('href'), true);});}});

Строка 4 является интересной частью здесь. Мы предотвратим поведение привязки по умолчанию (перезагрузка страницы) для всех элементов с префиксом js-action в соответствии с JEM-нотация БЭМа и позвольте маршрутизатору обработать запрос. Затем мы сможем легко нацелить все якорные элементы, которые добавляют функциональность Javascript к приложению. После этого мы легко настраиваем HTML5 pushState, который не позволяет браузеру помещать хештег в URL:

Backbone.history.start ({'pushState': true});

Если сейчас щелкнуть URL-адрес с префиксом js , маршрутизатор вступит во владение и загрузит соответствующую статью. Если Javascript каким-то образом не загрузится, пользователи даже не заметят, и поисковые системы тоже не будут беспокоиться . Отличительной особенностью этого факта является то, что если вы перенаправляетесь с внешнего сайта на статью на этом сайте, вы сразу же увидите эту статью, в то время как меню асинхронно загружается в фоновом режиме. Вы можете попробовать это Вот ,

Прогрессивные Переходы

Теперь давайте посмотрим, как вы можете получить самые плавные переходы CSS, используя аппаратное ускорение в современных браузерах и возвращаясь к настройкам по умолчанию. движок рендеринга эффектов jQuery если браузер не поддерживает преобразования:

if (! $. support.transition) {$ .fn.transition = $ .fn.animate; }

То, что здесь происходит, довольно гладко. JQuery тесты для поддержки перехода. Если он доступен, он заменит библиотеку анимации по умолчанию и заменит ее на транзит полностью совместимая с браузером библиотека эффектов трансформации css, построенная на jQuery. Имейте в виду, однако, чтобы всегда анимировать значения x и y. Переходные поля никогда не дадут вам такой плавной анимации . Однако есть некоторые браузеры, которые не очень хорошо поддерживают x и y. Вы можете решить эту проблему, указав дескриптор afterFinish, который меняет значения translate3d на значения marginLeft после завершения перехода. Это даст вам еще больше преимуществ. Фиксированная позиция снова будет работать как положено (после использования translate3d она будет работать по-другому). Я не хочу сейчас углубляться, но следующий код довольно легко объясняет эту концепцию (строка 8-11):

SlideLeft: function () {var self = this; self. $ el.transition ({x: -this.dimensions.x,}, self.options.animationSpeed, (function () {App.States.side = true; self. $ el.css ({'transform': '', 'marginLeft': -self.dimensions.x});})); }

Вот и все. Есть много вещей, которые я до сих пор совершенствую здесь и там, и, конечно, есть еще несколько сложностей, но приведенный выше код в основном объясняет эту концепцию. Это действительно решение, которое плавно ухудшается, если JS или ключевые функции UX недоступны.

Спасибо за чтение, надеюсь, это было как-то понятно. Отзывы приветствуются @twitter ,

Подумаешь?
Теперь в чем здесь проблема?
Зачем?

Авторизация

Реклама

Реклама

Архив сайта

    Как путешествовать и зарабатывать деньги
    Согласились бы вы путешествовать в свое удовольствие по разным городам и странам и при этом зарабатывать? Наверняка многие ответят утвердительно. Если вы хотите начать зарабатывать, путешествуя, велкам!

    Сонник: путешествие, к чему снится путешествие — полное толкование снов
    Во время сна мы путешествуем по закоулкам своего подсознания. Нам снятся самые разные сны — цветные и черно-белые. Иной раз подумаешь, что приснившееся сновидение могло прийти только к алкоголику или

    10 Доступных способов путешествовать по миру бесплатно
    10 Доступных способов путешествовать по миру бесплатно Путешествия! Как много в этом слове! Путешествия — это мечта! И все это действительно так. Хотя наверняка сейчас найдется немало скептиков, которые

    10 способов путешествовать по миру бесплатно
    Пуууутешествия! Как много в этом слове! Радость новых впечатлений, яркость неизведанных эмоций и огромный восторг, который даже взрослых и серьезных людей способен превратить в искренних, радующихся свободе

    По миру без виз
    В мае завершился очередной сумасшедший проект профессионального путешественника и писателя Валерия Шанина: кругосветное путешествие, в ходе которого туристам ни разу не пришлось заходить в иностранные

    Можно ли беременным путешествовать?
    Вот оно, свершилось! Новость о скором пополнении в семье не только радует, но и порой заставляет кардинально поменять все планы на жизнь. И это понятно – будущая мамочка очень переживает о своем драгоценном

    Как позволить себе путешествовать по миру: советы
    Знаете ли вы, что вам не нужно иметь много денег или высокооплачиваемую работу, чтобы путешествовать. Некоторые люди не решаются отправиться в путешествие и лишают себя, возможно, самых эпических приключений

    5 сомнительных способов перемещаться во времени
    Эммет Браун утверждал, что достаточно разогнаться на "Делориане" , чтобы попасть и в прошлое, и в будущее. Хотя многие имеют дерзость не согласиться со светочем и предлагают свои теории. Впрочем, они

    Как путешествовать и зарабатывать деньги, или Творческий бизнес в дороге
    Наверняка многие ответят утвердительно. Но вот незадача: нет ни средств, ни возможности, ни даже идеи, как это можно воплотить в жизнь. Но отчаиваться рано: с последним пунктом поможет разобраться Дарья

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


Облако тегов