Статьи

Ratchet’s Push.Js — создание прототипов мобильных приложений с несколькими экранами

Ratchet — это фреймворк для быстрого создания мобильных приложений и прототипов с использованием простых компонентов HTML, CSS и JS. В моем последнем посте, Ratchet — Создание прототипов мобильных приложений. Мы с легкостью рассмотрели шаги для начала работы со средой Ratchet.

Мы также рассмотрели, как разместить на одном экране важные компоненты, такие как строка заголовка, табличные представления, шевроны, тоглз и рачиконы.

В этой статье мы узнаем, как создавать несколько экранов в одном приложении и загружать их с push.js скрипта Ratchet push.js

Что такое push.js?

push.js — это фрагмент кода JavaScript, который предварительно загружен в JS-файл Ratchet по умолчанию — ratchet.js . Там нет внешнего загружаемого файла, необходимого. Он соединяет различные HTML-страницы в приложении Ratchet через AJAX.

push.js прототипа push.js с поддержкой AJAX в прототипе мобильного приложения дает два больших преимущества: более быстрая интерактивность с сервером и ощущение одностраничного приложения .

Разработчики могут использовать Ratchet для создания мобильных приложений, а затем использовать такие программы, как PhoneGap, чтобы конвертировать их в приложения для iOS и Android. Следовательно, push.js может помочь разработчикам быстро получать данные с серверов и отображать их на экране.

Приложение

В этой статье мы собираемся создать приложение для подачи новостей, известное как « Мировые новости SitePoint ».

Я знаю, что его не существует, но было бы хорошо, если бы SitePoint рассмотрел его. 😉

Вот список функций, которые будет иметь это приложение.

  1. На домашнем экране будет размещен список новостей.
  2. Каждый новостной элемент будет связан с другим экраном для отображения новостной статьи.
  3. Возможность вернуться на домашний экран с помощью кнопки «Назад» в строке заголовка.
  4. Каждая новость может иметь экран настроек.
  5. Поповер для обмена новостями.

Помимо проверки использования push.js , мы также попробуем некоторые интересные функции, которые у него есть. Из всех перечисленных выше push.js будет использоваться только в функции № 2, то есть при загрузке другой страницы. Это может показаться простым и небольшим использованием push.js , но необходимо понять, что он делает.

Для первой функции мы будем использовать представление Ratchet Table с компонентом chevrons . Мы перечислим различные фиктивные новости со связанным изображением. Третья функция — добавление стрелки влево к значку верхней панели приложения со ссылкой на домашний экран.

Мы будем создавать модальный компонент для экрана настроек. Этот экран будет иметь табличное представление с переключателями компонентов для представления каждого элемента настройки.

Последняя функция, опция совместного использования, будет реализована с помощью поповерного компонента Ratchet.

Давайте начнем

Загрузите Ratchet с официального сайта goratchet.com . Извлеките его содержимое в рабочую папку и создайте в нем новый файл с именем index.html . Или загрузите окончательный код с github . Эта страница будет первым экраном нашего приложения.

Далее нам нужно поместить рекомендованную разметку HTML Ratchet внутри этой HTML-страницы. Если вы не помните важные метатеги и базовую структуру HTML-страницы с трещоткой, вы всегда можете найти их здесь .

Страница index.html должна теперь содержать следующую разметку:

 <!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title>SitePoint's World News</title> <!-- Sets initial viewport load and disables zooming --> <meta name="viewport" content="initial-scale=1, maximum-scale=1, user-scalable=no, minimal-ui"> <!-- Makes your prototype chrome-less once bookmarked to your phone's home screen --> <meta name="apple-mobile-web-app-capable" content="yes"> <meta name="apple-mobile-web-app-status-bar-style" content="black"> <meta name="mobile-web-app-capable" content="yes"> <!-- Include the compiled Ratchet CSS --> <link href="css/ratchet.css" rel="stylesheet"> <!-- Include the compiled Ratchet JS --> <script src="js/ratchet.js"></script> </head> <body> <header class="bar bar-nav"> <h1 class="title">SitePoint's World News</h1> </header> <div class="content"> </div> </body> </html> 

Я изменил заголовок страницы на Мировые новости SitePoint и удалил весь контент, который был внутри div .content в базовом шаблоне.

