SlideShare a Scribd company logo
1 of 21
Download to read offline
РАЗРАБОТКА
ПРИЛОЖЕНИЙ ПОД
МОБИЛЬНЫЕ БРАУЗЕРЫ


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

● Приложение !== Мобильная
  Версия Сайта
● В приложении реализована бизнес
  логика, которая выполняется как на
  клиентской, так и на серверной части
● Представление формируется на клиенте
● Выполняется в браузене, не нужно
  устанавливать
Особенности мобильных
браузеров
● Хорошая поддержка HTML5 в целом, но
  один и тот же API работает по разному на
  разных платформах
● Медленный JavaScript
● Фиксированный размер окна браузера
● Touch-events
● Качество шрифтов не так заметно как на
  десктопе
● Запросы не кешируются, если об этом не
  указать с помощью cache manifest
● Графическое ускорение CSS3 - не всегда
Прототип мобильного приложения
● Основа - 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 - модульная, стабильная,
  возможно уменьшение размера за счет
  собственных сборок
Шаблоны underscore
● Цель - превращение JSON в HTML
● Компилирует фуцнкцию по заданой
  разметке.
● Можно использовать управляющие
  структуры - циклы, условия
● Невозможны вложенные шаблоны
● Как хранить шаблоны - додумываем сами
Беды
Как (не) надо, сервер
● Веб приложения имеют собственные
  требования к серверной части, их
  нельзя игнорировать
  ○   JSON & JSON-P
  ○   REST
  ○   CORS - cross-origin-resource-sharing
  ○   Valid Content-Type
  ○   CDN - content delivery network
● API
  ○ XMLHttpRequest
  ○ iFrame
● Баннеры и трекинговые системы
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
● IndexDB
Сага об ускорении загрузки ч.1
1.   CORS
2.   Переход от WebSQL -> WebStorage
3.   Builder pattern
4.   ViewPort
Сага об ускорении загрузки ч.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/
Вопросы?

More Related Content

What's hot

Yarfrontend #2. Как мы делали гуя...
Yarfrontend #2. Как мы делали гуя...Yarfrontend #2. Как мы делали гуя...
Yarfrontend #2. Как мы делали гуя...oelifantiev
 
«Новый 2ГИС Online» — Влад Семенов, 2ГИС
«Новый 2ГИС Online» — Влад Семенов, 2ГИС «Новый 2ГИС Online» — Влад Семенов, 2ГИС
«Новый 2ГИС Online» — Влад Семенов, 2ГИС DevDay
 
HappyDev-lite-2016-весна 05 Андрей Юдин. Javascript - мультиинструмент для всех
HappyDev-lite-2016-весна 05 Андрей Юдин. Javascript - мультиинструмент для всехHappyDev-lite-2016-весна 05 Андрей Юдин. Javascript - мультиинструмент для всех
HappyDev-lite-2016-весна 05 Андрей Юдин. Javascript - мультиинструмент для всехHappyDev-lite
 
Pavel yuriychuk svg in game development
Pavel yuriychuk svg in game developmentPavel yuriychuk svg in game development
Pavel yuriychuk svg in game developmentDneprCiklumEvents
 
G̶o̶o̶g̶l̶e̶ ̶P̶a̶g̶e̶S̶p̶e̶e̶d̶ ̶I̶n̶s̶i̶g̶h̶t̶s̶. За сколько грузится ваш ...
G̶o̶o̶g̶l̶e̶ ̶P̶a̶g̶e̶S̶p̶e̶e̶d̶ ̶I̶n̶s̶i̶g̶h̶t̶s̶. За сколько грузится  ваш ...G̶o̶o̶g̶l̶e̶ ̶P̶a̶g̶e̶S̶p̶e̶e̶d̶ ̶I̶n̶s̶i̶g̶h̶t̶s̶. За сколько грузится  ваш ...
G̶o̶o̶g̶l̶e̶ ̶P̶a̶g̶e̶S̶p̶e̶e̶d̶ ̶I̶n̶s̶i̶g̶h̶t̶s̶. За сколько грузится ваш ...Sabrina Zeidan
 
Оптимизация времени загрузки сайта: проблемы и решения
Оптимизация времени загрузки сайта: проблемы и решенияОптимизация времени загрузки сайта: проблемы и решения
Оптимизация времени загрузки сайта: проблемы и решенияMedia Gorod
 
