SlideShare ist ein Scribd-Unternehmen logo
1 von 21
Downloaden Sie, um offline zu lesen
РАЗРАБОТКА
ПРИЛОЖЕНИЙ ПОД
МОБИЛЬНЫЕ БРАУЗЕРЫ


Павел Юрийчук, Ciklum
Обо мне
Краткая биография
● Начинал с Flex 3 & Action Script
● Продолжил с браузерными игрушками
   под iPhone & iPad
● Сейчас делаю приложения для браузеров
   под смартфоны
Как найти
{ Skype : "pavlo_yuriychuck",
  Email : "pluccky@gmail.com",
  Twitter : "@pavlo_yuriychuk" }
Приложение для браузера?

● Приложение !== Мобильная
  Версия Сайта
● В приложении реализована бизнес
  логика, которая выполняется как на
  клиентской, так и на серверной части
● Слой представления формируется на
  клиенте
● Хранение данных на стороне клиента
● Не надо устанавливать
Особенности мобильных
браузеров
● Хорошая поддержка HTML5 в целом, но
  один и тот же API работает по разному на
  разных платформах
● Медленный JavaScript
● Фиксированный размер окна браузера
● Touch-events
● Качество шрифтов не так заметно как на
  десктопе
● Запросы не кешируются, если об этом не
  указать с помощью cache manifest
● Графическое ускорение CSS3 - не всегда
Как (не) надо, сервер
● Веб приложения имеют собственные
  требования к серверной части, их
  нельзя игнорировать
  ○   JSON & JSON-P
  ○   REST
  ○   CORS - cross-origin-resource-sharing
  ○   Valid Content-Type
  ○   CDN - content delivery network
● API
  ○ XMLHttpRequest
  ○ iFrame
● Баннеры и трекинговые системы
Почему ?
● На организацию работы с унаследованым
  back-end уходит большая часть Front-end
  работы
● Необходимо разбираться с Back-end
  кодом и особенностями его работы
● Отвлекает от насущных проблем
● Стабильность работы
● Код полон заплаток которые не
  сработают во время рефакоринга
  серверной части
Подготовка
● Автоматизированные сборки, пусть даже
  в самом зачаточном виде
● Дизайнеры, художники и взаимодействие
  с ними
● Тестовый сервер
● Coding guidelines
● Исследование фреймворков и библиотек:
  ○ Код
  ○ Документация
  ○ Поддержка
  ○ Цена
Потом
● Code-review - без комментариев
● Unit-testing - когда стабилизируется
  архитектура
● Регулярные теги для билдов
● Рефакторинг - планируйте и назначайте
  цели
Прототип мобильного приложения
● Основа - MVC фреймворк, все зависит от
  требований к приложению. Backbone - хороший
  выбор но не единственный
● Библиотека для DOM, AJAX, etc - jQuery, можно
  Zepto.JS, если подойдет
● Библиотека для шаблонизации - Underscore.JS,
  Mustache.JS, больше нв http://microjs.com
● Плагины и/или библиотеки для работы с WebStorage
  / WebSQL / IndexDB
● Модульность - Require.JS
Backbone
● Backbone - хорошая документация, много
  примеров, свобода выбора для
  реализации
● Сложно писать большие приложения
● Адаптация под не REST сервера не
  тривиальна
● Мало идет "с коробки"
● Альтеранатив много: Knockout.JS,
  Angular.JS, Ember.JS
jQuery vs Zepto.JS
● Zepto - молодая, хороший код, не
  стабильна, маленькая, только
  современные браузеры, модульная
● jQuery - модульная, стабильная,
  уменьшение размера за счет собственных
  сборок
Zepto.JS
● Совместима с jQuery только на
  повехностном уровне
● Не все анимации работают правильно
● Events: on/off
● $ не работает для XMLDocument
● $ не все селекторы, querySelector,
  querySelectorAll
● Хороша для старта (размер!)
XML как с ним быть
● jQuery selectors
  ○ Шелковый путь
● SAX
  ○ http://code.google.com/p/jssaxparser/
  ○ https://github.com/isaacs/sax-js
● XPath
  ○ http://www.nczonline.net/blog/2009/03/17/xpath-in-
    javascript-part-1/ - в 10 раз быстрее на iOS, на
    Android - нету совсем.
● DOM API
  ○ Путь для джедаев, хорош, когда все остальные
    исчепаны
Как хранить данные на клиенте
● WebSQL
  ○ медленная
  ○ не стабильна
  ○ почти на всех браузерах
● LocalStorage & SessionStorage
  ○   Key-Value
  ○   Быстрая, до 10мс на выборку или запись
  ○   Везде работает
  ○   Нету в Private Mode
● IndexDB
  ○ NoSQL
  ○ API богаче чем WebSQL & WebStorage
  ○ не везде есть
Шаблоны underscore
● Цель - превращение JSON в HTML
● Компилирует фуцнкцию по заданой
  разметке.
● Можно использовать управляющие
  структуры - циклы, условия
● Невозможны вложенные шаблоны
● Как хранить шаблоны - додумываем сами
Сага об ускорении загрузки ч.1
1. CORS - Accept Access Allow Origin
2. Переход от WebSQL -> WebStorage -
   надежнее и быстрее