Как обсуждалось в моей предыдущей статье о Ratchet, каждая страница Ratchet должна иметь два важных компонента: верхняя панель и раздел содержимого .

Верхняя строка должна быть элементом <header> с классами: .bar и .bar-nav тогда как в разделе содержимого должен быть класс .content .

Обратитесь к моей предыдущей статье, чтобы узнать, как запустить приложение Ratchet. Существуют различные варианты.

Наша цель — заполнить раздел контента фиктивным новостным контентом. Я бесстыдно взял некоторые новости со страницы новостей Google, чтобы придать приложению реалистичный вид.

Для создания списка новостей мы будем использовать HTML-компонент Ratchet «Представление таблицы с шевронами». Итак, давайте продолжим и разместим следующую разметку внутри .content div.

 <div class="card"> <ul class="table-view"> <li class="table-view-cell"> <a class="navigate-right" href="#"> Nintendo apologises for lack of virtual equality </a> </li> <li class="table-view-cell"> <a class="navigate-right" href="#"> New Surface Pro reportedly debuting alongside Surface mini </a> </li> <li class="table-view-cell"> <a class="navigate-right" href="#"> Microsoft share price: Software giant announces Office Mix </a> </li> <li class="table-view-cell"> <a class="navigate-right" href="#"> Snapchat Settles FTC Charges That It Misled Users About Disappearing Photo ... </a> </li> <li class="table-view-cell"> <a class="navigate-right" href="#"> Apple Loop: Beats and Earbuds, Nokia's Imaging Brains And US Legal ... </a> </li> <li class="table-view-cell"> <a class="navigate-right" href="#"> Fed court overturns Oracle v. Google Java API copyright decision </a> </li> <li class="table-view-cell"> <a class="navigate-right" href="#"> Say goodbye to Facebook's Poke and Camera </a> </li> <li class="table-view-cell"> <a class="navigate-right" href="#"> Ford recalls Escape, C-Max and more vehicles to fix safety issues </a> </li> <li class="table-view-cell"> <a class="navigate-right" href="#"> Chrysler recalls 780000 minivans over window switch </a> </li> </ul> </div> 

.table-view представление является элементом <ul> с .table-view . Каждый элемент <li> в табличном представлении должен иметь класс .table-view-cell . Здесь я использовал элемент <a> с классом .navigate-right для каждого элемента новостей. Класс .navigate-right выводит стрелку вправо с правой стороны каждого .table-view-cell .

Наш экран до сих пор должен выглядеть так:

Предварительный просмотр приложения

Это почти готово. Нам нужно поместить изображение элемента рядом с каждым элементом. Этот элемент изображения должен быть размещен внутри каждого элемента <a> для представления соответствующего изображения новостей. Вот наценка за изображение:

 <img class="media-object pull-left" src="images/img1.jpeg"> 

Изображение должно иметь media-object класса, чтобы идентифицировать его как медиа-компонент Ratchet. Я использовал класс .pull-left чтобы .pull-left изображение по заголовку новостей. Идите вперед и поместите тег изображения внутри каждого элемента в вашей разметке. Мы должны получить экран, который выглядит как ниже.

Второй экран приложения

Теперь пришло время создать еще одну HTML-страницу, которая будет использоваться для отображения полной новостной статьи. Создайте другой файл в той же рабочей папке с именем article.html .

На этой странице мы разместим тот же базовый шаблон HTML от Ratchet. Итак, разметка article.html должна быть:

 <!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title>Post's Title</title> <!-- Sets initial viewport load and disables zooming --> <meta name="viewport" content="initial-scale=1, maximum-scale=1, user-scalable=no, minimal-ui"> <!-- Makes your prototype chrome-less once bookmarked to your phone's home screen --> <meta name="apple-mobile-web-app-capable" content="yes"> <meta name="apple-mobile-web-app-status-bar-style" content="black"> <meta name="mobile-web-app-capable" content="yes"> <!-- Include the compiled Ratchet CSS --> <link href="css/ratchet.css" rel="stylesheet"> <!-- Include the compiled Ratchet JS --> <script src="js/ratchet.js"></script> </head> <body> <header class="bar bar-nav"> <a class="icon icon-left-nav pull-left" href="index.html"></a> <h1 class="title">Post's Title</h1> </header> <div class="content"> </div> </body> </html> 