Jody - JsOn for Dynamic sites on Rails
Jody - JsOn for Dynamic sites on RailsJody - JsOn for Dynamic sites on Rails
Jody - JsOn for Dynamic sites on Railszykin-ilya
 
JavaScript + Webdriver = ♥
JavaScript + Webdriver = ♥ JavaScript + Webdriver = ♥
JavaScript + Webdriver = ♥ SQALab
 
Как не сойти с ума при разработке крупных проектов на WordPress
Как не сойти с ума при разработке крупных проектов на WordPressКак не сойти с ума при разработке крупных проектов на WordPress
Как не сойти с ума при разработке крупных проектов на WordPressYevhen Kotelnytskyi
 
Tizen Mobile Application Lifecycle by Kirill Danilov
Tizen Mobile Application Lifecycle by Kirill DanilovTizen Mobile Application Lifecycle by Kirill Danilov
Tizen Mobile Application Lifecycle by Kirill DanilovMoscowJS
 
Редактор Mail.ru, или скорочтение за полчаса, Павел Зиновкин (Mail.Ru)
Редактор Mail.ru, или скорочтение за полчаса, Павел Зиновкин (Mail.Ru)Редактор Mail.ru, или скорочтение за полчаса, Павел Зиновкин (Mail.Ru)
Редактор Mail.ru, или скорочтение за полчаса, Павел Зиновкин (Mail.Ru)Ontico
 
Как я перестал бояться и полюбил SVG -- Руслан Каймаков -- MoscowJS 17
Как я перестал бояться и полюбил SVG -- Руслан Каймаков -- MoscowJS 17Как я перестал бояться и полюбил SVG -- Руслан Каймаков -- MoscowJS 17
Как я перестал бояться и полюбил SVG -- Руслан Каймаков -- MoscowJS 17MoscowJS
 
Веб-компоненты в веб-разработке на примере Polymer
Веб-компоненты в веб-разработке на примере PolymerВеб-компоненты в веб-разработке на примере Polymer
Веб-компоненты в веб-разработке на примере PolymerArturDr
 

What's hot (19)

Yarfrontend #2. Как мы делали гуя...
Yarfrontend #2. Как мы делали гуя...Yarfrontend #2. Как мы делали гуя...
Yarfrontend #2. Как мы делали гуя...
 
«Новый 2ГИС Online» — Влад Семенов, 2ГИС
«Новый 2ГИС Online» — Влад Семенов, 2ГИС «Новый 2ГИС Online» — Влад Семенов, 2ГИС
«Новый 2ГИС Online» — Влад Семенов, 2ГИС
 
HappyDev-lite-2016-весна 05 Андрей Юдин. Javascript - мультиинструмент для всех
HappyDev-lite-2016-весна 05 Андрей Юдин. Javascript - мультиинструмент для всехHappyDev-lite-2016-весна 05 Андрей Юдин. Javascript - мультиинструмент для всех
HappyDev-lite-2016-весна 05 Андрей Юдин. Javascript - мультиинструмент для всех
 
Pavel yuriychuk svg in game development
Pavel yuriychuk svg in game developmentPavel yuriychuk svg in game development
Pavel yuriychuk svg in game development
 
G̶o̶o̶g̶l̶e̶ ̶P̶a̶g̶e̶S̶p̶e̶e̶d̶ ̶I̶n̶s̶i̶g̶h̶t̶s̶. За сколько грузится ваш ...
G̶o̶o̶g̶l̶e̶ ̶P̶a̶g̶e̶S̶p̶e̶e̶d̶ ̶I̶n̶s̶i̶g̶h̶t̶s̶. За сколько грузится  ваш ...G̶o̶o̶g̶l̶e̶ ̶P̶a̶g̶e̶S̶p̶e̶e̶d̶ ̶I̶n̶s̶i̶g̶h̶t̶s̶. За сколько грузится  ваш ...
G̶o̶o̶g̶l̶e̶ ̶P̶a̶g̶e̶S̶p̶e̶e̶d̶ ̶I̶n̶s̶i̶g̶h̶t̶s̶. За сколько грузится ваш ...
 
MVC in JavaScript
MVC in JavaScriptMVC in JavaScript
MVC in JavaScript
 