3. Builder & Placeholders & Inheritance -
   унификация кода DRY
4. ViewPort & inview - хорошо действует для
   активных елементов а-ля виджеты
Сага об ускорении загрузки ч.2
1. XML to JSON - да да и еще раз да
2. Bootstrapping - чем меньше запросов
   тем лучше
3. Requests Merging - несколько запросов
   можно объединить в один
4. Embedding Assets - Base64
HTML5
● CSS3 3d Transformations
  ○ На iOS быстрее чем Javascript
● Audio Object
  ○ Два потока на iOS, загрузка с секундной
    задержкой, решение аудиоспрайты - http:
    //remysharp.com/2010/12/23/audio-sprites/
● Video Object
  ○ На iOS & Android работают совершенно по
    разному
● WebStorage
● Шрифты - shadow, outline, blur
HTML5
● CSS Sprites - да, но есть ограничение на
  iPhone 3, размер <= 1024 x 1024 x 32
● Теги для семантики - да
● Canvas - да, для небольших размеров,
  быстрее на Android
● Ресурсы:
  ○   http://html5doctor.com/
  ○   http://diveinto.html5doctor.com/
  ○   https://developer.mozilla.org/en-US/docs/JavaScript
  ○   https://developer.apple.com/devcenter/safari/index.
      action
Плюшки
●   Организация LocalStorage
    ○ https://github.com/jeromegn/Backbone.localStorage
    ○ https://github.com/knadh/localStorageDB
    ○ http://www.taffydb.com/
●   Локализация http://momentjs.com/
●   Автоматизация билдов
    ○ Grunt.JS
    ○ Require.JS - R.js
    ○ ANT
●   Игры http://www.limejs.com/
Вопросы?

Weitere ähnliche Inhalte

Was ist angesagt?

Современный фронтенд за 30 минут.
Современный фронтенд за 30 минут.Современный фронтенд за 30 минут.
Современный фронтенд за 30 минут.Vladimir Malyk
 
Yarfrontend #2. Как мы делали гуя...
Yarfrontend #2. Как мы делали гуя...Yarfrontend #2. Как мы делали гуя...
Yarfrontend #2. Как мы делали гуя...oelifantiev
 
State of the Standardized Web
State of the Standardized WebState of the Standardized Web
State of the Standardized WebYandex
 
Разработка небольшого проекта c BEM и node.js — Сергей Пузанков
Разработка небольшого проекта c BEM и node.js — Сергей ПузанковРазработка небольшого проекта c BEM и node.js — Сергей Пузанков
Разработка небольшого проекта c BEM и node.js — Сергей ПузанковYandex
 
State of the Standardized Web. YaC 2014
State of theStandardized Web. YaC 2014State of theStandardized Web. YaC 2014
State of the Standardized Web. YaC 2014Yandex
 
Компонентная разработка на Stylus, Jade, Typescript - Леонид Ширманов
Компонентная разработка на Stylus, Jade, Typescript - Леонид ШирмановКомпонентная разработка на Stylus, Jade, Typescript - Леонид Ширманов
Компонентная разработка на Stylus, Jade, Typescript - Леонид ШирмановMoscowJS
 
Unity: WebGL и IL2CPP — будущее скриптинга в Unity»
Unity: WebGL и IL2CPP — будущее скриптинга в Unity»Unity: WebGL и IL2CPP — будущее скриптинга в Unity»
Unity: WebGL и IL2CPP — будущее скриптинга в Unity»DevGAMM Conference
 
Бэкенд, фронтенд — всё смешалось (nodkz)
Бэкенд, фронтенд — всё смешалось (nodkz)Бэкенд, фронтенд — всё смешалось (nodkz)
Бэкенд, фронтенд — всё смешалось (nodkz)Pavel Chertorogov
 
Обучение фронтенд разработке
Обучение фронтенд разработкеОбучение фронтенд разработке
Обучение фронтенд разработкеITCrowd Almaty
 
Frontendlab: Cравнить Несравнимое - Юлия Пучнина
Frontendlab: Cравнить Несравнимое  - Юлия ПучнинаFrontendlab: Cравнить Несравнимое  - Юлия Пучнина
Frontendlab: Cравнить Несравнимое - Юлия ПучнинаGeeksLab Odessa
 
Javascript frameworks
Javascript frameworksJavascript frameworks
Javascript frameworkssigmaray
 
JavaScript завтра / Сергей Рубанов (Exante Limited)
JavaScript завтра / Сергей Рубанов  (Exante Limited)JavaScript завтра / Сергей Рубанов  (Exante Limited)
JavaScript завтра / Сергей Рубанов (Exante Limited)Ontico
 
Serge P Nekoval Grails
Serge P  Nekoval  GrailsSerge P  Nekoval  Grails
Serge P Nekoval Grailsguest092df8
 