Все выглядит одинаково, за исключением дополнительной ссылки в элементе <header> . Я использовал Ratchicons Ratchet, чтобы создать левую иконку внутри верхней панели. Этот значок генерируется с использованием классов .icon и .icon-left-nav . Дополнительный класс .pull-left используется, чтобы поместить значок в .pull-left часть верхней панели. Поскольку этот значок является элементом ссылки, давайте поместим index.html качестве его цели. Следовательно, всякий раз, когда на него нажимают, мы возвращаемся на домашний экран.

Давайте поместим некоторый контент в .content div для представления статьи.

 

Класс .content-padded используется для создания некоторого отступа между экраном и содержимым. Я поместил изображение, представляющее новость, заголовок новости с использованием <h1> и некоторый фиктивный текст с использованием нескольких тегов <p> для представления содержимого новости.

article.html должен выглядеть ниже.

Страница статьи приложения

Теперь, когда у нас есть 2 готовых страницы, давайте свяжем их. Здесь мы на самом деле будем использовать функциональность push.js

Снова откройте index.html . Мы изменим значение атрибута href первого элемента новостей на article.html . По умолчанию все ссылки в приложениях Ratchet являются push.js с поддержкой push.js Это означает, что они будут получены с использованием AJAX.

Храповик ищет .bar и .content как на текущей странице, так и на новой странице. Затем он обновляет эти div на старой странице с содержанием новой страницы. Следовательно, все, что находится за пределами .bar и .content на вновь .content странице, будет игнорироваться.

В нашем случае он обновит верхнюю панель заголовка и .content div страницы index.html содержимым соответствующих компонентов страницы article.html . Следовательно, мы увидим обновленную верхнюю панель и новостную статью вместо списка новостных элементов.

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

Давайте добавим несколько переходов при смене экрана через push.js Переходы применяются к приложению путем добавления пользовательского атрибута data-transition к элементам ссылки <a> . Этот атрибут принимает три различных значения: fade , slide-in или slide-out . Давайте добавим эффект slide-in к первому элементу новостей на домашнем экране, как показано ниже:

 <a class="navigate-right" href="two.html" data-transition="slide-in"> <img class="media-object pull-left" src="images/img1.jpeg"> Nintendo apologises for lack of virtual equality </a> 

Также добавьте эффект article.html к кнопке «Назад» на странице article.html .

 <a class="icon icon-left-nav pull-left" href="index.html" data-transition="slide-out"></a> 

Вперед и снова запустите ваше приложение. Вы должны увидеть эффект скольжения при получении новой страницы и эффект скольжения при возврате назад. Эти эффекты могут немного отличаться в зависимости от темы, включенной в приложение Ratchet. Переход с платформы iOS применяется при использовании темы iOS, а переход с платформы Android — в теме Android.

Вот и все. Наше приложение почти готово с основными функциями. Есть еще 2 функции, которые необходимо реализовать: параметры общего доступа и экран настроек в новостной статье. Поскольку эти параметры будут доступны только на втором экране, мы создадим их внутри article.html .

Параметр обмена — это всплывающее окно, отображаемое в верхней панели с длинным списком параметров социальных сетей. Мы будем использовать попсовый компонент Ratchet для его создания. Давайте снова article.html . Разметка для компонента popover выглядит следующим образом:

 <div id="popover" class="popover"> <header class="bar bar-nav"> <h1 class="title">Share this</h1> </header> <ul class="table-view"> <li class="table-view-cell">Facebook</li> <li class="table-view-cell">WhatsApp</li> <li class="table-view-cell">Google+</li> <li class="table-view-cell">Tweet</li> <li class="table-view-cell">Pinterest</li> <li class="table-view-cell">Reddit</li> <li class="table-view-cell">Pocket</li> <li class="table-view-cell">Email</li> </ul> 

Каждый поповер должен иметь заголовок и часть тела. Заголовок используется, чтобы дать название поповеру. Как и в верхней панели приложения, этот заголовок также должен иметь классы: .bar и .bar-nav . Далее мы будем использовать компонент Ratchet для просмотра таблиц, чтобы вывести список сетей общего доступа. Здесь возникает самый большой вопрос! Где я должен разместить разметку этого поповера?

Как указано выше, поскольку article.html будет извлечен с использованием push.js будет push.js только содержимое, присутствующее внутри верхней панели, и .content div. Следовательно, указанная выше разметка popover должна быть размещена чуть выше </div> от .content div.