Kothic JS - Web Browser Crash Test
Kothic JS - Web Browser Crash TestKothic JS - Web Browser Crash Test
Kothic JS - Web Browser Crash Test
 
Оптимизация времени загрузки сайта: проблемы и решения
Оптимизация времени загрузки сайта: проблемы и решенияОптимизация времени загрузки сайта: проблемы и решения
Оптимизация времени загрузки сайта: проблемы и решения
 
Jody - JsOn for Dynamic sites on Rails
Jody - JsOn for Dynamic sites on RailsJody - JsOn for Dynamic sites on Rails
Jody - JsOn for Dynamic sites on Rails
 
Fullstack javascript. Isomorphic apps
Fullstack javascript. Isomorphic appsFullstack javascript. Isomorphic apps
Fullstack javascript. Isomorphic apps
 
JavaScript + Webdriver = ♥
JavaScript + Webdriver = ♥ JavaScript + Webdriver = ♥
JavaScript + Webdriver = ♥
 
Cakephp
CakephpCakephp
Cakephp
 
Как не сойти с ума при разработке крупных проектов на WordPress
Как не сойти с ума при разработке крупных проектов на WordPressКак не сойти с ума при разработке крупных проектов на WordPress
Как не сойти с ума при разработке крупных проектов на WordPress
 
Drupal and NodeJS.
Drupal and NodeJS.Drupal and NodeJS.
Drupal and NodeJS.
 
Tizen Mobile Application Lifecycle by Kirill Danilov
Tizen Mobile Application Lifecycle by Kirill DanilovTizen Mobile Application Lifecycle by Kirill Danilov
Tizen Mobile Application Lifecycle by Kirill Danilov
 
Редактор Mail.ru, или скорочтение за полчаса, Павел Зиновкин (Mail.Ru)
Редактор Mail.ru, или скорочтение за полчаса, Павел Зиновкин (Mail.Ru)Редактор Mail.ru, или скорочтение за полчаса, Павел Зиновкин (Mail.Ru)
Редактор Mail.ru, или скорочтение за полчаса, Павел Зиновкин (Mail.Ru)
 
Как я перестал бояться и полюбил SVG -- Руслан Каймаков -- MoscowJS 17
Как я перестал бояться и полюбил SVG -- Руслан Каймаков -- MoscowJS 17Как я перестал бояться и полюбил SVG -- Руслан Каймаков -- MoscowJS 17
Как я перестал бояться и полюбил SVG -- Руслан Каймаков -- MoscowJS 17
 
Веб-компоненты в веб-разработке на примере Polymer
Веб-компоненты в веб-разработке на примере PolymerВеб-компоненты в веб-разработке на примере Polymer
Веб-компоненты в веб-разработке на примере Polymer
 
Pj 2013 4
Pj 2013 4Pj 2013 4
Pj 2013 4
 

Viewers also liked

Viewers also liked (7)

Jsfwdays 2013-2
Jsfwdays 2013-2Jsfwdays 2013-2
Jsfwdays 2013-2
 
Lime.JS
Lime.JSLime.JS
Lime.JS
 
Global logic tech talk switching to Angular.js
Global logic tech talk switching to Angular.jsGlobal logic tech talk switching to Angular.js
Global logic tech talk switching to Angular.js
 
Switching to angular.js silk way
Switching to angular.js   silk waySwitching to angular.js   silk way
Switching to angular.js silk way
 
Full stack development
Full stack developmentFull stack development
Full stack development
 
SVG in game development
SVG in game developmentSVG in game development
SVG in game development
 
Mobile web apps
Mobile web appsMobile web apps
Mobile web apps
 

Similar to Mobile Web Apps development essentials

Разработка мобильных приложений на HTML5
Разработка мобильных приложений на HTML5Разработка мобильных приложений на HTML5
Разработка мобильных приложений на HTML5DevDay
 
Простая и дешёвая бизнес-аналитика на базе Google BigQuery / Алексей Паршуков...
Простая и дешёвая бизнес-аналитика на базе Google BigQuery / Алексей Паршуков...Простая и дешёвая бизнес-аналитика на базе Google BigQuery / Алексей Паршуков...
Простая и дешёвая бизнес-аналитика на базе Google BigQuery / Алексей Паршуков...Ontico
 
