Top Banner
ВЕБ-ПРИЛОЖЕНИЯ БУДУЩЕГО « » Илья Пухальский
98

FrontTalks: Илья Пухальский (EPAM Systems), «Веб-приложения будущего»

Nov 01, 2014

Download

Technology

Yandex

Дорога от первых страниц на AJAX и DHTML до HTML5. Современные проблемы разработки и дистрибуции веб-приложений. Обзор фреймворков и библиотек, облегчающих жизнь разработчику. Будущее веб-приложений и экосистемы.
Welcome message from author
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
Page 1: FrontTalks: Илья Пухальский (EPAM Systems), «Веб-приложения будущего»

ВЕБ-ПРИЛОЖЕНИЯ

БУДУЩЕГО« »

Илья Пухальский

Page 2: FrontTalks: Илья Пухальский (EPAM Systems), «Веб-приложения будущего»

ВЕБ-ПРИЛОЖЕНИЯ

БУДУЩЕГО« »

Илья Пухальский

Page 3: FrontTalks: Илья Пухальский (EPAM Systems), «Веб-приложения будущего»

@witchfinderx

3

Илья Пухальский,EPAM Mobile Competency Center

Page 4: FrontTalks: Илья Пухальский (EPAM Systems), «Веб-приложения будущего»

Правда действительности

— Мобильный веб существует

— HTMLx не будет готов никогда

4

Page 5: FrontTalks: Илья Пухальский (EPAM Systems), «Веб-приложения будущего»

http://play.freeciv.org

Page 6: FrontTalks: Илья Пухальский (EPAM Systems), «Веб-приложения будущего»
Page 7: FrontTalks: Илья Пухальский (EPAM Systems), «Веб-приложения будущего»
Page 8: FrontTalks: Илья Пухальский (EPAM Systems), «Веб-приложения будущего»

Веб-приложения

Page 9: FrontTalks: Илья Пухальский (EPAM Systems), «Веб-приложения будущего»

9

?

Page 10: FrontTalks: Илья Пухальский (EPAM Systems), «Веб-приложения будущего»

10

"...a Web page (XHTML or a variant thereof + CSS) or collection of Web "pages delivered over HTTP which use server-side or client-side "processing (e.g. JavaScript) to provide an "application-like" "experience within a Web browser."

http://www.w3.org/TR/mwabp/#webapp-defined

Page 11: FrontTalks: Илья Пухальский (EPAM Systems), «Веб-приложения будущего»

11

!==

Ориентировано на задачи

Ориентирован на контент

Page 12: FrontTalks: Илья Пухальский (EPAM Systems), «Веб-приложения будущего»

Может это вообще не нужно?

Page 13: FrontTalks: Илья Пухальский (EPAM Systems), «Веб-приложения будущего»
Page 14: FrontTalks: Илья Пухальский (EPAM Systems), «Веб-приложения будущего»

North American Development Survey: Vol. II, Evans Data Corp.

Page 15: FrontTalks: Илья Пухальский (EPAM Systems), «Веб-приложения будущего»
Page 16: FrontTalks: Илья Пухальский (EPAM Systems), «Веб-приложения будущего»

Как так вышло?

Page 17: FrontTalks: Илья Пухальский (EPAM Systems), «Веб-приложения будущего»

DHTML

1997

Page 18: FrontTalks: Илья Пухальский (EPAM Systems), «Веб-приложения будущего»

AJAX

1999

Page 19: FrontTalks: Илья Пухальский (EPAM Systems), «Веб-приложения будущего»

JSONP

2005

Page 20: FrontTalks: Илья Пухальский (EPAM Systems), «Веб-приложения будущего»

2005

Page 21: FrontTalks: Илья Пухальский (EPAM Systems), «Веб-приложения будущего»

2006

Page 22: FrontTalks: Илья Пухальский (EPAM Systems), «Веб-приложения будущего»

22

2007

Page 23: FrontTalks: Илья Пухальский (EPAM Systems), «Веб-приложения будущего»

23

Page 24: FrontTalks: Илья Пухальский (EPAM Systems), «Веб-приложения будущего»

2007

Page 25: FrontTalks: Илья Пухальский (EPAM Systems), «Веб-приложения будущего»

