Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Sign up for free
Menu
Search
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Pricing
Search
Sign in
Sign up for free
Опыт разработки мобильного веб приложения с исп...
Search
fwdays
March 05, 2013
Programming
1.6k
0
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
Опыт разработки мобильного веб приложения с использованием Backbone.js, Require.js, Zepto.js
fwdays
March 05, 2013
More Decks by fwdays
See All by fwdays
Symfony best practices и не только Олег Зинченко
fwdays
0
2.2k
Beyond Testing Михаил Боднарчук
fwdays
0
910
Yii2 - на пути от Alpha до GA. Взгляд с практической стороны Александр Бордун
fwdays
0
2k
Laravel 4: простота во всем. Евгений Косинский
fwdays
0
1.1k
Маленькая библиотека для большой компании. Антон Шевчук
fwdays
0
3.9k
Phalcon. Что нового? Александр Торош
fwdays
0
1.2k
Выбираем поисковик умом головы. Андрей Аксенов
fwdays
0
1.5k
Past, Present, and Future: The Evolution of PHP Development. Nate Abele
fwdays
0
940
Функциональный тулчейн Nix
fwdays
1
560
Other Decks in Programming
See All in Programming
TiDB Cloudのカスタムコントローラーによるオートスケール対応
takaidohigasi
0
130
The Past, Present, and Future of Enterprise Java
ivargrimstad
0
460
GKE で Pod の見方を変えたら、スケールアウト時の挙動を真に捉えられた話
stkk
0
130
『寄り添うラジオ』をAIで作る 体験価値から逆算した、会話しないUXと品質設計
theoriatec2024
3
180
Everything will be SERVERLESS — 信じて運用した10年の経験値 / Everything Will be Serverless — Lessons Learned from 10 Years of Operational Experience
seike460
PRO
1
260
Jetpack Compose メカニズム
skydoves
0
440
スマートフォンでモールス信号を送受信する 〜スマートフォンのLEDとカメラで作る光通信の設計と実装〜
atsuki_seo
0
140
MVNOの申込からeSIM開通までをiOSアプリでつなぐ- 本人確認・MNP・通信事業者基盤をまたぐ実装
satotakeshi
0
440
選挙速報を多くのユーザーへ 届ける Live Activities 設計
hamayokokuririn
0
150
C#の現在地 進化の歴史と、AI時代の.NET Everywhere
neuecc
4
2.7k
モデルのリファクタリングが難しいと思ったら、そもそも複雑だったのはビジネス仕様だった ? / is-the-business-domain-the-real-complexity
hatsu38
0
350
Are APIs Still Relevant in the AI Era?
soyuka
0
270
Featured
See All Featured
Dominate Local Search Results - an insider guide to GBP, reviews, and Local SEO
greggifford
PRO
0
330
Templates, Plugins, & Blocks: Oh My! Creating the theme that thinks of everything
marktimemedia
31
2.9k
The Myth of the Modular Monolith - Day 2 Keynote - Rails World 2024
eileencodes
28
3.6k
The Art of Delivering Value - GDevCon NA Keynote
reverentgeek
16
2.2k
コードの90%をAIが書く世界で何が待っているのか / What awaits us in a world where 90% of the code is written by AI
rkaga
63
46k
Being A Developer After 40
akosma
91
590k
BBQ
matthewcrist
89
10k
Understanding Cognitive Biases in Performance Measurement
bluesmoon
32
3k
ReactJS: Keep Simple. Everything can be a component!
pedronauck
666
130k
Fight the Zombie Pattern Library - RWD Summit 2016
marcelosomers
234
18k
Navigating the moral maze — ethical principles for Al-driven product design
skipperchong
2
550
Designing Experiences People Love
moore
143
24k
Transcript
Опыт разработки мобильного веб приложения Павел Юрийчук GlobalLogic Skype: pavlo_yuriychuck
Twitter: pavlo_yuriychuk Email:
[email protected]
А поговорить? Мобильные веб приложения Серверная часть
Клиентская часть Инструментарий Книжная полка
Мобильные приложения Native - iOS, Android, Blackberry Hybrid
- PhoneGap, Appcelerator Plugin - AIR, Silverlight Web - HTML5
Пример
Особенности Качество картинок и шрифтов не так важно
Скорость сети Скорость выполнения JavaScript
Сервер CDN GZip/BZip/Deflate HTTP Headers (CORS, E-tags)
JSON
Клиент Application cache Web storage CSS3
Touch events ViewPort: • MDN, Safari Dev Network, More
Клиент SASS/SCSS Underscore -> LoDash Zepto.JS
Require.JS Backbone.JS
Actung, minen! Bootstrapping JSON Assets embedding
Banners Tracking systems Assets - fonts, images, audio, video
Отладка
Отладка Var Logger = (function($){ var messages = []; function
log() { messages.push(Array.prototype.splice.apply(arguments).join(“”)) } setInterval(function(){ $.ajax({ Method:’post’, Url:url, data:messages.join(‘\n’) }); Messages = []; }); return { log:log } })(jQuery)
Templates <section data-type=”related” data-view=”list” data-limit=”1,5”> </section> <section data-type=”credentials”> </section> <section
data-type=”banner” data-url=”super-banner.jpg”> </section> <section data-type=”banner” data-md=”{color:’#35ADFE’,opacity:0.5,rel:{x:5,y:-5}}”> </section>
Builder $(‘section[data-type]’).each(function() { var klass = $(this).attr(‘data-type’), instance; Klass =
Mapper.getClassByAlias(klass); Instance = new Klass({$el : $(this)}); })
WebStorage Var Model = Backbone.Model.extend({ Prefix: “articles”, save: function() {
localStorage.setItem(“articles-” + this.id, this.toJSON().toString()) }, fetch: function() { Var data = localStorage.getItem(“articles-” + this.id); If (_.isString(data)) { Try { Data = JSON.parse(data); } catch (e) { Data = {} } finally { This.set(data) } } } })
WebStorage Var Collection = Backbone.Collection.extend({ Prefix: “articles”, save: function() {
localStorage.setItem(“articles”, this.toJSON().toString()) }, fetch: function() { Var data = localStorage.getItem(“articles-” + this.id); If (_.isString(data)) { Try { Data = JSON.parse(data); } catch (e) { Data = {} } finally { This.reset(data) } } } })
PageView Var PageViewA = PageView.extend({ initialize: function() { PageView.prototype.initialize.apply(this, arguments);
}, CustomMethod: funciton() { // } })
Multi-part response HTTP/1.1 200 OK Date: Thu, 24 Nov 2011
10:03:25 GMT Server: Foo/1.0 Content-Type: multipart/form-data; boundary=xYzZY --xYzZY Content-Type: text/plain; charset=UTF-8 Content-Disposition: form-data; name="name" John Doe --xYzZY Content-Type: text/plain; charset=UTF-8 Content-Disposition: form-data; name="note"
Bootstrapping data <html> <body> <script> //Data setup Window.INITIAL = [];
</script> … <script> If (window.initial) { App.data.reset(window.initial) } else { App.data.fetch() } </script> </body> </html>
Bootstrapping code <html> <body> <script id=”module1”> /*(funciton(){codeGoesHere()})()*/ </script> … <script>
Var el = Document.getElementById(“module1”); eval(strip(el.innerHTML)); </script> </body> </html>
XML, please jQuery selectors SAX http://code.google.com/p/jssaxparser/
https://github.com/isaacs/sax-js XPath DOM API
Книги http://shop.oreilly.com/product/0636920025344.do
Книженции онлайн Patterns for Large-Scale JS apps Backbone
fundamentals Backbone patterns More of backbone
Презентации Оптимизация энергопотребления Оптимизация скорости загрузки Особенности
разработки под мобильные устройства
Ресурсы Mobile safari
Вопросы?