Денис Чистяков — JavaScript на фронте и в тылу
Денис Чистяков — JavaScript на фронте и в тылуДенис Чистяков — JavaScript на фронте и в тылу
Денис Чистяков — JavaScript на фронте и в тылуYandex
 
Разработка API для большого, нагруженного сервиса
Разработка API для большого, нагруженного сервисаРазработка API для большого, нагруженного сервиса
Разработка API для большого, нагруженного сервисаITCrowd Almaty
 
Разработка API для большого, нагруженного сервиса
Разработка API для большого, нагруженного сервисаРазработка API для большого, нагруженного сервиса
Разработка API для большого, нагруженного сервисаendeveit
 
РАЗРАБОТКА МОБИЛЬНЫХ САЙТОВ
РАЗРАБОТКА МОБИЛЬНЫХ САЙТОВРАЗРАБОТКА МОБИЛЬНЫХ САЙТОВ
РАЗРАБОТКА МОБИЛЬНЫХ САЙТОВPavel Tsukanov
 
Desktop app based on node js and html5
Desktop app based on node js and html5Desktop app based on node js and html5
Desktop app based on node js and html5Provectus
 
#MBLTdev: Практический пример переиспользования кода. Как повысить качество и...
#MBLTdev: Практический пример переиспользования кода. Как повысить качество и...#MBLTdev: Практический пример переиспользования кода. Как повысить качество и...
#MBLTdev: Практический пример переиспользования кода. Как повысить качество и...e-Legion
 
опыт Clickberry.com стартап на drupal в облаке павел загор
опыт Clickberry.com   стартап на drupal в облаке павел загоропыт Clickberry.com   стартап на drupal в облаке павел загор
опыт Clickberry.com стартап на drupal в облаке павел загорdrupalconf
 
Преимущества создания кроссплатформенных приложений с использованием Phone ga...
Преимущества создания кроссплатформенных приложений с использованием Phone ga...Преимущества создания кроссплатформенных приложений с использованием Phone ga...
Преимущества создания кроссплатформенных приложений с использованием Phone ga...geekfamilyrussia
 
Бэкенд, Фронтенд — всё смешалось. Обзорная экскурсия в будущее веб-разработки
Бэкенд, Фронтенд — всё смешалось. Обзорная экскурсия в будущее веб-разработкиБэкенд, Фронтенд — всё смешалось. Обзорная экскурсия в будущее веб-разработки
Бэкенд, Фронтенд — всё смешалось. Обзорная экскурсия в будущее веб-разработкиITCrowd Almaty
 
Бэкенд, фронтенд — всё смешалось (nodkz)
Бэкенд, фронтенд — всё смешалось (nodkz)Бэкенд, фронтенд — всё смешалось (nodkz)
Бэкенд, фронтенд — всё смешалось (nodkz)Pavel Chertorogov
 
Какой фреймворк нам нужен для Web? Денис Цыплаков
Какой фреймворк нам нужен для Web? Денис ЦыплаковКакой фреймворк нам нужен для Web? Денис Цыплаков
Какой фреймворк нам нужен для Web? Денис ЦыплаковAlex Tumanoff
 
Фронтенд разработка без боли
Фронтенд разработка без болиФронтенд разработка без боли
Фронтенд разработка без болиAnton Piskunov
 
2015-12-05 Сергей Аверин - Javascript-фреймворки: должен остаться только один
2015-12-05 Сергей Аверин - Javascript-фреймворки: должен остаться только один2015-12-05 Сергей Аверин - Javascript-фреймворки: должен остаться только один
2015-12-05 Сергей Аверин - Javascript-фреймворки: должен остаться только одинHappyDev
 
Victor Kuzmin - How to organize service development for several mobile platforms
Victor Kuzmin - How to organize service development for several mobile platformsVictor Kuzmin - How to organize service development for several mobile platforms
Victor Kuzmin - How to organize service development for several mobile platformsAndrew Mayorov
 
Проверено и работает. Инструменты Oracle для разработки веб приложений
Проверено и работает. Инструменты Oracle для разработки веб приложенийПроверено и работает. Инструменты Oracle для разработки веб приложений
Проверено и работает. Инструменты Oracle для разработки веб приложенийMedia Gorod
 