2008

Page 26: FrontTalks: Илья Пухальский (EPAM Systems), «Веб-приложения будущего»

2008

Page 27: FrontTalks: Илья Пухальский (EPAM Systems), «Веб-приложения будущего»

2009

Page 28: FrontTalks: Илья Пухальский (EPAM Systems), «Веб-приложения будущего»

2009

Page 29: FrontTalks: Илья Пухальский (EPAM Systems), «Веб-приложения будущего»

2010

Page 30: FrontTalks: Илья Пухальский (EPAM Systems), «Веб-приложения будущего»

Look ma, no backend!

Page 31: FrontTalks: Илья Пухальский (EPAM Systems), «Веб-приложения будущего»
Page 32: FrontTalks: Илья Пухальский (EPAM Systems), «Веб-приложения будущего»

RISES AGAIN

Page 33: FrontTalks: Илья Пухальский (EPAM Systems), «Веб-приложения будущего»

Проблемы

Page 34: FrontTalks: Илья Пухальский (EPAM Systems), «Веб-приложения будущего»

Доступ к возможностям устройства

Page 35: FrontTalks: Илья Пухальский (EPAM Systems), «Веб-приложения будущего»

Сложная архитектура приложения

Page 36: FrontTalks: Илья Пухальский (EPAM Systems), «Веб-приложения будущего»

Тач-события и жесты совместно с другими устройствами ввода

Page 37: FrontTalks: Илья Пухальский (EPAM Systems), «Веб-приложения будущего»

Скроллинг и sticky-элементы

Page 38: FrontTalks: Илья Пухальский (EPAM Systems), «Веб-приложения будущего»

Анимации

Page 39: FrontTalks: Илья Пухальский (EPAM Systems), «Веб-приложения будущего»

Дополнительные элементы интерфейса

Page 40: FrontTalks: Илья Пухальский (EPAM Systems), «Веб-приложения будущего»

Эмуляция внешнего видаи поведения

native-приложений

Page 41: FrontTalks: Илья Пухальский (EPAM Systems), «Веб-приложения будущего»
Page 42: FrontTalks: Илья Пухальский (EPAM Systems), «Веб-приложения будущего»
Page 43: FrontTalks: Илья Пухальский (EPAM Systems), «Веб-приложения будущего»

Нет быстрых и простых решений

Page 44: FrontTalks: Илья Пухальский (EPAM Systems), «Веб-приложения будущего»

Только «обходные пути»

Page 45: FrontTalks: Илья Пухальский (EPAM Systems), «Веб-приложения будущего»

Будущее

Page 46: FrontTalks: Илья Пухальский (EPAM Systems), «Веб-приложения будущего»

Диалоги

http://wiki.whatwg.org/wiki/Dialogs

Page 47: FrontTalks: Илья Пухальский (EPAM Systems), «Веб-приложения будущего»

<dialog></dialog><dialog open></dialog><form method=dialog>

dialog.showModal([anchor]);dialog.show([anchor]);dialog.close([returnValue]);

dialog.onclosedialog.returnValue

Page 48: FrontTalks: Илья Пухальский (EPAM Systems), «Веб-приложения будущего»

Navigator

Page 49: FrontTalks: Илья Пухальский (EPAM Systems), «Веб-приложения будущего»

navigator.batterynavigator.connectionnavigator.onLine

Page 50: FrontTalks: Илья Пухальский (EPAM Systems), «Веб-приложения будущего»

File API

Page 51: FrontTalks: Илья Пухальский (EPAM Systems), «Веб-приложения будущего»

