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
一人だけ、Kiroが静止する日
hideg
0
130
setup-vp GitLab対応の裏側
naokihaba
0
120
20260914 AIエージェント時代のPlatform Engineering LLM基盤とプロダクトの責務境界線
kanfab1
7
2.2k
wkhtmltopdfの次どうするか問題2026
willnet
2
1.6k
App Intentsのビルドプロセスを支える技術
kntkymt
0
420
Are APIs Still Relevant in the AI Era?
soyuka
0
300
The Good Stuff, Not the Slop: Engineering High-Quality Android Apps with Modern AI Tooling
danybony
1
260
スマートフォンでモールス信号を送受信する 〜スマートフォンのLEDとカメラで作る光通信の設計と実装〜
atsuki_seo
0
170
そのリトライ、死んだコネクションを使い回していませんか ── GoのHTTPクライアントとHTTP/2を実プロダクト障害から学び直す
myus4a
0
220
AGENTS.md Is Not Enough:Build Skills, Don't Download Them
lx_t
0
130
AI が書く Go コードの品質を劇的に向上させる Linter: “declscope”
mpyw
0
380
Heart of Swift Concurrency
koher
0
950
Featured
See All Featured
<Decoding/> the Language of Devs - We Love SEO 2024
nikkihalliwell
1
330
sira's awesome portfolio website redesign presentation
elsirapls
0
420
The SEO identity crisis: Don't let AI make you average
varn
0
560
Information Architects: The Missing Link in Design Systems
soysaucechin
1
1.2k
How to train your dragon (web standard)
notwaldorf
97
6.8k
My Coaching Mixtape
mlcsv
0
320
Designing Dashboards & Data Visualisations in Web Apps
destraynor
232
55k
Between Models and Reality
mayunak
4
460
Leadership Guide Workshop - DevTernity 2021
reverentgeek
1
370
Tips & Tricks on How to Get Your First Job In Tech
honzajavorek
1
770
Believing is Seeing
oripsolob
1
220
4 Signs Your Business is Dying
shpigford
187
23k
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
Вопросы?