Разработка сложного мультимедийного приложения на JavaScript+HTML5 и PhoneGap...
Разработка сложного мультимедийного приложения на JavaScript+HTML5 и PhoneGap...Разработка сложного мультимедийного приложения на JavaScript+HTML5 и PhoneGap...
Разработка сложного мультимедийного приложения на JavaScript+HTML5 и PhoneGap...Ontico
 

Similar to Mobile Web Apps development essentials (20)

Разработка мобильных приложений на HTML5
Разработка мобильных приложений на HTML5Разработка мобильных приложений на HTML5
Разработка мобильных приложений на HTML5
 
Простая и дешёвая бизнес-аналитика на базе Google BigQuery / Алексей Паршуков...
Простая и дешёвая бизнес-аналитика на базе Google BigQuery / Алексей Паршуков...Простая и дешёвая бизнес-аналитика на базе Google BigQuery / Алексей Паршуков...
Простая и дешёвая бизнес-аналитика на базе Google BigQuery / Алексей Паршуков...
 
Денис Чистяков — JavaScript на фронте и в тылу
Денис Чистяков — JavaScript на фронте и в тылуДенис Чистяков — JavaScript на фронте и в тылу
Денис Чистяков — JavaScript на фронте и в тылу
 
Разработка API для большого, нагруженного сервиса
Разработка API для большого, нагруженного сервисаРазработка API для большого, нагруженного сервиса
Разработка API для большого, нагруженного сервиса
 
Разработка API для большого, нагруженного сервиса
Разработка API для большого, нагруженного сервисаРазработка API для большого, нагруженного сервиса
Разработка API для большого, нагруженного сервиса
 
РАЗРАБОТКА МОБИЛЬНЫХ САЙТОВ
РАЗРАБОТКА МОБИЛЬНЫХ САЙТОВРАЗРАБОТКА МОБИЛЬНЫХ САЙТОВ
РАЗРАБОТКА МОБИЛЬНЫХ САЙТОВ
 
Desktop app based on node js and html5
Desktop app based on node js and html5Desktop app based on node js and html5
Desktop app based on node js and html5
 
#MBLTdev: Практический пример переиспользования кода. Как повысить качество и...
#MBLTdev: Практический пример переиспользования кода. Как повысить качество и...#MBLTdev: Практический пример переиспользования кода. Как повысить качество и...
#MBLTdev: Практический пример переиспользования кода. Как повысить качество и...
 
опыт Clickberry.com стартап на drupal в облаке павел загор
опыт Clickberry.com   стартап на drupal в облаке павел загоропыт Clickberry.com   стартап на drupal в облаке павел загор
опыт Clickberry.com стартап на drupal в облаке павел загор
 
Преимущества создания кроссплатформенных приложений с использованием Phone ga...
Преимущества создания кроссплатформенных приложений с использованием Phone ga...Преимущества создания кроссплатформенных приложений с использованием Phone ga...
Преимущества создания кроссплатформенных приложений с использованием Phone ga...
 
Бэкенд, Фронтенд — всё смешалось. Обзорная экскурсия в будущее веб-разработки
Бэкенд, Фронтенд — всё смешалось. Обзорная экскурсия в будущее веб-разработкиБэкенд, Фронтенд — всё смешалось. Обзорная экскурсия в будущее веб-разработки
Бэкенд, Фронтенд — всё смешалось. Обзорная экскурсия в будущее веб-разработки
 
Бэкенд, фронтенд — всё смешалось (nodkz)
Бэкенд, фронтенд — всё смешалось (nodkz)Бэкенд, фронтенд — всё смешалось (nodkz)
Бэкенд, фронтенд — всё смешалось (nodkz)
 
Какой фреймворк нам нужен для Web? Денис Цыплаков
Какой фреймворк нам нужен для Web? Денис ЦыплаковКакой фреймворк нам нужен для Web? Денис Цыплаков
Какой фреймворк нам нужен для Web? Денис Цыплаков
 
Фронтенд разработка без боли
Фронтенд разработка без болиФронтенд разработка без боли
Фронтенд разработка без боли
 
2015-12-05 Сергей Аверин - Javascript-фреймворки: должен остаться только один
2015-12-05 Сергей Аверин - Javascript-фреймворки: должен остаться только один2015-12-05 Сергей Аверин - Javascript-фреймворки: должен остаться только один
2015-12-05 Сергей Аверин - Javascript-фреймворки: должен остаться только один
 