function handleFileSelect(evt) { var files = evt.target.files; //

FileList object

for (var i = 0, f; f = files[i]; i++)

{ console.log(f.size,

f.lastModifiedDate); }

document.getElementById('files').addEventListener('change', handleFileSelect, false);

Page 52: FrontTalks: Илья Пухальский (EPAM Systems), «Веб-приложения будущего»

Drag and Drop

Page 53: FrontTalks: Илья Пухальский (EPAM Systems), «Веб-приложения будущего»

<div draggable="true" id="id"></div>

document.getElementById('id').addEventListener('drag', function (e) {

e.dataTransfer.setData("Text", e.target.id);});

document.getElementById('id').addEventListener('drop', function (e) {

e.preventDefault(); var data = e.dataTransfer.getData("Text");

e.target.appendChild(document.getElementById(data));

});

Page 54: FrontTalks: Илья Пухальский (EPAM Systems), «Веб-приложения будущего»

Fullscreen API

Page 55: FrontTalks: Илья Пухальский (EPAM Systems), «Веб-приложения будущего»

document.getElementById("id").requestFullscreen();

document.getElementById("id").cancelFullscreen();

Page 56: FrontTalks: Илья Пухальский (EPAM Systems), «Веб-приложения будущего»

Progress Events

Page 57: FrontTalks: Илья Пухальский (EPAM Systems), «Веб-приложения будущего»

<progress id="p" value="0" max="100" />

var progressBar = document.getElementById("p"), client = new XMLHttpRequest();

Page 58: FrontTalks: Илья Пухальский (EPAM Systems), «Веб-приложения будущего»

client.open("GET", "magical-unicorns");

client.onprogress = function(pe) { if(pe.lengthComputable) { progressBar.max = pe.total progressBar.value = pe.loaded }};

client.onloadend = function(pe) { progressBar.value = pe.loaded};

client.send();

Page 59: FrontTalks: Илья Пухальский (EPAM Systems), «Веб-приложения будущего»

Forms

Page 60: FrontTalks: Илья Пухальский (EPAM Systems), «Веб-приложения будущего»

<input type="color" /><input type="date" /><input type="datetime" /><input type="datetime-local" /><input type="email" /><input type="month" />

Page 61: FrontTalks: Илья Пухальский (EPAM Systems), «Веб-приложения будущего»

<input type="number" /><input type="range" /><input type="search" /><input type="tel" /><input type="time" /><input type="url" /><input type="week" />

Page 62: FrontTalks: Илья Пухальский (EPAM Systems), «Веб-приложения будущего»

<input type="file" />

Page 63: FrontTalks: Илья Пухальский (EPAM Systems), «Веб-приложения будущего»

Web Notifications

Page 64: FrontTalks: Илья Пухальский (EPAM Systems), «Веб-приложения будущего»

Webkit

64

if (window.webkitNotifications) {

if (window.webkitNotifications.checkPermission() == 0) {

window.webkitNotifications.createNotification( 'icon.png', 'Title', 'Content...' ); }else{ window.webkitNotifications.requestPermission(); } }

Page 65: FrontTalks: Илья Пухальский (EPAM Systems), «Веб-приложения будущего»

W3C / WHATWG

65

if (typeof Notification === 'function') {

if (Notification.permission === 'granted') { var notification = new Notification( 'Title', { icon: 'icon.png', body: 'Content...' } ); }else{ Notification.requestPermission(callback); } }

Page 66: FrontTalks: Илья Пухальский (EPAM Systems), «Веб-приложения будущего»

Web Speech API

Page 67: FrontTalks: Илья Пухальский (EPAM Systems), «Веб-приложения будущего»

Web Speech API

67

if (!('webkitSpeechRecognition' in window)) { upgrade();} else { var recognition = new webkitSpeechRecognition(); recognition.continuous = true; recognition.interimResults = true;

recognition.onstart = function() { ... } recognition.onresult = function(event) { ... } recognition.onerror = function(event) { ... } recognition.onend = function() { ... }}

Page 68: FrontTalks: Илья Пухальский (EPAM Systems), «Веб-приложения будущего»
Page 69: FrontTalks: Илья Пухальский (EPAM Systems), «Веб-приложения будущего»

WebRTC

Page 70: FrontTalks: Илья Пухальский (EPAM Systems), «Веб-приложения будущего»
Page 71: FrontTalks: Илья Пухальский (EPAM Systems), «Веб-приложения будущего»

EcmaScript 6

Page 72: FrontTalks: Илья Пухальский (EPAM Systems), «Веб-приложения будущего»

72

Модули

Page 73: FrontTalks: Илья Пухальский (EPAM Systems), «Веб-приложения будущего»

73

module UniverseTest {};module Universe { module MilkyWay {} };module MilkyWay = 'Universe/MilkyWay';module SolarSystem = Universe.MilkyWay.SolarSystem;

module MySystem = SolarSystem;

Определение

Page 74: FrontTalks: Илья Пухальский (EPAM Systems), «Веб-приложения будущего»

74

module Car { // приватные var licensePlateNo = '556-343'; // публичные export function drive(speed, direction) { console.log('details:', speed, direction); } export module engine{ export function check() { } } export var miles = 5000; export var color = 'silver';};

Экспорт

Page 75: FrontTalks: Илья Пухальский (EPAM Systems), «Веб-приложения будущего»

75

import drive from Car;import {drive, miles} from Car;

Импорт

Page 76: FrontTalks: Илья Пухальский (EPAM Systems), «Веб-приложения будущего»

76

// load(moduleURL, callback, errorCallback)Loader.load('car.js', function(car) { console.log(car.drive(500, 'north'));}, function(err) {console.log('Error:' + err);

});