Поповеры являются одним из скрытых компонентов Ratchet. Это означает, что они будут видны только при срабатывании. Следовательно, нам нужен обработчик, который будет запускать всплывающее окно.

Поместите значок общего доступа рядом с заголовком статьи в компонент <header> article.html . Этот значок будет нашим обработчиком для запуска поповера. Разметка для верхней панели article.html теперь должна быть:

 <header class="bar bar-nav"> <a class="icon icon-left-nav pull-left" href="index.html" data-transition="slide-out"></a> <h1 class="title">Nintendo apologises <a class="icon icon-share" href="#popover"></a></h1> 

Атрибут href обработчика должен содержать идентификатор целевого всплывающего окна. Здесь значение #popover . Значок общего доступа — это Ratchicon, отображаемый с помощью icon классов и icon-share общего доступа. Давайте посмотрим, как это работает в нашем приложении. Это должно выглядеть как ниже.

Поделиться всплывающим

Удивительный! Не так ли? Нам не нужно было писать ни одной строки CSS и JS для этого поповера. Слава команде Ratchet.

Пришло время создать экран настроек. Этот экран будет модальным трещоткой. Как и всплывающие окна, модалы по умолчанию также невидимы. Они должны быть вызваны, чтобы сделать их видимыми. Давайте создадим плавающую нижнюю панель на экране article.html . Мы поместим значок настроек в него, который будет обработчиком для запуска модального экрана.

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

 <div class="bar bar-standard bar-footer"> <a class="icon icon-gear pull-right" href="#myModalexample"></a> 

Плавающие бары видны по умолчанию. Я поместил значок шестеренки для представления кнопки настроек. Его атрибут ‘ href содержит идентификатор модального компонента, который скоро будет создан. Экран article.html теперь будет выглядеть так:

Добавление изображения на нашу страницу статьи

Разметка для модального компонента выглядит следующим образом:

 <div id="myModalexample" class="modal"> <header class="bar bar-nav"> <a class="icon icon-close pull-right" href="#myModalexample"></a> <h1 class="title">Settings</h1> </header> <div class="content"> <ul class="table-view"> <li class="table-view-cell"> Don't show such articles <div class="toggle"> <div class="toggle-handle"></div> </div> </li> <li class="table-view-cell"> Lorem Ipsum Setting 1 <div class="toggle active"> <div class="toggle-handle"></div> </div> </li> <li class="table-view-cell"> Lorem Ipsum Setting 2 <div class="toggle"> <div class="toggle-handle"></div> </div> </li> </ul> </div> 

Как и у компонента popover, модал также имеет область заголовка и область .content . Область заголовка используется, чтобы дать название модалу. В области содержимого я использовал компонент Ratchet «Представление таблицы с переключателями». Следовательно, пользователь может переключать определенный элемент настроек в соответствии со своими требованиями.

Модальный экран выглядит следующим образом:

Настройки всплывающие

Разметка для модального компонента также должна быть размещена внутри .content div страницы .content .

Предотвращение push.js

Если вы хотите, чтобы некоторые ссылки в вашем приложении не использовали push.js , вы можете использовать настраиваемый атрибут data-ignore со значением как push в таких элементах ссылки.

Например:

 <a href="http://www.sitepoint.com" data-ignore="push">SitePoint<a> 

Приведенная выше ссылка перенаправит вас из приложения на целевой URL.

Вывод

Наконец, у нас есть базовое приложение для подачи новостей с использованием Ratchet. Он имеет функции, которые обычно встречаются в большинстве родных приложений. Мы смогли создать приложение с высокой точностью воспроизведения, просто используя технологии HTML, CSS и JS. Если этот прототип интегрирован с использованием фреймворков, таких как PhoneGap, он может стать полноценным гибридным приложением и использоваться с устройствами iOS и Android как собственное приложение.

Надеюсь, вам понравилось создание этого фиктивного приложения так же, как и я. Я с нетерпением жду расширения возможностей таких приложений с использованием AngularJS, ExpressJS и MongoDB и превращения их в полнофункциональное приложение. Если у вас есть какие-либо вопросы, связанные с этой темой, вы можете написать мне в Твиттере напрямую, используя мой твиттер ( @fazlerocks ), или оставить комментарий ниже. Я буду рад ответить на них.