Victor Kuzmin - How to organize service development for several mobile platforms
Victor Kuzmin - How to organize service development for several mobile platformsVictor Kuzmin - How to organize service development for several mobile platforms
Victor Kuzmin - How to organize service development for several mobile platforms
 
JavaScript
JavaScriptJavaScript
JavaScript
 
Проверено и работает. Инструменты Oracle для разработки веб приложений
Проверено и работает. Инструменты Oracle для разработки веб приложенийПроверено и работает. Инструменты Oracle для разработки веб приложений
Проверено и работает. Инструменты Oracle для разработки веб приложений
 
Разработка сложного мультимедийного приложения на JavaScript+HTML5 и PhoneGap...
Разработка сложного мультимедийного приложения на JavaScript+HTML5 и PhoneGap...Разработка сложного мультимедийного приложения на JavaScript+HTML5 и PhoneGap...
Разработка сложного мультимедийного приложения на JavaScript+HTML5 и PhoneGap...
 
Diplom 1
Diplom 1Diplom 1
Diplom 1
 

Mobile Web Apps development essentials

  • 2. Обо мне Краткая биография ● Начинал с Flex 3 & Action Script ● Продолжил с браузерными игрушками под iPhone & iPad ● Сейчас делаю приложения для браузеров под смартфоны Как найти { Skype : "pavlo.yuriychuck", Email : "pluccky@gmail.com", Twitter : "@pavlo_yuriychuk" }
  • 3.
  • 4.
  • 5. Приложение для браузера? ● Приложение !== Мобильная Версия Сайта ● В приложении реализована бизнес логика, которая выполняется как на клиентской, так и на серверной части ● Представление формируется на клиенте ● Выполняется в браузене, не нужно устанавливать
  • 6. Особенности мобильных браузеров ● Хорошая поддержка HTML5 в целом, но один и тот же API работает по разному на разных платформах ● Медленный JavaScript ● Фиксированный размер окна браузера ● Touch-events ● Качество шрифтов не так заметно как на десктопе ● Запросы не кешируются, если об этом не указать с помощью cache manifest ● Графическое ускорение CSS3 - не всегда
  • 7.
  • 8. Прототип мобильного приложения ● Основа - MVC фреймворк, все зависит от требований к приложению. Backbone - хороший выбор но не единственный ● Библиотека для DOM, AJAX, etc - jQuery, можно Zepto.JS, если подойдет ● Библиотека для шаблонизации - Underscore.JS, Mustache.JS, больше нв http://microjs.com ● Плагины и/или библиотеки для работы с WebStorage / WebSQL / IndexDB ● Модульность - Require.JS
  • 9. Backbone ● Backbone - хорошая документация, много примеров, свобода выбора для реализации ● Сложно писать большие приложения ● Адаптация под не REST сервера не тривиальна ● Мало идет "с коробки" ● Альтеранатив много: Knockout.JS, Angular.JS, Ember.JS
  • 10. jQuery vs Zepto.JS ● Zepto - молодая, хороший код, не стабильна, маленькая, только современные браузеры, модульная ● jQuery - модульная, стабильная, возможно уменьшение размера за счет собственных сборок
  • 11. Шаблоны underscore ● Цель - превращение JSON в HTML ● Компилирует фуцнкцию по заданой разметке. ● Можно использовать управляющие структуры - циклы, условия ● Невозможны вложенные шаблоны ● Как хранить шаблоны - додумываем сами
  • 13. Как (не) надо, сервер ● Веб приложения имеют собственные требования к серверной части, их нельзя игнорировать ○ JSON & JSON-P ○ REST ○ CORS - cross-origin-resource-sharing ○ Valid Content-Type ○ CDN - content delivery network ● API ○ XMLHttpRequest ○ iFrame ● Баннеры и трекинговые системы
  • 14. 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 ○ Путь для джедаев, хорош, когда все остальные исчепаны
  • 15. Как хранить данные на клиенте ● WebSQL ● LocalStorage & SessionStorage ● IndexDB
  • 16. Сага об ускорении загрузки ч.1 1. CORS 2. Переход от WebSQL -> WebStorage 3. Builder pattern 4. ViewPort
  • 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/