nw.js введение в кросс-платформенные десктопные приложения на javascript (mo...
nw.js  введение в кросс-платформенные десктопные приложения на javascript (mo...nw.js  введение в кросс-платформенные десктопные приложения на javascript (mo...
nw.js введение в кросс-платформенные десктопные приложения на javascript (mo...Kirill Danilov
 
Игорь Лабутин «Продвинутое использование NuGet и MSBuild»
Игорь Лабутин «Продвинутое использование NuGet и MSBuild»Игорь Лабутин «Продвинутое использование NuGet и MSBuild»
Игорь Лабутин «Продвинутое использование NuGet и MSBuild»SpbDotNet Community
 
«Организация Frontend-разработки на крупном проекте» — Дмитрий Кузнецов
«Организация Frontend-разработки на крупном проекте» — Дмитрий Кузнецов«Организация Frontend-разработки на крупном проекте» — Дмитрий Кузнецов
«Организация Frontend-разработки на крупном проекте» — Дмитрий Кузнецов2ГИС Технологии
 
Будущее шаблонизаторов
Будущее шаблонизаторовБудущее шаблонизаторов
Будущее шаблонизаторовAlexey Ivanov
 
JSLab. Дмитрий Смолин, Дмитрий Филипенко. "React и Webpack с помощью кирки, л...
JSLab. Дмитрий Смолин, Дмитрий Филипенко. "React и Webpack с помощью кирки, л...JSLab. Дмитрий Смолин, Дмитрий Филипенко. "React и Webpack с помощью кирки, л...
JSLab. Дмитрий Смолин, Дмитрий Филипенко. "React и Webpack с помощью кирки, л...GeeksLab Odessa
 

Was ist angesagt? (20)

Современный фронтенд за 30 минут.
Современный фронтенд за 30 минут.Современный фронтенд за 30 минут.
Современный фронтенд за 30 минут.
 
Yarfrontend #2. Как мы делали гуя...
Yarfrontend #2. Как мы делали гуя...Yarfrontend #2. Как мы делали гуя...
Yarfrontend #2. Как мы делали гуя...
 
State of the Standardized Web
State of the Standardized WebState of the Standardized Web
State of the Standardized Web
 
Разработка небольшого проекта c BEM и node.js — Сергей Пузанков
Разработка небольшого проекта c BEM и node.js — Сергей ПузанковРазработка небольшого проекта c BEM и node.js — Сергей Пузанков
Разработка небольшого проекта c BEM и node.js — Сергей Пузанков
 
State of the Standardized Web. YaC 2014
State of theStandardized Web. YaC 2014State of theStandardized Web. YaC 2014
State of the Standardized Web. YaC 2014
 
Компонентная разработка на Stylus, Jade, Typescript - Леонид Ширманов
Компонентная разработка на Stylus, Jade, Typescript - Леонид ШирмановКомпонентная разработка на Stylus, Jade, Typescript - Леонид Ширманов
Компонентная разработка на Stylus, Jade, Typescript - Леонид Ширманов
 
Unity: WebGL и IL2CPP — будущее скриптинга в Unity»
Unity: WebGL и IL2CPP — будущее скриптинга в Unity»Unity: WebGL и IL2CPP — будущее скриптинга в Unity»
Unity: WebGL и IL2CPP — будущее скриптинга в Unity»
 
Бэкенд, фронтенд — всё смешалось (nodkz)
Бэкенд, фронтенд — всё смешалось (nodkz)Бэкенд, фронтенд — всё смешалось (nodkz)
Бэкенд, фронтенд — всё смешалось (nodkz)
 
Обучение фронтенд разработке
Обучение фронтенд разработкеОбучение фронтенд разработке
Обучение фронтенд разработке
 
Frontendlab: Cравнить Несравнимое - Юлия Пучнина
Frontendlab: Cравнить Несравнимое  - Юлия ПучнинаFrontendlab: Cравнить Несравнимое  - Юлия Пучнина
Frontendlab: Cравнить Несравнимое - Юлия Пучнина
 
Javascript frameworks
Javascript frameworksJavascript frameworks
Javascript frameworks
 
JavaScript завтра / Сергей Рубанов (Exante Limited)
JavaScript завтра / Сергей Рубанов  (Exante Limited)JavaScript завтра / Сергей Рубанов  (Exante Limited)
JavaScript завтра / Сергей Рубанов (Exante Limited)
 
Serge P Nekoval Grails
Serge P  Nekoval  GrailsSerge P  Nekoval  Grails
Serge P Nekoval Grails
 
nw.js введение в кросс-платформенные десктопные приложения на javascript (mo...
nw.js  введение в кросс-платформенные десктопные приложения на javascript (mo...nw.js  введение в кросс-платформенные десктопные приложения на javascript (mo...
nw.js введение в кросс-платформенные десктопные приложения на javascript (mo...
 
Kothic JS - Web Browser Crash Test
Kothic JS - Web Browser Crash TestKothic JS - Web Browser Crash Test
Kothic JS - Web Browser Crash Test
 
Игорь Лабутин «Продвинутое использование NuGet и MSBuild»
Игорь Лабутин «Продвинутое использование NuGet и MSBuild»Игорь Лабутин «Продвинутое использование NuGet и MSBuild»
Игорь Лабутин «Продвинутое использование NuGet и MSBuild»
 
«Организация Frontend-разработки на крупном проекте» — Дмитрий Кузнецов
«Организация Frontend-разработки на крупном проекте» — Дмитрий Кузнецов«Организация Frontend-разработки на крупном проекте» — Дмитрий Кузнецов
«Организация Frontend-разработки на крупном проекте» — Дмитрий Кузнецов
 
Будущее шаблонизаторов
Будущее шаблонизаторовБудущее шаблонизаторов
Будущее шаблонизаторов
 
Background js
Background jsBackground js
Background js
 
JSLab. Дмитрий Смолин, Дмитрий Филипенко. "React и Webpack с помощью кирки, л...
JSLab. Дмитрий Смолин, Дмитрий Филипенко. "React и Webpack с помощью кирки, л...JSLab. Дмитрий Смолин, Дмитрий Филипенко. "React и Webpack с помощью кирки, л...
JSLab. Дмитрий Смолин, Дмитрий Филипенко. "React и Webpack с помощью кирки, л...
 

Ähnlich wie Павел Юрийчук - Разработка приложений под мобильные браузеры

Разработка API для большого, нагруженного сервиса
Разработка API для большого, нагруженного сервисаРазработка API для большого, нагруженного сервиса
Разработка API для большого, нагруженного сервисаITCrowd Almaty
 
Разработка API для большого, нагруженного сервиса
Разработка API для большого, нагруженного сервисаРазработка API для большого, нагруженного сервиса
Разработка API для большого, нагруженного сервисаendeveit
 
CodeFest 2014. Каплуновский Б. — Использование асинхронного I/O для снижения ...
CodeFest 2014. Каплуновский Б. — Использование асинхронного I/O для снижения ...CodeFest 2014. Каплуновский Б. — Использование асинхронного I/O для снижения ...
CodeFest 2014. Каплуновский Б. — Использование асинхронного I/O для снижения ...CodeFest
 
Простая и дешёвая бизнес-аналитика на базе Google BigQuery / Алексей Паршуков...
Простая и дешёвая бизнес-аналитика на базе Google BigQuery / Алексей Паршуков...Простая и дешёвая бизнес-аналитика на базе Google BigQuery / Алексей Паршуков...
Простая и дешёвая бизнес-аналитика на базе Google BigQuery / Алексей Паршуков...Ontico
 
PUG #9 at OWOX: Поиск узких мест в приложении на PHP
PUG #9 at OWOX: Поиск узких мест в приложении на PHP                PUG #9 at OWOX: Поиск узких мест в приложении на PHP
PUG #9 at OWOX: Поиск узких мест в приложении на PHP Анна Магас
 
Разработка мобильных приложений на HTML5
Разработка мобильных приложений на HTML5Разработка мобильных приложений на HTML5
Разработка мобильных приложений на HTML5DevDay
 
Денис Чистяков — JavaScript на фронте и в тылу
Денис Чистяков — JavaScript на фронте и в тылуДенис Чистяков — JavaScript на фронте и в тылу
Денис Чистяков — JavaScript на фронте и в тылуYandex
 
Говорим о СУБД языком HR
Говорим о СУБД языком HRГоворим о СУБД языком HR
Говорим о СУБД языком HRKonstantin Osipov
 
специализированные http-демона (Сергей Боченков, Александр Панков)
специализированные http-демона (Сергей Боченков, Александр Панков)специализированные http-демона (Сергей Боченков, Александр Панков)
специализированные http-демона (Сергей Боченков, Александр Панков)Ontico
 
И снова разработка под iOS. Павел Тайкало
И снова разработка под iOS. Павел ТайкалоИ снова разработка под iOS. Павел Тайкало
И снова разработка под iOS. Павел ТайкалоStanfy
 
Создаем Drupal дистрибутив: от идеи до сопровождения.
Создаем Drupal дистрибутив: от идеи до сопровождения.Создаем Drupal дистрибутив: от идеи до сопровождения.
Создаем Drupal дистрибутив: от идеи до сопровождения.DrupalForumZP2012
 
#MBLTdev: Практический пример переиспользования кода. Как повысить качество и...
#MBLTdev: Практический пример переиспользования кода. Как повысить качество и...#MBLTdev: Практический пример переиспользования кода. Как повысить качество и...
#MBLTdev: Практический пример переиспользования кода. Как повысить качество и...e-Legion
 
Какой фреймворк нам нужен для Web? Денис Цыплаков
Какой фреймворк нам нужен для Web? Денис ЦыплаковКакой фреймворк нам нужен для Web? Денис Цыплаков
Какой фреймворк нам нужен для Web? Денис ЦыплаковAlex Tumanoff
 
Angular into drupal integration - Eugene Mickhnitskyy & Dmitriy Petruk
Angular into drupal integration - Eugene Mickhnitskyy & Dmitriy PetrukAngular into drupal integration - Eugene Mickhnitskyy & Dmitriy Petruk
Angular into drupal integration - Eugene Mickhnitskyy & Dmitriy PetrukDrupalCamp Kyiv
 
Как hh.ru дошли до 500 релизов в квартал без потери в качестве
Как hh.ru дошли до 500 релизов в квартал без потери в качествеКак hh.ru дошли до 500 релизов в квартал без потери в качестве
Как hh.ru дошли до 500 релизов в квартал без потери в качествеSQALab
 
Бэкенд, Фронтенд — всё смешалось. Обзорная экскурсия в будущее веб-разработки
Бэкенд, Фронтенд — всё смешалось. Обзорная экскурсия в будущее веб-разработкиБэкенд, Фронтенд — всё смешалось. Обзорная экскурсия в будущее веб-разработки
Бэкенд, Фронтенд — всё смешалось. Обзорная экскурсия в будущее веб-разработкиITCrowd Almaty
 
Разработка сложного мультимедийного приложения на JavaScript+HTML5 и PhoneGap...
Разработка сложного мультимедийного приложения на JavaScript+HTML5 и PhoneGap...Разработка сложного мультимедийного приложения на JavaScript+HTML5 и PhoneGap...
Разработка сложного мультимедийного приложения на JavaScript+HTML5 и PhoneGap...Ontico
 
Оптимизация JavaScript в Drupal
Оптимизация JavaScript в DrupalОптимизация JavaScript в Drupal
Оптимизация JavaScript в DrupalVlad Savitsky
 

Ähnlich wie Павел Юрийчук - Разработка приложений под мобильные браузеры (20)

Разработка API для большого, нагруженного сервиса
Разработка API для большого, нагруженного сервисаРазработка API для большого, нагруженного сервиса
Разработка API для большого, нагруженного сервиса
 
Разработка API для большого, нагруженного сервиса
Разработка API для большого, нагруженного сервисаРазработка API для большого, нагруженного сервиса
Разработка API для большого, нагруженного сервиса
 
CodeFest 2014. Каплуновский Б. — Использование асинхронного I/O для снижения ...
CodeFest 2014. Каплуновский Б. — Использование асинхронного I/O для снижения ...CodeFest 2014. Каплуновский Б. — Использование асинхронного I/O для снижения ...
CodeFest 2014. Каплуновский Б. — Использование асинхронного I/O для снижения ...
 
Простая и дешёвая бизнес-аналитика на базе Google BigQuery / Алексей Паршуков...
Простая и дешёвая бизнес-аналитика на базе Google BigQuery / Алексей Паршуков...Простая и дешёвая бизнес-аналитика на базе Google BigQuery / Алексей Паршуков...
Простая и дешёвая бизнес-аналитика на базе Google BigQuery / Алексей Паршуков...
 
Lime.JS
Lime.JSLime.JS
Lime.JS
 
PUG #9 at OWOX: Поиск узких мест в приложении на PHP
PUG #9 at OWOX: Поиск узких мест в приложении на PHP                PUG #9 at OWOX: Поиск узких мест в приложении на PHP
PUG #9 at OWOX: Поиск узких мест в приложении на PHP
 
Разработка мобильных приложений на HTML5
Разработка мобильных приложений на HTML5Разработка мобильных приложений на HTML5
Разработка мобильных приложений на HTML5
 
Денис Чистяков — JavaScript на фронте и в тылу
Денис Чистяков — JavaScript на фронте и в тылуДенис Чистяков — JavaScript на фронте и в тылу
Денис Чистяков — JavaScript на фронте и в тылу
 
Говорим о СУБД языком HR
Говорим о СУБД языком HRГоворим о СУБД языком HR
Говорим о СУБД языком HR
 
Pj 2013 4
Pj 2013 4Pj 2013 4
Pj 2013 4
 
специализированные http-демона (Сергей Боченков, Александр Панков)
специализированные http-демона (Сергей Боченков, Александр Панков)специализированные http-демона (Сергей Боченков, Александр Панков)
специализированные http-демона (Сергей Боченков, Александр Панков)
 
И снова разработка под iOS. Павел Тайкало
И снова разработка под iOS. Павел ТайкалоИ снова разработка под iOS. Павел Тайкало
И снова разработка под iOS. Павел Тайкало
 
Создаем Drupal дистрибутив: от идеи до сопровождения.
Создаем Drupal дистрибутив: от идеи до сопровождения.Создаем Drupal дистрибутив: от идеи до сопровождения.
Создаем Drupal дистрибутив: от идеи до сопровождения.
 
#MBLTdev: Практический пример переиспользования кода. Как повысить качество и...
#MBLTdev: Практический пример переиспользования кода. Как повысить качество и...#MBLTdev: Практический пример переиспользования кода. Как повысить качество и...
#MBLTdev: Практический пример переиспользования кода. Как повысить качество и...
 
Какой фреймворк нам нужен для Web? Денис Цыплаков
Какой фреймворк нам нужен для Web? Денис ЦыплаковКакой фреймворк нам нужен для Web? Денис Цыплаков
Какой фреймворк нам нужен для Web? Денис Цыплаков
 
Angular into drupal integration - Eugene Mickhnitskyy & Dmitriy Petruk
Angular into drupal integration - Eugene Mickhnitskyy & Dmitriy PetrukAngular into drupal integration - Eugene Mickhnitskyy & Dmitriy Petruk
Angular into drupal integration - Eugene Mickhnitskyy & Dmitriy Petruk
 
Как hh.ru дошли до 500 релизов в квартал без потери в качестве
Как hh.ru дошли до 500 релизов в квартал без потери в качествеКак hh.ru дошли до 500 релизов в квартал без потери в качестве
Как hh.ru дошли до 500 релизов в квартал без потери в качестве
 
Бэкенд, Фронтенд — всё смешалось. Обзорная экскурсия в будущее веб-разработки
Бэкенд, Фронтенд — всё смешалось. Обзорная экскурсия в будущее веб-разработкиБэкенд, Фронтенд — всё смешалось. Обзорная экскурсия в будущее веб-разработки
Бэкенд, Фронтенд — всё смешалось. Обзорная экскурсия в будущее веб-разработки
 
Разработка сложного мультимедийного приложения на JavaScript+HTML5 и PhoneGap...
Разработка сложного мультимедийного приложения на JavaScript+HTML5 и PhoneGap...Разработка сложного мультимедийного приложения на JavaScript+HTML5 и PhoneGap...
Разработка сложного мультимедийного приложения на JavaScript+HTML5 и PhoneGap...
 
Оптимизация JavaScript в Drupal
Оптимизация JavaScript в DrupalОптимизация JavaScript в Drupal
Оптимизация JavaScript в Drupal
 

Mehr von UA Mobile

Владимир Кириллов-TCP-Performance for-Mobile-Applications
Владимир Кириллов-TCP-Performance for-Mobile-ApplicationsВладимир Кириллов-TCP-Performance for-Mobile-Applications
Владимир Кириллов-TCP-Performance for-Mobile-ApplicationsUA Mobile
 
Денис Лебедев-Управление зависимостями с помощью CocoaPods
Денис Лебедев-Управление зависимостями с помощью CocoaPodsДенис Лебедев-Управление зависимостями с помощью CocoaPods
Денис Лебедев-Управление зависимостями с помощью CocoaPodsUA Mobile
 
Дмитрий Малеев-Мобильная Геймификация или как вырабатывать-привычки
Дмитрий Малеев-Мобильная Геймификация или как вырабатывать-привычкиДмитрий Малеев-Мобильная Геймификация или как вырабатывать-привычки
Дмитрий Малеев-Мобильная Геймификация или как вырабатывать-привычкиUA Mobile
 
Александр Терещук - Memory Analyzer Tool and memory optimization tips in Android
Александр Терещук - Memory Analyzer Tool and memory optimization tips in AndroidАлександр Терещук - Memory Analyzer Tool and memory optimization tips in Android
Александр Терещук - Memory Analyzer Tool and memory optimization tips in AndroidUA Mobile
 
Максим Щеглов - Google Cloud Messaging for Android
Максим Щеглов - Google Cloud Messaging for AndroidМаксим Щеглов - Google Cloud Messaging for Android
Максим Щеглов - Google Cloud Messaging for AndroidUA Mobile
 
Александр Додатко - Работа с датами в ObjectiveC и SQLite
Александр Додатко - Работа с датами в ObjectiveC и SQLiteАлександр Додатко - Работа с датами в ObjectiveC и SQLite
Александр Додатко - Работа с датами в ObjectiveC и SQLiteUA Mobile
 
Сергей Арнаут - Stream yourself with Android
Сергей Арнаут - Stream yourself with AndroidСергей Арнаут - Stream yourself with Android
Сергей Арнаут - Stream yourself with AndroidUA Mobile
 
Михаил Галушко - Разработка WinRT приложений для Windows 8: реальный опыт
Михаил Галушко -  Разработка WinRT приложений для Windows 8: реальный опытМихаил Галушко -  Разработка WinRT приложений для Windows 8: реальный опыт
Михаил Галушко - Разработка WinRT приложений для Windows 8: реальный опытUA Mobile
 
Дмитрий Вовк - Learn iOS Game Optimization. Ultimate Guide
Дмитрий Вовк - Learn iOS Game Optimization. Ultimate GuideДмитрий Вовк - Learn iOS Game Optimization. Ultimate Guide
Дмитрий Вовк - Learn iOS Game Optimization. Ultimate GuideUA Mobile
 
Вадим Розов- Разработка под Blackberry. Подводные грабли
Вадим Розов- Разработка под Blackberry. Подводные граблиВадим Розов- Разработка под Blackberry. Подводные грабли
Вадим Розов- Разработка под Blackberry. Подводные граблиUA Mobile
 
Олег Апостол - Плюсы и минусы различных тач-платформ глазами веб-разработчика
Олег Апостол - Плюсы и минусы различных тач-платформ глазами веб-разработчикаОлег Апостол - Плюсы и минусы различных тач-платформ глазами веб-разработчика
Олег Апостол - Плюсы и минусы различных тач-платформ глазами веб-разработчикаUA Mobile
 
Евгений Галкин-Рекламные возможности Google для продвижения мобильных приложений
Евгений Галкин-Рекламные возможности Google для продвижения мобильных приложенийЕвгений Галкин-Рекламные возможности Google для продвижения мобильных приложений
Евгений Галкин-Рекламные возможности Google для продвижения мобильных приложенийUA Mobile
 
Алексей Лельчук - От аутсорсинга к продуктам: трансформация компании и ментал...
Алексей Лельчук - От аутсорсинга к продуктам: трансформация компании и ментал...Алексей Лельчук - От аутсорсинга к продуктам: трансформация компании и ментал...
Алексей Лельчук - От аутсорсинга к продуктам: трансформация компании и ментал...UA Mobile
 
Tdd objective c
Tdd objective cTdd objective c
Tdd objective cUA Mobile
 
Mobile automation uamobile
Mobile automation uamobileMobile automation uamobile
Mobile automation uamobileUA Mobile
 

Mehr von UA Mobile (15)

Владимир Кириллов-TCP-Performance for-Mobile-Applications
Владимир Кириллов-TCP-Performance for-Mobile-ApplicationsВладимир Кириллов-TCP-Performance for-Mobile-Applications
Владимир Кириллов-TCP-Performance for-Mobile-Applications
 
Денис Лебедев-Управление зависимостями с помощью CocoaPods
Денис Лебедев-Управление зависимостями с помощью CocoaPodsДенис Лебедев-Управление зависимостями с помощью CocoaPods
Денис Лебедев-Управление зависимостями с помощью CocoaPods
 
Дмитрий Малеев-Мобильная Геймификация или как вырабатывать-привычки
Дмитрий Малеев-Мобильная Геймификация или как вырабатывать-привычкиДмитрий Малеев-Мобильная Геймификация или как вырабатывать-привычки
Дмитрий Малеев-Мобильная Геймификация или как вырабатывать-привычки
 
Александр Терещук - Memory Analyzer Tool and memory optimization tips in Android
Александр Терещук - Memory Analyzer Tool and memory optimization tips in AndroidАлександр Терещук - Memory Analyzer Tool and memory optimization tips in Android
Александр Терещук - Memory Analyzer Tool and memory optimization tips in Android
 
Максим Щеглов - Google Cloud Messaging for Android
Максим Щеглов - Google Cloud Messaging for AndroidМаксим Щеглов - Google Cloud Messaging for Android
Максим Щеглов - Google Cloud Messaging for Android
 
Александр Додатко - Работа с датами в ObjectiveC и SQLite
Александр Додатко - Работа с датами в ObjectiveC и SQLiteАлександр Додатко - Работа с датами в ObjectiveC и SQLite
Александр Додатко - Работа с датами в ObjectiveC и SQLite
 
Сергей Арнаут - Stream yourself with Android
Сергей Арнаут - Stream yourself with AndroidСергей Арнаут - Stream yourself with Android
Сергей Арнаут - Stream yourself with Android
 
Михаил Галушко - Разработка WinRT приложений для Windows 8: реальный опыт
Михаил Галушко -  Разработка WinRT приложений для Windows 8: реальный опытМихаил Галушко -  Разработка WinRT приложений для Windows 8: реальный опыт
Михаил Галушко - Разработка WinRT приложений для Windows 8: реальный опыт
 
Дмитрий Вовк - Learn iOS Game Optimization. Ultimate Guide
Дмитрий Вовк - Learn iOS Game Optimization. Ultimate GuideДмитрий Вовк - Learn iOS Game Optimization. Ultimate Guide
Дмитрий Вовк - Learn iOS Game Optimization. Ultimate Guide
 
Вадим Розов- Разработка под Blackberry. Подводные грабли
Вадим Розов- Разработка под Blackberry. Подводные граблиВадим Розов- Разработка под Blackberry. Подводные грабли
Вадим Розов- Разработка под Blackberry. Подводные грабли
 
Олег Апостол - Плюсы и минусы различных тач-платформ глазами веб-разработчика
Олег Апостол - Плюсы и минусы различных тач-платформ глазами веб-разработчикаОлег Апостол - Плюсы и минусы различных тач-платформ глазами веб-разработчика
Олег Апостол - Плюсы и минусы различных тач-платформ глазами веб-разработчика
 
Евгений Галкин-Рекламные возможности Google для продвижения мобильных приложений
Евгений Галкин-Рекламные возможности Google для продвижения мобильных приложенийЕвгений Галкин-Рекламные возможности Google для продвижения мобильных приложений
Евгений Галкин-Рекламные возможности Google для продвижения мобильных приложений
 
Алексей Лельчук - От аутсорсинга к продуктам: трансформация компании и ментал...
Алексей Лельчук - От аутсорсинга к продуктам: трансформация компании и ментал...Алексей Лельчук - От аутсорсинга к продуктам: трансформация компании и ментал...
Алексей Лельчук - От аутсорсинга к продуктам: трансформация компании и ментал...
 
Tdd objective c
Tdd objective cTdd objective c
Tdd objective c
 
Mobile automation uamobile
Mobile automation uamobileMobile automation uamobile
Mobile automation uamobile
 

Павел Юрийчук - Разработка приложений под мобильные браузеры

  • 2. Обо мне Краткая биография ● Начинал с Flex 3 & Action Script ● Продолжил с браузерными игрушками под iPhone & iPad ● Сейчас делаю приложения для браузеров под смартфоны Как найти { Skype : "pavlo_yuriychuck", Email : "pluccky@gmail.com", Twitter : "@pavlo_yuriychuk" }
  • 3. Приложение для браузера? ● Приложение !== Мобильная Версия Сайта ● В приложении реализована бизнес логика, которая выполняется как на клиентской, так и на серверной части ● Слой представления формируется на клиенте ● Хранение данных на стороне клиента ● Не надо устанавливать
  • 4. Особенности мобильных браузеров ● Хорошая поддержка HTML5 в целом, но один и тот же API работает по разному на разных платформах ● Медленный JavaScript ● Фиксированный размер окна браузера ● Touch-events ● Качество шрифтов не так заметно как на десктопе ● Запросы не кешируются, если об этом не указать с помощью cache manifest ● Графическое ускорение CSS3 - не всегда
  • 5. Как (не) надо, сервер ● Веб приложения имеют собственные требования к серверной части, их нельзя игнорировать ○ JSON & JSON-P ○ REST ○ CORS - cross-origin-resource-sharing ○ Valid Content-Type ○ CDN - content delivery network ● API ○ XMLHttpRequest ○ iFrame ● Баннеры и трекинговые системы
  • 6. Почему ? ● На организацию работы с унаследованым back-end уходит большая часть Front-end работы ● Необходимо разбираться с Back-end кодом и особенностями его работы ● Отвлекает от насущных проблем ● Стабильность работы ● Код полон заплаток которые не сработают во время рефакоринга серверной части
  • 7. Подготовка ● Автоматизированные сборки, пусть даже в самом зачаточном виде ● Дизайнеры, художники и взаимодействие с ними ● Тестовый сервер ● Coding guidelines ● Исследование фреймворков и библиотек: ○ Код ○ Документация ○ Поддержка ○ Цена
  • 8. Потом ● Code-review - без комментариев ● Unit-testing - когда стабилизируется архитектура ● Регулярные теги для билдов ● Рефакторинг - планируйте и назначайте цели
  • 9. Прототип мобильного приложения ● Основа - MVC фреймворк, все зависит от требований к приложению. Backbone - хороший выбор но не единственный ● Библиотека для DOM, AJAX, etc - jQuery, можно Zepto.JS, если подойдет ● Библиотека для шаблонизации - Underscore.JS, Mustache.JS, больше нв http://microjs.com ● Плагины и/или библиотеки для работы с WebStorage / WebSQL / IndexDB ● Модульность - Require.JS
  • 10. Backbone ● Backbone - хорошая документация, много примеров, свобода выбора для реализации ● Сложно писать большие приложения ● Адаптация под не REST сервера не тривиальна ● Мало идет "с коробки" ● Альтеранатив много: Knockout.JS, Angular.JS, Ember.JS
  • 11. jQuery vs Zepto.JS ● Zepto - молодая, хороший код, не стабильна, маленькая, только современные браузеры, модульная ● jQuery - модульная, стабильная, уменьшение размера за счет собственных сборок
  • 12. Zepto.JS ● Совместима с jQuery только на повехностном уровне ● Не все анимации работают правильно ● Events: on/off ● $ не работает для XMLDocument ● $ не все селекторы, querySelector, querySelectorAll ● Хороша для старта (размер!)
  • 13. XML как с ним быть ● jQuery selectors ○ Шелковый путь ● SAX ○ http://code.google.com/p/jssaxparser/ ○ https://github.com/isaacs/sax-js ● XPath ○ http://www.nczonline.net/blog/2009/03/17/xpath-in- javascript-part-1/ - в 10 раз быстрее на iOS, на Android - нету совсем. ● DOM API ○ Путь для джедаев, хорош, когда все остальные исчепаны
  • 14. Как хранить данные на клиенте ● WebSQL ○ медленная ○ не стабильна ○ почти на всех браузерах ● LocalStorage & SessionStorage ○ Key-Value ○ Быстрая, до 10мс на выборку или запись ○ Везде работает ○ Нету в Private Mode ● IndexDB ○ NoSQL ○ API богаче чем WebSQL & WebStorage ○ не везде есть
  • 15. Шаблоны underscore ● Цель - превращение JSON в HTML ● Компилирует фуцнкцию по заданой разметке. ● Можно использовать управляющие структуры - циклы, условия ● Невозможны вложенные шаблоны ● Как хранить шаблоны - додумываем сами
  • 16. Сага об ускорении загрузки ч.1 1. CORS - Accept Access Allow Origin 2. Переход от WebSQL -> WebStorage - надежнее и быстрее 3. Builder & Placeholders & Inheritance - унификация кода DRY 4. ViewPort & inview - хорошо действует для активных елементов а-ля виджеты
  • 17. Сага об ускорении загрузки ч.2 1. XML to JSON - да да и еще раз да 2. Bootstrapping - чем меньше запросов тем лучше 3. Requests Merging - несколько запросов можно объединить в один 4. Embedding Assets - Base64
  • 18. HTML5 ● CSS3 3d Transformations ○ На iOS быстрее чем Javascript ● Audio Object ○ Два потока на iOS, загрузка с секундной задержкой, решение аудиоспрайты - http: //remysharp.com/2010/12/23/audio-sprites/ ● Video Object ○ На iOS & Android работают совершенно по разному ● WebStorage ● Шрифты - shadow, outline, blur
  • 19. HTML5 ● CSS Sprites - да, но есть ограничение на iPhone 3, размер <= 1024 x 1024 x 32 ● Теги для семантики - да ● Canvas - да, для небольших размеров, быстрее на Android ● Ресурсы: ○ http://html5doctor.com/ ○ http://diveinto.html5doctor.com/ ○ https://developer.mozilla.org/en-US/docs/JavaScript ○ https://developer.apple.com/devcenter/safari/index. action
  • 20. Плюшки ● Организация LocalStorage ○ https://github.com/jeromegn/Backbone.localStorage ○ https://github.com/knadh/localStorageDB ○ http://www.taffydb.com/ ● Локализация http://momentjs.com/ ● Автоматизация билдов ○ Grunt.JS ○ Require.JS - R.js ○ ANT ● Игры http://www.limejs.com/