Загрузчик модулей

Page 77: FrontTalks: Илья Пухальский (EPAM Systems), «Веб-приложения будущего»

77

Классы

Page 78: FrontTalks: Илья Пухальский (EPAM Systems), «Веб-приложения будущего»

78

module widgets { // ... class DropDownButton extends Widget { constructor(attributes) { super(attributes); this.buildUI(); } buildUI() { this.domNode.onclick = function(){ // ... }; } }}

Пример использования

Page 79: FrontTalks: Илья Пухальский (EPAM Systems), «Веб-приложения будущего»

79

var widgets = (function(global) { // ... function DropDownButton(attributes) { Widget.call(this, attributes); this.buildUI(); } DropDownButton.prototype =

Object.create(Widget.prototype, { constructor: { value: DropDownButton }, buildUI: { value: function(e) { this.domNode.onclick = function(e) { // ... } } } });

})(this);

class == function

Page 80: FrontTalks: Илья Пухальский (EPAM Systems), «Веб-приложения будущего»

Экосистема

Page 81: FrontTalks: Илья Пухальский (EPAM Systems), «Веб-приложения будущего»

Native vs Web?

Page 82: FrontTalks: Илья Пухальский (EPAM Systems), «Веб-приложения будущего»
Page 83: FrontTalks: Илья Пухальский (EPAM Systems), «Веб-приложения будущего»
Page 84: FrontTalks: Илья Пухальский (EPAM Systems), «Веб-приложения будущего»
Page 85: FrontTalks: Илья Пухальский (EPAM Systems), «Веб-приложения будущего»

Native + Web = ❤

Page 86: FrontTalks: Илья Пухальский (EPAM Systems), «Веб-приложения будущего»
Page 87: FrontTalks: Илья Пухальский (EPAM Systems), «Веб-приложения будущего»
Page 88: FrontTalks: Илья Пухальский (EPAM Systems), «Веб-приложения будущего»

Веб как платформа?

Page 89: FrontTalks: Илья Пухальский (EPAM Systems), «Веб-приложения будущего»

Браузер = ограничение

Page 90: FrontTalks: Илья Пухальский (EPAM Systems), «Веб-приложения будущего»

Браузер — переходное состояние

Page 91: FrontTalks: Илья Пухальский (EPAM Systems), «Веб-приложения будущего»
Page 92: FrontTalks: Илья Пухальский (EPAM Systems), «Веб-приложения будущего»

Google Chrome OS

Page 93: FrontTalks: Илья Пухальский (EPAM Systems), «Веб-приложения будущего»

Эволюция приложений

93

Native Mixed Webтолько только

2005 2020?

Page 94: FrontTalks: Илья Пухальский (EPAM Systems), «Веб-приложения будущего»

Эволюция приложений

94

Native Mixed Webтолько только

Мы живем не в лучшее время

2005 2020?

Page 95: FrontTalks: Илья Пухальский (EPAM Systems), «Веб-приложения будущего»

Веб и есть платформа,

но это уже другая история...

Page 96: FrontTalks: Илья Пухальский (EPAM Systems), «Веб-приложения будущего»
Page 97: FrontTalks: Илья Пухальский (EPAM Systems), «Веб-приложения будущего»

Может, эта битва и проиграна,но война еще нет