SlideShare uma empresa Scribd logo
1 de 54
Baixar para ler offline
Yakov Fain, Farata Systems
7 Versions of One
Web Application
www.faratasystems.com	
  
We’ll	
  Review	
  7	
  Versions	
  of	
  the	
  UI	
  of	
  this	
  Single	
  Page	
  Applica?on	
  
SPA:	
  One	
  Web	
  page,	
  AJAX	
  calls	
  bring	
  the	
  data	
  as	
  needed,	
  CSS	
  hides/shows	
  HTML	
  elements	
  
…	
  and	
  the	
  7	
  versions	
  are…	
  
1.  HTML/AJAX	
  
2.  HTML	
  +	
  Responsive	
  Web	
  Design	
  
3.  With	
  jQuery	
  library	
  	
  
4.  With	
  Ext	
  JS	
  framework	
  
5.  Modularizing	
  HTML5	
  
6.  With	
  jQuery	
  Mobile	
  
7.  With	
  Sencha	
  Touch	
  
Wireframing	
  with	
  Balsamiq	
  Mockups	
  
V1:	
  HTML,	
  JS,	
  CSS,	
  AJAX,	
  JSON	
  
//	
  Loading	
  data	
  	
  with	
  AJAX	
  and	
  parsing	
  JSON	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  
	
  
func9on	
  loadData(dataUrl)	
  {	
  
	
  var	
  xhr	
  =	
  new	
  XMLH+pRequest();	
  	
  
	
  
	
  xhr.open('GET',	
  dataUrl,	
  true);	
  
	
  
	
  xhr.onreadystatechange	
  =	
  func9on()	
  {	
  
	
   	
  if	
  (xhr.readyState	
  ==	
  4)	
  {	
  
	
   	
   	
  if	
  (xhr.status	
  ==	
  200)	
  {	
  
	
   	
   	
   	
  var	
  jsonData	
  =	
  xhr.responseText;	
  
	
  
	
   	
   	
   	
  //parse	
  json	
  data	
  
	
   	
   	
   	
  var	
  campaignsData	
  =	
  JSON.parse(jsonData).campaigns;	
  
	
   	
   	
   	
  showCampaignsInfo(campaignsData);	
  
	
   	
   	
  }	
  else	
  {	
  
	
   	
   	
   	
  console.log(xhr.statusText);	
  
	
   	
   	
  }	
  
	
   	
  }	
  
	
  }	
  
	
  xhr.send(null);	
  
}	
  
Demo:	
  Debugging	
  in	
  Chrome	
  
Oops…A	
  Smaller	
  Screen	
  
V2:	
  Responsive	
  Web	
  Design(RWD)	
  
•  Should	
  we	
  create	
  separate	
  versions	
  for	
  desktop	
  and	
  
mobile?	
  
•  How	
  many	
  versions	
  of	
  the	
  UI	
  to	
  create?	
  
•  Can	
  we	
  have	
  a	
  single	
  HTML	
  version	
  for	
  all	
  devices?	
  
•  CSS	
  Media	
  Queries	
  –	
  	
  layouts	
  based	
  on	
  screen	
  width	
  
•  Seing	
  CSS	
  Breakpoints	
  
•  Pros	
  and	
  Cons	
  of	
  RWD	
  	
  
Remember	
  the	
  wireframe	
  for	
  desktops?	
  
Wireframing	
  for	
  a	
  table	
  in	
  portrait	
  	
  
Wireframing	
  for	
  large	
  phones	
  
Wireframing	
  for	
  smaller	
  phones	
  
These	
  are	
  the	
  wireframes	
  for	
  3	
  phone	
  screens	
  
V2:	
  Demo	
  
1.  Basic	
  Media	
  Queries	
  
2.  Responsive	
  Header	
  
3.  Responsive	
  
Dona?on	
  
4.  Responsive	
  Final	
  
RWD	
  Pros	
  and	
  Cons	
  
•  RWD	
  is	
  good	
  for	
  publishing	
  info.	
  Mobile	
  frameworks	
  can	
  be	
  a	
  
beker	
  choice	
  for	
  interac?ve	
  apps	
  
•  RWD	
  allows	
  to	
  have	
  a	
  single	
  app	
  code	
  base	
  
•  Mobile	
  versions	
  of	
  an	
  app	
  may	
  need	
  limited	
  func?onality	
  and	
  
specific	
  naviga?on	
  
•  RWD	
  means	
  larger	
  traffic	
  (heavy	
  CSS)	
  –	
  no	
  good	
  for	
  slower	
  
connec?ons	
  
•  Mobile	
  frameworks	
  offer	
  more	
  na?ve	
  look	
  and	
  feel	
  of	
  the	
  UI	
  	
  
Libraries	
  of	
  responsive	
  UI	
  components:	
  
Bootstrap:	
  hkp://getbootstrap.com	
  
Seman?c	
  UI:	
  hkp://seman?c-­‐ui.com	
  	
  	
  	
  	
  
V3:	
  With	
  jQuery	
  Library	
  
•  Learning	
  jQuery	
  is	
  easy	
  for	
  designers	
  –	
  mostly	
  HTML.	
  
•  40	
  –	
  50%	
  of	
  top	
  Web	
  sites	
  use	
  jQuery	
  (see	
  bultwith.com)	
  	
  	
  	
  
•  It’s	
  a	
  light-­‐weight	
  addi?on	
  to	
  your	
  app	
  –	
  33Kb	
  gzipped,	
  minified	
  
•  Shorter	
  than	
  in	
  JS	
  syntax	
  for	
  DOM	
  Browsing	
  	
  
•  $()	
  –	
  pass	
  it	
  a	
  String,	
  	
  pass	
  it	
  a	
  func?on	
  	
  
•  There	
  are	
  thousands	
  plugins	
  in	
  jQuery	
  Plugin	
  Registry	
  
DOM	
  Querying	
  &	
  Func?on	
  Chaining	
  
An	
  AJAX	
  call	
  in	
  jQuery	
  
The	
  shortcut	
  methods:	
  $.get(),	
  $.post(),	
  $.getJSON()	
  
V3:	
  Demo	
  with	
  jQuery	
  
V4:	
  With	
  Sencha	
  Ext	
  JS	
  Framework	
  
•  Ext	
  JS	
  has	
  rich	
  library	
  of	
  enterprise-­‐grade	
  components,	
  e.g.	
  grids,	
  charts	
  
•  Cool	
  code	
  generator	
  Sencha	
  CMD	
  
•  Promotes	
  MVC	
  architecture	
  
•  Some	
  code	
  reuse	
  for	
  mobile	
  app	
  with	
  Sencha	
  Touch	
  
•  The	
  “weight”	
  of	
  the	
  app	
  substan?ally	
  increases	
  
•  If	
  you	
  decided	
  to	
  go	
  with	
  Ext	
  JS,	
  there	
  is	
  no	
  easy	
  way	
  out	
  
•  Doesn’t	
  support	
  Responsive	
  Web	
  Design	
  
•  Has	
  steep	
  learning	
  curve	
  –	
  has	
  no	
  HTML,	
  but	
  new	
  JS-­‐based	
  syntax	
  
Ext	
  JS:	
  	
  index.html	
  and	
  app.js	
  
Ext	
  JS:	
  	
  index.html	
  and	
  app.js	
  
Ext	
  JS	
  MVC	
  
Genera?ng	
  a	
  project	
  with	
  Sencha	
  CMD	
  
sencha	
  -­‐sdk	
  /Library/ext-­‐4.2	
  generate	
  app	
  HelloWorld	
  /Users/yfain11/hello	
  
The	
  View	
  Fragment:	
  DonateForm.js	
  	
  
V4:	
  Demo	
  with	
  Ext	
  JS	
  
V5:	
  Modularizing	
  UI	
  
•  Large	
  apps	
  should	
  be	
  modularized	
  to	
  avoid	
  loading	
  all	
  code	
  at	
  once.	
  
•  Mul?ple	
  <script> tags	
  may	
  depend	
  on	
  each	
  other	
  and	
  have	
  to	
  
be	
  loaded	
  in	
  certain	
  order.	
  
•  Need	
  to	
  be	
  able	
  to	
  specify	
  dependencies	
  between	
  the	
  modules.	
  
Need	
  to	
  avoid	
  pollu?ng	
  global	
  scope	
  and	
  name	
  conflicts.	
  	
  
Manually	
  wri?ng	
  Modules	
  doesn’t	
  solve	
  these	
  issues.	
  
•  Today:	
  CommonJS	
  and	
  Async	
  Module	
  Defini?on	
  (AMD)	
  specs	
  
•  Tomorrow:	
  ECMAScript	
  6	
  spec	
  (a.k.a.	
  Harmony)	
  defines	
  modules.	
  
One	
  way	
  of	
  implemen?ng	
  Module	
  Pakern	
  
Passing	
  inside	
  the	
  module	
  a	
  reference	
  to	
  the	
  global	
  window	
  object	
  	
  
CommonJS	
  is	
  an	
  effort	
  to	
  standardize	
  JS	
  APIs.	
  
CommonJS	
  Modules	
  defines	
  3	
  variables	
  for	
  modules:	
  	
  
	
  
	
  	
  	
  	
  	
  -­‐	
  requires
	
  	
  	
  	
  	
  -­‐	
  exports
	
  	
  	
  	
  	
  -­‐	
  module
	
  
Node.js	
  framework	
  implements	
  CommonJS	
  Modules	
  spec	
  and	
  
provides	
  these	
  global	
  variables.	
  
Code	
  Sample	
  With	
  CommonJS	
  
CommonJS	
  Pros	
  and	
  Cons	
  
Pros:	
  
	
  
•  Simple	
  API	
  
	
  
Cons:	
  
•  Mainly	
  for	
  the	
  server-­‐side	
  JavaScript.	
  Web	
  browsers	
  don’t	
  have	
  	
  
require,	
  export,	
  and	
  module	
  variables.	
  	
  
	
  
•  The	
  require	
  method	
  is	
  synchronous.	
  	
  
	
  
•  CommonJS	
  API	
  is	
  suitable	
  for	
  loading	
  JS	
  files,	
  but	
  can’t	
  load	
  CSS	
  	
  
and	
  HTML.	
  
Asynchronous	
  Module	
  Defini?on	
  (AMD)	
  
AMD	
  is	
  a	
  proposal	
  for	
  async	
  loading	
  of	
  both	
  the	
  module	
  and	
  its	
  
dependencies	
  in	
  Web	
  browsers.	
  	
  
	
  
You	
  provide	
  define	
  and	
  require	
  func?ons:	
  
	
  
define(!
module_id, // optional!
[dependencies],!
function (){!
// This function runs once when the module and its dependencies are loaded!
}!
);!
!
!
require(["main"], function() {!
console.log(”The module main is loaded");!
});!
!
	
  
!
!
!
The	
  func?on	
  define	
  defines	
  the	
  module	
  and	
  returns	
  it	
  once	
  it’s	
  needed.	
  	
  
The	
  require	
  executes	
  the	
  given	
  func?on	
  checking	
  that	
  the	
  dependencies	
  were	
  loaded.	
  	
  
Save	
  The	
  Child	
  Modularized	
  With	
  RequireJS	
  
Lis?ng	
  modules	
  in	
  config.js	
  
V5	
  Demo:	
  With	
  RequireJS	
  
main.js	
  (fragment)	
  
“Way	
  To	
  Give”	
  Module	
  Defini?on	
  
V6:	
  With	
  jQuery	
  Mobile	
  
•  Easy	
  to	
  learn.	
  Built	
  on	
  top	
  of	
  jQuery	
  Core	
  library	
  
•  HTML5	
  allows	
  crea?ng	
  custom	
  non-­‐visible	
  akributes.	
  They	
  
have	
  to	
  start	
  with	
  data-:	
  
<div data-role="page" id="Stats">
•  The	
  UI	
  shows	
  one	
  page	
  at	
  a	
  ?me	
  
•  Light-­‐weight	
  (90Kb	
  gZipped)	
  
Mul?-­‐Page	
  Template	
  
<body>
<!-- Page 1 -->
<div data-role="page"
id="Donate” >
...
</div>
<!-- Page 2 -->
<div data-role="page"
id="Stats” >
...
</div>
</body>
The	
  content	
  of	
  mul?ple	
  pages	
  is	
  located	
  in	
  one	
  file.	
  	
  
When	
  the	
  app	
  starts,	
  only	
  the	
  first	
  page	
  is	
  displayed	
  
Mul?-­‐Page	
  Template	
  (cont.)	
  
<body>
<!-- Page 1 -->
<div data-role="page" id="Donate">
<div data-role="header" >...</div>
<div data-role="content" >...</div>
<div data-role="footer" >...</div>
</div>
<!-- Page 2 -->
<div data-role="page" id="Stats">
...
</div>
</body>
Naviga?on	
  Bar	
  
<div data-role="navbar">
<ul>
<li>
<a href="#Who-We-Are">Who We Are</a>
</li>
<li>
<a href="#What-We-Do">What We Do</a>
</li>
<li>
<a href="#Where-We-Work">Where We Work</a>
</li>
<li>
<a href="#Way-To-Give">Way To Give</a>
</li>
</ul>
</div>
Ripple	
  Emulator	
  
The	
  Back	
  Bukon	
  
<div data-role="page" id="Stats" data-add-back-btn="true">
<div data-role="header" >
<h1>Statistics</h1>
</div>
Statistics will go here
</div>
Single-­‐Page	
  Template	
  
An	
  HTML	
  file	
  contains	
  the	
  content	
  of	
  a	
  single	
  page.	
  	
  
<div data-role="navbar">
<ul>
<li>
<a href="page-1.html"
data-transition="slideup">Page #1</a>
</li>
<li>
<a href="#" class="ui-state-persist">Page #2</a>
</li>
<li>
<a href="page-3.html"
data-transition="slideup">Page #3</a>
</li>
<li>
<a href="page-4.html"
data-transition="slideup">Page #4</a>
</li>
</ul>
</div>
V6:	
  Demo	
  With	
  jQuery	
  Mobile	
  
V7:	
  With	
  Sencha	
  Touch	
  
•  Sencha	
  Touch	
  is	
  a	
  smaller	
  brother	
  of	
  Ext	
  JS	
  
•  It	
  comes	
  with	
  mobile	
  versions	
  of	
  lists,	
  
forms,	
  toolbars,	
  bukons,	
  charts,	
  audio,	
  
video,	
  carousel	
  etc.	
  
•  Jumpstart	
  development	
  with	
  genera?ng	
  
the	
  app	
  with	
  Sencha	
  CMD.	
  
•  Package	
  the	
  Sencha	
  Touch	
  app	
  as	
  na?ve	
  
The	
  app.JS	
  
Ext.applica?on({	
  
	
  	
  	
  	
  name:	
  'SSC',	
  
	
  
	
  	
  	
  	
  requires:	
  [	
  
	
  	
  	
  	
  	
  	
  	
  	
  'Ext.MessageBox'	
  
	
  	
  	
  	
  ],	
  
	
  
	
  	
  	
  	
  views:	
  [	
  
	
  	
  	
  	
  	
  	
  	
  	
  'About',	
  
	
  	
  	
  	
  	
  	
  	
  	
  'CampaignsMap',	
  
	
  	
  	
  	
  	
  	
  	
  	
  'DonateForm',	
  
	
  	
  	
  	
  	
  	
  	
  	
  'DonorsChart',	
  
	
  	
  	
  	
  	
  	
  	
  	
  'LoginForm',	
  
	
  	
  	
  	
  	
  	
  	
  	
  'LoginToolbar',	
  
	
  	
  	
  	
  	
  	
  	
  	
  'Main',	
  
	
  	
  	
  	
  	
  	
  	
  	
  'Media',	
  
	
  	
  	
  	
  	
  	
  	
  	
  'Share',	
  
	
  	
  	
  	
  	
  	
  	
  	
  'ShareTile'	
  
	
  	
  	
  	
  ],	
  
	
  
	
  	
  	
  	
  stores:	
  [	
  
	
  	
  	
  	
  	
  	
  	
  	
  'Campaigns',	
  
	
  	
  	
  	
  	
  	
  	
  	
  'Countries',	
  
	
  	
  	
  	
  	
  	
  	
  	
  'Donors',	
  
	
  	
  	
  	
  	
  	
  	
  	
  'States',	
  
	
  	
  	
  	
  	
  	
  	
  	
  'Videos'	
  
	
  	
  	
  	
  ],x	
  
	
  
	
  	
  	
  	
  controllers:	
  [	
  
	
  	
  	
  	
  	
  	
  	
  	
  'Login'	
  
	
  	
  	
  	
  ],	
  
	
  
	
  	
  	
  	
  launch:	
  func?on()	
  {	
  
	
  	
  	
  	
  	
  	
  	
  	
  //	
  Destroy	
  the	
  #appLoadingIndicator	
  element	
  
	
  	
  	
  	
  	
  	
  	
  	
  Ext.fly('appLoadingIndicator').destroy();	
  
	
  
	
  	
  	
  	
  	
  	
  	
  	
  //	
  Ini?alize	
  the	
  main	
  view	
  
	
  	
  	
  	
  	
  	
  	
  	
  Ext.Viewport.add(Ext.create('SSC.view.Main'));	
  
	
  	
  	
  	
  },	
  
	
  
	
  	
  	
  	
  onUpdated:	
  func?on()	
  {	
  
	
  	
  	
  	
  	
  	
  	
  	
  Ext.Msg.confirm(	
  
	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  "Applica?on	
  Update",	
  
	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  "This	
  applica?on	
  has	
  just	
  successfully	
  been	
  updated	
  
to	
  the	
  latest	
  version.	
  Reload	
  now?",	
  
	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  func?on(bukonId)	
  {	
  
	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  if	
  (bukonId	
  ===	
  'yes')	
  {	
  
	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  window.loca?on.reload();	
  
	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  }	
  
	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  }	
  
	
  	
  	
  	
  	
  	
  	
  	
  );	
  
	
  	
  	
  	
  }	
  
});	
  
The	
  Landing	
  Page	
  
Login	
  Controller	
  
Donors	
  Store	
  
jQuery	
  Mobile	
  or	
  Sencha	
  Touch?	
  
Use	
  jQuery	
  Mobile	
  if:	
  
	
  
•  You	
  are	
  afraid	
  of	
  being	
  locked	
  up	
  with	
  any	
  one	
  vendor.	
  	
  
•  You	
  need	
  your	
  applica?on	
  to	
  work	
  on	
  most	
  of	
  the	
  mobile	
  pla€orms.	
  
•  You	
  prefer	
  declara?ve	
  UI	
  and	
  hate	
  debugging	
  JavaScript.	
  
jQuery	
  Mobile	
  or	
  Sencha	
  Touch?	
  
Use	
  Sencha	
  Touch	
  if:	
  
	
  
•  You	
  like	
  to	
  have	
  a	
  rich	
  library	
  of	
  pre-­‐created	
  UI	
  
•  Your	
  applica?on	
  needs	
  smooth	
  anima?on	
  
•  You	
  are	
  into	
  MVC	
  	
  
•  You	
  want	
  to	
  package	
  your	
  applica?on	
  as	
  a	
  na?ve	
  one	
  
•  You	
  want	
  your	
  applica?on	
  to	
  look	
  as	
  close	
  to	
  the	
  na?ve	
  ones	
  	
  
as	
  possible	
  
V7:	
  Demo	
  With	
  Sencha	
  Touch	
  
Where	
  to	
  go	
  next?	
  
Google	
  Dart	
  Language:	
  
hkps://www.dartlang.org	
  
	
  
Google	
  Angular	
  Dart	
  Framework:	
  
hkps://github.com/angular/angular.dart	
  	
  
Links	
  
•  7	
  versions	
  of	
  the	
  Save	
  The	
  Child	
  app:	
  
hkp://savesickchild.org	
  
•  Enterprise	
  Web	
  Dev	
  book:	
  
hkp://oreil.ly/1hxK5hl	
  	
  	
  
•  My	
  employer:	
  	
  	
  
hkp://faratasystems.com	
  	
  
•  My	
  Twiker:	
  @yfain	
  	
  

Mais conteúdo relacionado

Mais procurados

Exploring Angular 2 - Episode 2
Exploring Angular 2 - Episode 2Exploring Angular 2 - Episode 2
Exploring Angular 2 - Episode 2Ahmed Moawad
 
Angular 2 Essential Training
Angular 2 Essential Training Angular 2 Essential Training
Angular 2 Essential Training Patrick Schroeder
 
Angular js 2
Angular js 2Angular js 2
Angular js 2Ran Wahle
 
Node.js vs Play Framework (with Japanese subtitles)
Node.js vs Play Framework (with Japanese subtitles)Node.js vs Play Framework (with Japanese subtitles)
Node.js vs Play Framework (with Japanese subtitles)Yevgeniy Brikman
 
Understanding Angular 2 - Shmuela Jacobs - Codemotion Milan 2016
Understanding Angular 2 - Shmuela Jacobs - Codemotion Milan 2016Understanding Angular 2 - Shmuela Jacobs - Codemotion Milan 2016
Understanding Angular 2 - Shmuela Jacobs - Codemotion Milan 2016Codemotion
 
Web sockets in Angular
Web sockets in AngularWeb sockets in Angular
Web sockets in AngularYakov Fain
 
AngularJs presentation
AngularJs presentation AngularJs presentation
AngularJs presentation Phan Tuan
 
Test Driven Development with JavaFX
Test Driven Development with JavaFXTest Driven Development with JavaFX
Test Driven Development with JavaFXHendrik Ebbers
 
Angular 2 - The Next Framework
Angular 2 - The Next FrameworkAngular 2 - The Next Framework
Angular 2 - The Next FrameworkCommit University
 
Angular 2 어디까지 왔을까
Angular 2 어디까지 왔을까Angular 2 어디까지 왔을까
Angular 2 어디까지 왔을까장현 한
 
Building scalable applications with angular js
Building scalable applications with angular jsBuilding scalable applications with angular js
Building scalable applications with angular jsAndrew Alpert
 
Angular 4 for Java Developers
Angular 4 for Java DevelopersAngular 4 for Java Developers
Angular 4 for Java DevelopersYakov Fain
 
Universal JavaScript Web Applications with React - Luciano Mammino - Codemoti...
Universal JavaScript Web Applications with React - Luciano Mammino - Codemoti...Universal JavaScript Web Applications with React - Luciano Mammino - Codemoti...
Universal JavaScript Web Applications with React - Luciano Mammino - Codemoti...Codemotion
 
Introduction to Angular 2
Introduction to Angular 2Introduction to Angular 2
Introduction to Angular 2Knoldus Inc.
 
RESTful services and OAUTH protocol in IoT
RESTful services and OAUTH protocol in IoTRESTful services and OAUTH protocol in IoT
RESTful services and OAUTH protocol in IoTYakov Fain
 

Mais procurados (20)

Exploring Angular 2 - Episode 2
Exploring Angular 2 - Episode 2Exploring Angular 2 - Episode 2
Exploring Angular 2 - Episode 2
 
Angular 2 Essential Training
Angular 2 Essential Training Angular 2 Essential Training
Angular 2 Essential Training
 
Angular js 2
Angular js 2Angular js 2
Angular js 2
 
Node.js vs Play Framework (with Japanese subtitles)
Node.js vs Play Framework (with Japanese subtitles)Node.js vs Play Framework (with Japanese subtitles)
Node.js vs Play Framework (with Japanese subtitles)
 
Angularjs
AngularjsAngularjs
Angularjs
 
Understanding Angular 2 - Shmuela Jacobs - Codemotion Milan 2016
Understanding Angular 2 - Shmuela Jacobs - Codemotion Milan 2016Understanding Angular 2 - Shmuela Jacobs - Codemotion Milan 2016
Understanding Angular 2 - Shmuela Jacobs - Codemotion Milan 2016
 
Web sockets in Angular
Web sockets in AngularWeb sockets in Angular
Web sockets in Angular
 
Angular 5
Angular 5Angular 5
Angular 5
 
Angular2 for Beginners
Angular2 for BeginnersAngular2 for Beginners
Angular2 for Beginners
 
AngularJs presentation
AngularJs presentation AngularJs presentation
AngularJs presentation
 
Test Driven Development with JavaFX
Test Driven Development with JavaFXTest Driven Development with JavaFX
Test Driven Development with JavaFX
 
Angular 2 - The Next Framework
Angular 2 - The Next FrameworkAngular 2 - The Next Framework
Angular 2 - The Next Framework
 
Angular 2 어디까지 왔을까
Angular 2 어디까지 왔을까Angular 2 어디까지 왔을까
Angular 2 어디까지 왔을까
 
Building scalable applications with angular js
Building scalable applications with angular jsBuilding scalable applications with angular js
Building scalable applications with angular js
 
React native
React nativeReact native
React native
 
Angular 4 for Java Developers
Angular 4 for Java DevelopersAngular 4 for Java Developers
Angular 4 for Java Developers
 
Universal JavaScript Web Applications with React - Luciano Mammino - Codemoti...
Universal JavaScript Web Applications with React - Luciano Mammino - Codemoti...Universal JavaScript Web Applications with React - Luciano Mammino - Codemoti...
Universal JavaScript Web Applications with React - Luciano Mammino - Codemoti...
 
Introduction to Angular 2
Introduction to Angular 2Introduction to Angular 2
Introduction to Angular 2
 
RESTful services and OAUTH protocol in IoT
RESTful services and OAUTH protocol in IoTRESTful services and OAUTH protocol in IoT
RESTful services and OAUTH protocol in IoT
 
AngularJs Crash Course
AngularJs Crash CourseAngularJs Crash Course
AngularJs Crash Course
 

Destaque

Cours java smi 2007 2008
Cours java smi 2007 2008Cours java smi 2007 2008
Cours java smi 2007 2008Khalil Lechheb
 
Integrating consumers IoT devices into Business Workflow
Integrating consumers IoT devices into Business WorkflowIntegrating consumers IoT devices into Business Workflow
Integrating consumers IoT devices into Business WorkflowYakov Fain
 
Java(ee) mongo db applications in the cloud
Java(ee) mongo db applications in the cloud Java(ee) mongo db applications in the cloud
Java(ee) mongo db applications in the cloud Shekhar Gulati
 
Bonnes pratiques des applications java prêtes pour la production
Bonnes pratiques des applications java prêtes pour la productionBonnes pratiques des applications java prêtes pour la production
Bonnes pratiques des applications java prêtes pour la productionCyrille Le Clerc
 
AngularJS for Java Developers
AngularJS for Java DevelopersAngularJS for Java Developers
AngularJS for Java DevelopersLoc Nguyen
 
Reactive Thinking in Java
Reactive Thinking in JavaReactive Thinking in Java
Reactive Thinking in JavaYakov Fain
 
Developing Modern Java Web Applications with Java EE 7 and AngularJS
Developing Modern Java Web Applications with Java EE 7 and AngularJSDeveloping Modern Java Web Applications with Java EE 7 and AngularJS
Developing Modern Java Web Applications with Java EE 7 and AngularJSShekhar Gulati
 
Angular 2 for Java Developers
Angular 2 for Java DevelopersAngular 2 for Java Developers
Angular 2 for Java DevelopersYakov Fain
 
Reactive programming in Angular 2
Reactive programming in Angular 2Reactive programming in Angular 2
Reactive programming in Angular 2Yakov Fain
 
Reactive Thinking in Java with RxJava2
Reactive Thinking in Java with RxJava2Reactive Thinking in Java with RxJava2
Reactive Thinking in Java with RxJava2Yakov Fain
 
Building Universal Applications with Angular 2
Building Universal Applications with Angular 2Building Universal Applications with Angular 2
Building Universal Applications with Angular 2Minko Gechev
 
Java 7 - Fork/Join
Java 7 - Fork/JoinJava 7 - Fork/Join
Java 7 - Fork/JoinZenika
 

Destaque (13)

Cours java smi 2007 2008
Cours java smi 2007 2008Cours java smi 2007 2008
Cours java smi 2007 2008
 
Integrating consumers IoT devices into Business Workflow
Integrating consumers IoT devices into Business WorkflowIntegrating consumers IoT devices into Business Workflow
Integrating consumers IoT devices into Business Workflow
 
Introduction àJava
Introduction àJavaIntroduction àJava
Introduction àJava
 
Java(ee) mongo db applications in the cloud
Java(ee) mongo db applications in the cloud Java(ee) mongo db applications in the cloud
Java(ee) mongo db applications in the cloud
 
Bonnes pratiques des applications java prêtes pour la production
Bonnes pratiques des applications java prêtes pour la productionBonnes pratiques des applications java prêtes pour la production
Bonnes pratiques des applications java prêtes pour la production
 
AngularJS for Java Developers
AngularJS for Java DevelopersAngularJS for Java Developers
AngularJS for Java Developers
 
Reactive Thinking in Java
Reactive Thinking in JavaReactive Thinking in Java
Reactive Thinking in Java
 
Developing Modern Java Web Applications with Java EE 7 and AngularJS
Developing Modern Java Web Applications with Java EE 7 and AngularJSDeveloping Modern Java Web Applications with Java EE 7 and AngularJS
Developing Modern Java Web Applications with Java EE 7 and AngularJS
 
Angular 2 for Java Developers
Angular 2 for Java DevelopersAngular 2 for Java Developers
Angular 2 for Java Developers
 
Reactive programming in Angular 2
Reactive programming in Angular 2Reactive programming in Angular 2
Reactive programming in Angular 2
 
Reactive Thinking in Java with RxJava2
Reactive Thinking in Java with RxJava2Reactive Thinking in Java with RxJava2
Reactive Thinking in Java with RxJava2
 
Building Universal Applications with Angular 2
Building Universal Applications with Angular 2Building Universal Applications with Angular 2
Building Universal Applications with Angular 2
 
Java 7 - Fork/Join
Java 7 - Fork/JoinJava 7 - Fork/Join
Java 7 - Fork/Join
 

Semelhante a Seven Versions of One Web Application

Going offline with JS (DDD Sydney)
Going offline with JS (DDD Sydney)Going offline with JS (DDD Sydney)
Going offline with JS (DDD Sydney)brendankowitz
 
Beginning MEAN Stack
Beginning MEAN StackBeginning MEAN Stack
Beginning MEAN StackRob Davarnia
 
Isomorphic JavaScript: #DevBeat Master Class
Isomorphic JavaScript: #DevBeat Master ClassIsomorphic JavaScript: #DevBeat Master Class
Isomorphic JavaScript: #DevBeat Master ClassSpike Brehm
 
Going Offline with JS
Going Offline with JSGoing Offline with JS
Going Offline with JSbrendankowitz
 
Pablo Villalba -
Pablo Villalba - Pablo Villalba -
Pablo Villalba - .toster
 
Front End Development | Introduction
Front End Development | IntroductionFront End Development | Introduction
Front End Development | IntroductionJohnTaieb
 
Tech io spa_angularjs_20130814_v0.9.5
Tech io spa_angularjs_20130814_v0.9.5Tech io spa_angularjs_20130814_v0.9.5
Tech io spa_angularjs_20130814_v0.9.5Ganesh Kondal
 
Wintellect - Devscovery - Enterprise JavaScript Development 2 of 2
Wintellect - Devscovery - Enterprise JavaScript Development 2 of 2Wintellect - Devscovery - Enterprise JavaScript Development 2 of 2
Wintellect - Devscovery - Enterprise JavaScript Development 2 of 2Jeremy Likness
 
From Backbone to Ember and Back(bone) Again
From Backbone to Ember and Back(bone) AgainFrom Backbone to Ember and Back(bone) Again
From Backbone to Ember and Back(bone) Againjonknapp
 
Android Introduction
Android IntroductionAndroid Introduction
Android Introductionaswapnal
 
Enhancing Spring MVC Web Applications Progressively with Spring JavaScript
Enhancing Spring MVC Web Applications Progressively with Spring JavaScriptEnhancing Spring MVC Web Applications Progressively with Spring JavaScript
Enhancing Spring MVC Web Applications Progressively with Spring JavaScriptJeremy Grelle
 
Mobile and IBM Worklight Best Practices
Mobile and IBM Worklight Best PracticesMobile and IBM Worklight Best Practices
Mobile and IBM Worklight Best PracticesAndrew Ferrier
 
JS Fest 2019/Autumn. Влад Федосов. Technology agnostic microservices at SPA f...
JS Fest 2019/Autumn. Влад Федосов. Technology agnostic microservices at SPA f...JS Fest 2019/Autumn. Влад Федосов. Technology agnostic microservices at SPA f...
JS Fest 2019/Autumn. Влад Федосов. Technology agnostic microservices at SPA f...JSFestUA
 
Anatomy of an HTML 5 mobile web app
Anatomy of an HTML 5 mobile web app Anatomy of an HTML 5 mobile web app
Anatomy of an HTML 5 mobile web app Ivano Malavolta
 
Sybase sup hybrid_web_container_article_wp
Sybase sup hybrid_web_container_article_wpSybase sup hybrid_web_container_article_wp
Sybase sup hybrid_web_container_article_wpPrabhakar Manthena
 
What is Mean Stack Development ?
What is Mean Stack Development ?What is Mean Stack Development ?
What is Mean Stack Development ?Balajihope
 
Introduction to backbone_js
Introduction to backbone_jsIntroduction to backbone_js
Introduction to backbone_jsMohammed Saqib
 
dan_labrecque_web_resume
dan_labrecque_web_resumedan_labrecque_web_resume
dan_labrecque_web_resumeDan Labrecque
 

Semelhante a Seven Versions of One Web Application (20)

Going offline with JS (DDD Sydney)
Going offline with JS (DDD Sydney)Going offline with JS (DDD Sydney)
Going offline with JS (DDD Sydney)
 
Beginning MEAN Stack
Beginning MEAN StackBeginning MEAN Stack
Beginning MEAN Stack
 
Isomorphic JavaScript: #DevBeat Master Class
Isomorphic JavaScript: #DevBeat Master ClassIsomorphic JavaScript: #DevBeat Master Class
Isomorphic JavaScript: #DevBeat Master Class
 
Going Offline with JS
Going Offline with JSGoing Offline with JS
Going Offline with JS
 
Pablo Villalba -
Pablo Villalba - Pablo Villalba -
Pablo Villalba -
 
Javascript frameworks
Javascript frameworksJavascript frameworks
Javascript frameworks
 
Front End Development | Introduction
Front End Development | IntroductionFront End Development | Introduction
Front End Development | Introduction
 
Tech io spa_angularjs_20130814_v0.9.5
Tech io spa_angularjs_20130814_v0.9.5Tech io spa_angularjs_20130814_v0.9.5
Tech io spa_angularjs_20130814_v0.9.5
 
Wintellect - Devscovery - Enterprise JavaScript Development 2 of 2
Wintellect - Devscovery - Enterprise JavaScript Development 2 of 2Wintellect - Devscovery - Enterprise JavaScript Development 2 of 2
Wintellect - Devscovery - Enterprise JavaScript Development 2 of 2
 
From Backbone to Ember and Back(bone) Again
From Backbone to Ember and Back(bone) AgainFrom Backbone to Ember and Back(bone) Again
From Backbone to Ember and Back(bone) Again
 
Android Introduction
Android IntroductionAndroid Introduction
Android Introduction
 
Enhancing Spring MVC Web Applications Progressively with Spring JavaScript
Enhancing Spring MVC Web Applications Progressively with Spring JavaScriptEnhancing Spring MVC Web Applications Progressively with Spring JavaScript
Enhancing Spring MVC Web Applications Progressively with Spring JavaScript
 
Mobile and IBM Worklight Best Practices
Mobile and IBM Worklight Best PracticesMobile and IBM Worklight Best Practices
Mobile and IBM Worklight Best Practices
 
JS Fest 2019/Autumn. Влад Федосов. Technology agnostic microservices at SPA f...
JS Fest 2019/Autumn. Влад Федосов. Technology agnostic microservices at SPA f...JS Fest 2019/Autumn. Влад Федосов. Technology agnostic microservices at SPA f...
JS Fest 2019/Autumn. Влад Федосов. Technology agnostic microservices at SPA f...
 
Anatomy of an HTML 5 mobile web app
Anatomy of an HTML 5 mobile web app Anatomy of an HTML 5 mobile web app
Anatomy of an HTML 5 mobile web app
 
Sybase sup hybrid_web_container_article_wp
Sybase sup hybrid_web_container_article_wpSybase sup hybrid_web_container_article_wp
Sybase sup hybrid_web_container_article_wp
 
What is Mean Stack Development ?
What is Mean Stack Development ?What is Mean Stack Development ?
What is Mean Stack Development ?
 
Introduction to backbone_js
Introduction to backbone_jsIntroduction to backbone_js
Introduction to backbone_js
 
20120306 dublin js
20120306 dublin js20120306 dublin js
20120306 dublin js
 
dan_labrecque_web_resume
dan_labrecque_web_resumedan_labrecque_web_resume
dan_labrecque_web_resume
 

Mais de Yakov Fain

Type script for_java_dev_jul_2020
Type script for_java_dev_jul_2020Type script for_java_dev_jul_2020
Type script for_java_dev_jul_2020Yakov Fain
 
Using JHipster for generating Angular/Spring Boot apps
Using JHipster for generating Angular/Spring Boot appsUsing JHipster for generating Angular/Spring Boot apps
Using JHipster for generating Angular/Spring Boot appsYakov Fain
 
Using JHipster for generating Angular/Spring Boot apps
Using JHipster for generating Angular/Spring Boot appsUsing JHipster for generating Angular/Spring Boot apps
Using JHipster for generating Angular/Spring Boot appsYakov Fain
 
TypeScript for Java Developers
TypeScript for Java DevelopersTypeScript for Java Developers
TypeScript for Java DevelopersYakov Fain
 
Reactive Streams and RxJava2
Reactive Streams and RxJava2Reactive Streams and RxJava2
Reactive Streams and RxJava2Yakov Fain
 
Using JHipster 4 for generating Angular/Spring Boot apps
Using JHipster 4 for generating Angular/Spring Boot appsUsing JHipster 4 for generating Angular/Spring Boot apps
Using JHipster 4 for generating Angular/Spring Boot appsYakov Fain
 
Java Intro: Unit1. Hello World
Java Intro: Unit1. Hello WorldJava Intro: Unit1. Hello World
Java Intro: Unit1. Hello WorldYakov Fain
 
Running a Virtual Company
Running a Virtual CompanyRunning a Virtual Company
Running a Virtual CompanyYakov Fain
 
Princeton jug git_github
Princeton jug git_githubPrinceton jug git_github
Princeton jug git_githubYakov Fain
 
Surviving as a Professional Software Developer
Surviving as a Professional Software DeveloperSurviving as a Professional Software Developer
Surviving as a Professional Software DeveloperYakov Fain
 
Becoming a professional software developer
Becoming a professional software developerBecoming a professional software developer
Becoming a professional software developerYakov Fain
 

Mais de Yakov Fain (11)

Type script for_java_dev_jul_2020
Type script for_java_dev_jul_2020Type script for_java_dev_jul_2020
Type script for_java_dev_jul_2020
 
Using JHipster for generating Angular/Spring Boot apps
Using JHipster for generating Angular/Spring Boot appsUsing JHipster for generating Angular/Spring Boot apps
Using JHipster for generating Angular/Spring Boot apps
 
Using JHipster for generating Angular/Spring Boot apps
Using JHipster for generating Angular/Spring Boot appsUsing JHipster for generating Angular/Spring Boot apps
Using JHipster for generating Angular/Spring Boot apps
 
TypeScript for Java Developers
TypeScript for Java DevelopersTypeScript for Java Developers
TypeScript for Java Developers
 
Reactive Streams and RxJava2
Reactive Streams and RxJava2Reactive Streams and RxJava2
Reactive Streams and RxJava2
 
Using JHipster 4 for generating Angular/Spring Boot apps
Using JHipster 4 for generating Angular/Spring Boot appsUsing JHipster 4 for generating Angular/Spring Boot apps
Using JHipster 4 for generating Angular/Spring Boot apps
 
Java Intro: Unit1. Hello World
Java Intro: Unit1. Hello WorldJava Intro: Unit1. Hello World
Java Intro: Unit1. Hello World
 
Running a Virtual Company
Running a Virtual CompanyRunning a Virtual Company
Running a Virtual Company
 
Princeton jug git_github
Princeton jug git_githubPrinceton jug git_github
Princeton jug git_github
 
Surviving as a Professional Software Developer
Surviving as a Professional Software DeveloperSurviving as a Professional Software Developer
Surviving as a Professional Software Developer
 
Becoming a professional software developer
Becoming a professional software developerBecoming a professional software developer
Becoming a professional software developer
 

Último

Understanding Discord NSFW Servers A Guide for Responsible Users.pdf
Understanding Discord NSFW Servers A Guide for Responsible Users.pdfUnderstanding Discord NSFW Servers A Guide for Responsible Users.pdf
Understanding Discord NSFW Servers A Guide for Responsible Users.pdfUK Journal
 
Strategies for Landing an Oracle DBA Job as a Fresher
Strategies for Landing an Oracle DBA Job as a FresherStrategies for Landing an Oracle DBA Job as a Fresher
Strategies for Landing an Oracle DBA Job as a FresherRemote DBA Services
 
The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024Rafal Los
 
Exploring the Future Potential of AI-Enabled Smartphone Processors
Exploring the Future Potential of AI-Enabled Smartphone ProcessorsExploring the Future Potential of AI-Enabled Smartphone Processors
Exploring the Future Potential of AI-Enabled Smartphone Processorsdebabhi2
 
Finology Group – Insurtech Innovation Award 2024
Finology Group – Insurtech Innovation Award 2024Finology Group – Insurtech Innovation Award 2024
Finology Group – Insurtech Innovation Award 2024The Digital Insurer
 
Powerful Google developer tools for immediate impact! (2023-24 C)
Powerful Google developer tools for immediate impact! (2023-24 C)Powerful Google developer tools for immediate impact! (2023-24 C)
Powerful Google developer tools for immediate impact! (2023-24 C)wesley chun
 
Tata AIG General Insurance Company - Insurer Innovation Award 2024
Tata AIG General Insurance Company - Insurer Innovation Award 2024Tata AIG General Insurance Company - Insurer Innovation Award 2024
Tata AIG General Insurance Company - Insurer Innovation Award 2024The Digital Insurer
 
A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)Gabriella Davis
 
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...Miguel Araújo
 
Developing An App To Navigate The Roads of Brazil
Developing An App To Navigate The Roads of BrazilDeveloping An App To Navigate The Roads of Brazil
Developing An App To Navigate The Roads of BrazilV3cube
 
Advantages of Hiring UIUX Design Service Providers for Your Business
Advantages of Hiring UIUX Design Service Providers for Your BusinessAdvantages of Hiring UIUX Design Service Providers for Your Business
Advantages of Hiring UIUX Design Service Providers for Your BusinessPixlogix Infotech
 
Apidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, Adobe
Apidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, AdobeApidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, Adobe
Apidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, Adobeapidays
 
[2024]Digital Global Overview Report 2024 Meltwater.pdf
[2024]Digital Global Overview Report 2024 Meltwater.pdf[2024]Digital Global Overview Report 2024 Meltwater.pdf
[2024]Digital Global Overview Report 2024 Meltwater.pdfhans926745
 
What Are The Drone Anti-jamming Systems Technology?
What Are The Drone Anti-jamming Systems Technology?What Are The Drone Anti-jamming Systems Technology?
What Are The Drone Anti-jamming Systems Technology?Antenna Manufacturer Coco
 
presentation ICT roal in 21st century education
presentation ICT roal in 21st century educationpresentation ICT roal in 21st century education
presentation ICT roal in 21st century educationjfdjdjcjdnsjd
 
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...apidays
 
Histor y of HAM Radio presentation slide
Histor y of HAM Radio presentation slideHistor y of HAM Radio presentation slide
Histor y of HAM Radio presentation slidevu2urc
 
Partners Life - Insurer Innovation Award 2024
Partners Life - Insurer Innovation Award 2024Partners Life - Insurer Innovation Award 2024
Partners Life - Insurer Innovation Award 2024The Digital Insurer
 
How to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerHow to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerThousandEyes
 

Último (20)

Understanding Discord NSFW Servers A Guide for Responsible Users.pdf
Understanding Discord NSFW Servers A Guide for Responsible Users.pdfUnderstanding Discord NSFW Servers A Guide for Responsible Users.pdf
Understanding Discord NSFW Servers A Guide for Responsible Users.pdf
 
Strategies for Landing an Oracle DBA Job as a Fresher
Strategies for Landing an Oracle DBA Job as a FresherStrategies for Landing an Oracle DBA Job as a Fresher
Strategies for Landing an Oracle DBA Job as a Fresher
 
The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024
 
Exploring the Future Potential of AI-Enabled Smartphone Processors
Exploring the Future Potential of AI-Enabled Smartphone ProcessorsExploring the Future Potential of AI-Enabled Smartphone Processors
Exploring the Future Potential of AI-Enabled Smartphone Processors
 
Finology Group – Insurtech Innovation Award 2024
Finology Group – Insurtech Innovation Award 2024Finology Group – Insurtech Innovation Award 2024
Finology Group – Insurtech Innovation Award 2024
 
Powerful Google developer tools for immediate impact! (2023-24 C)
Powerful Google developer tools for immediate impact! (2023-24 C)Powerful Google developer tools for immediate impact! (2023-24 C)
Powerful Google developer tools for immediate impact! (2023-24 C)
 
Tata AIG General Insurance Company - Insurer Innovation Award 2024
Tata AIG General Insurance Company - Insurer Innovation Award 2024Tata AIG General Insurance Company - Insurer Innovation Award 2024
Tata AIG General Insurance Company - Insurer Innovation Award 2024
 
A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)
 
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
 
Developing An App To Navigate The Roads of Brazil
Developing An App To Navigate The Roads of BrazilDeveloping An App To Navigate The Roads of Brazil
Developing An App To Navigate The Roads of Brazil
 
Advantages of Hiring UIUX Design Service Providers for Your Business
Advantages of Hiring UIUX Design Service Providers for Your BusinessAdvantages of Hiring UIUX Design Service Providers for Your Business
Advantages of Hiring UIUX Design Service Providers for Your Business
 
Apidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, Adobe
Apidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, AdobeApidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, Adobe
Apidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, Adobe
 
[2024]Digital Global Overview Report 2024 Meltwater.pdf
[2024]Digital Global Overview Report 2024 Meltwater.pdf[2024]Digital Global Overview Report 2024 Meltwater.pdf
[2024]Digital Global Overview Report 2024 Meltwater.pdf
 
What Are The Drone Anti-jamming Systems Technology?
What Are The Drone Anti-jamming Systems Technology?What Are The Drone Anti-jamming Systems Technology?
What Are The Drone Anti-jamming Systems Technology?
 
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
 
presentation ICT roal in 21st century education
presentation ICT roal in 21st century educationpresentation ICT roal in 21st century education
presentation ICT roal in 21st century education
 
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
 
Histor y of HAM Radio presentation slide
Histor y of HAM Radio presentation slideHistor y of HAM Radio presentation slide
Histor y of HAM Radio presentation slide
 
Partners Life - Insurer Innovation Award 2024
Partners Life - Insurer Innovation Award 2024Partners Life - Insurer Innovation Award 2024
Partners Life - Insurer Innovation Award 2024
 
How to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerHow to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected Worker
 

Seven Versions of One Web Application

  • 1. Yakov Fain, Farata Systems 7 Versions of One Web Application
  • 3. We’ll  Review  7  Versions  of  the  UI  of  this  Single  Page  Applica?on   SPA:  One  Web  page,  AJAX  calls  bring  the  data  as  needed,  CSS  hides/shows  HTML  elements  
  • 4. …  and  the  7  versions  are…   1.  HTML/AJAX   2.  HTML  +  Responsive  Web  Design   3.  With  jQuery  library     4.  With  Ext  JS  framework   5.  Modularizing  HTML5   6.  With  jQuery  Mobile   7.  With  Sencha  Touch  
  • 6. V1:  HTML,  JS,  CSS,  AJAX,  JSON   //  Loading  data    with  AJAX  and  parsing  JSON                                   func9on  loadData(dataUrl)  {    var  xhr  =  new  XMLH+pRequest();        xhr.open('GET',  dataUrl,  true);      xhr.onreadystatechange  =  func9on()  {      if  (xhr.readyState  ==  4)  {        if  (xhr.status  ==  200)  {          var  jsonData  =  xhr.responseText;            //parse  json  data          var  campaignsData  =  JSON.parse(jsonData).campaigns;          showCampaignsInfo(campaignsData);        }  else  {          console.log(xhr.statusText);        }      }    }    xhr.send(null);   }  
  • 9. V2:  Responsive  Web  Design(RWD)   •  Should  we  create  separate  versions  for  desktop  and   mobile?   •  How  many  versions  of  the  UI  to  create?   •  Can  we  have  a  single  HTML  version  for  all  devices?   •  CSS  Media  Queries  –    layouts  based  on  screen  width   •  Seing  CSS  Breakpoints   •  Pros  and  Cons  of  RWD    
  • 10. Remember  the  wireframe  for  desktops?  
  • 11. Wireframing  for  a  table  in  portrait    
  • 13. Wireframing  for  smaller  phones   These  are  the  wireframes  for  3  phone  screens  
  • 14. V2:  Demo   1.  Basic  Media  Queries   2.  Responsive  Header   3.  Responsive   Dona?on   4.  Responsive  Final  
  • 15. RWD  Pros  and  Cons   •  RWD  is  good  for  publishing  info.  Mobile  frameworks  can  be  a   beker  choice  for  interac?ve  apps   •  RWD  allows  to  have  a  single  app  code  base   •  Mobile  versions  of  an  app  may  need  limited  func?onality  and   specific  naviga?on   •  RWD  means  larger  traffic  (heavy  CSS)  –  no  good  for  slower   connec?ons   •  Mobile  frameworks  offer  more  na?ve  look  and  feel  of  the  UI     Libraries  of  responsive  UI  components:   Bootstrap:  hkp://getbootstrap.com   Seman?c  UI:  hkp://seman?c-­‐ui.com          
  • 16. V3:  With  jQuery  Library   •  Learning  jQuery  is  easy  for  designers  –  mostly  HTML.   •  40  –  50%  of  top  Web  sites  use  jQuery  (see  bultwith.com)         •  It’s  a  light-­‐weight  addi?on  to  your  app  –  33Kb  gzipped,  minified   •  Shorter  than  in  JS  syntax  for  DOM  Browsing     •  $()  –  pass  it  a  String,    pass  it  a  func?on     •  There  are  thousands  plugins  in  jQuery  Plugin  Registry  
  • 17. DOM  Querying  &  Func?on  Chaining  
  • 18. An  AJAX  call  in  jQuery   The  shortcut  methods:  $.get(),  $.post(),  $.getJSON()  
  • 19. V3:  Demo  with  jQuery  
  • 20. V4:  With  Sencha  Ext  JS  Framework   •  Ext  JS  has  rich  library  of  enterprise-­‐grade  components,  e.g.  grids,  charts   •  Cool  code  generator  Sencha  CMD   •  Promotes  MVC  architecture   •  Some  code  reuse  for  mobile  app  with  Sencha  Touch   •  The  “weight”  of  the  app  substan?ally  increases   •  If  you  decided  to  go  with  Ext  JS,  there  is  no  easy  way  out   •  Doesn’t  support  Responsive  Web  Design   •  Has  steep  learning  curve  –  has  no  HTML,  but  new  JS-­‐based  syntax  
  • 21. Ext  JS:    index.html  and  app.js  
  • 22. Ext  JS:    index.html  and  app.js  
  • 24. Genera?ng  a  project  with  Sencha  CMD   sencha  -­‐sdk  /Library/ext-­‐4.2  generate  app  HelloWorld  /Users/yfain11/hello  
  • 25. The  View  Fragment:  DonateForm.js    
  • 26. V4:  Demo  with  Ext  JS  
  • 27. V5:  Modularizing  UI   •  Large  apps  should  be  modularized  to  avoid  loading  all  code  at  once.   •  Mul?ple  <script> tags  may  depend  on  each  other  and  have  to   be  loaded  in  certain  order.   •  Need  to  be  able  to  specify  dependencies  between  the  modules.   Need  to  avoid  pollu?ng  global  scope  and  name  conflicts.     Manually  wri?ng  Modules  doesn’t  solve  these  issues.   •  Today:  CommonJS  and  Async  Module  Defini?on  (AMD)  specs   •  Tomorrow:  ECMAScript  6  spec  (a.k.a.  Harmony)  defines  modules.  
  • 28. One  way  of  implemen?ng  Module  Pakern   Passing  inside  the  module  a  reference  to  the  global  window  object    
  • 29. CommonJS  is  an  effort  to  standardize  JS  APIs.   CommonJS  Modules  defines  3  variables  for  modules:                -­‐  requires          -­‐  exports          -­‐  module   Node.js  framework  implements  CommonJS  Modules  spec  and   provides  these  global  variables.  
  • 30. Code  Sample  With  CommonJS  
  • 31. CommonJS  Pros  and  Cons   Pros:     •  Simple  API     Cons:   •  Mainly  for  the  server-­‐side  JavaScript.  Web  browsers  don’t  have     require,  export,  and  module  variables.       •  The  require  method  is  synchronous.       •  CommonJS  API  is  suitable  for  loading  JS  files,  but  can’t  load  CSS     and  HTML.  
  • 32. Asynchronous  Module  Defini?on  (AMD)   AMD  is  a  proposal  for  async  loading  of  both  the  module  and  its   dependencies  in  Web  browsers.       You  provide  define  and  require  func?ons:     define(! module_id, // optional! [dependencies],! function (){! // This function runs once when the module and its dependencies are loaded! }! );! ! ! require(["main"], function() {! console.log(”The module main is loaded");! });! !   ! ! ! The  func?on  define  defines  the  module  and  returns  it  once  it’s  needed.     The  require  executes  the  given  func?on  checking  that  the  dependencies  were  loaded.    
  • 33. Save  The  Child  Modularized  With  RequireJS   Lis?ng  modules  in  config.js  
  • 34. V5  Demo:  With  RequireJS  
  • 36. “Way  To  Give”  Module  Defini?on  
  • 37. V6:  With  jQuery  Mobile   •  Easy  to  learn.  Built  on  top  of  jQuery  Core  library   •  HTML5  allows  crea?ng  custom  non-­‐visible  akributes.  They   have  to  start  with  data-:   <div data-role="page" id="Stats"> •  The  UI  shows  one  page  at  a  ?me   •  Light-­‐weight  (90Kb  gZipped)  
  • 38. Mul?-­‐Page  Template   <body> <!-- Page 1 --> <div data-role="page" id="Donate” > ... </div> <!-- Page 2 --> <div data-role="page" id="Stats” > ... </div> </body> The  content  of  mul?ple  pages  is  located  in  one  file.     When  the  app  starts,  only  the  first  page  is  displayed  
  • 39. Mul?-­‐Page  Template  (cont.)   <body> <!-- Page 1 --> <div data-role="page" id="Donate"> <div data-role="header" >...</div> <div data-role="content" >...</div> <div data-role="footer" >...</div> </div> <!-- Page 2 --> <div data-role="page" id="Stats"> ... </div> </body>
  • 40. Naviga?on  Bar   <div data-role="navbar"> <ul> <li> <a href="#Who-We-Are">Who We Are</a> </li> <li> <a href="#What-We-Do">What We Do</a> </li> <li> <a href="#Where-We-Work">Where We Work</a> </li> <li> <a href="#Way-To-Give">Way To Give</a> </li> </ul> </div>
  • 42. The  Back  Bukon   <div data-role="page" id="Stats" data-add-back-btn="true"> <div data-role="header" > <h1>Statistics</h1> </div> Statistics will go here </div>
  • 43. Single-­‐Page  Template   An  HTML  file  contains  the  content  of  a  single  page.     <div data-role="navbar"> <ul> <li> <a href="page-1.html" data-transition="slideup">Page #1</a> </li> <li> <a href="#" class="ui-state-persist">Page #2</a> </li> <li> <a href="page-3.html" data-transition="slideup">Page #3</a> </li> <li> <a href="page-4.html" data-transition="slideup">Page #4</a> </li> </ul> </div>
  • 44. V6:  Demo  With  jQuery  Mobile  
  • 45. V7:  With  Sencha  Touch   •  Sencha  Touch  is  a  smaller  brother  of  Ext  JS   •  It  comes  with  mobile  versions  of  lists,   forms,  toolbars,  bukons,  charts,  audio,   video,  carousel  etc.   •  Jumpstart  development  with  genera?ng   the  app  with  Sencha  CMD.   •  Package  the  Sencha  Touch  app  as  na?ve  
  • 46. The  app.JS   Ext.applica?on({          name:  'SSC',            requires:  [                  'Ext.MessageBox'          ],            views:  [                  'About',                  'CampaignsMap',                  'DonateForm',                  'DonorsChart',                  'LoginForm',                  'LoginToolbar',                  'Main',                  'Media',                  'Share',                  'ShareTile'          ],            stores:  [                  'Campaigns',                  'Countries',                  'Donors',                  'States',                  'Videos'          ],x            controllers:  [                  'Login'          ],            launch:  func?on()  {                  //  Destroy  the  #appLoadingIndicator  element                  Ext.fly('appLoadingIndicator').destroy();                    //  Ini?alize  the  main  view                  Ext.Viewport.add(Ext.create('SSC.view.Main'));          },            onUpdated:  func?on()  {                  Ext.Msg.confirm(                          "Applica?on  Update",                          "This  applica?on  has  just  successfully  been  updated   to  the  latest  version.  Reload  now?",                          func?on(bukonId)  {                                  if  (bukonId  ===  'yes')  {                                          window.loca?on.reload();                                  }                          }                  );          }   });  
  • 50. jQuery  Mobile  or  Sencha  Touch?   Use  jQuery  Mobile  if:     •  You  are  afraid  of  being  locked  up  with  any  one  vendor.     •  You  need  your  applica?on  to  work  on  most  of  the  mobile  pla€orms.   •  You  prefer  declara?ve  UI  and  hate  debugging  JavaScript.  
  • 51. jQuery  Mobile  or  Sencha  Touch?   Use  Sencha  Touch  if:     •  You  like  to  have  a  rich  library  of  pre-­‐created  UI   •  Your  applica?on  needs  smooth  anima?on   •  You  are  into  MVC     •  You  want  to  package  your  applica?on  as  a  na?ve  one   •  You  want  your  applica?on  to  look  as  close  to  the  na?ve  ones     as  possible  
  • 52. V7:  Demo  With  Sencha  Touch  
  • 53. Where  to  go  next?   Google  Dart  Language:   hkps://www.dartlang.org     Google  Angular  Dart  Framework:   hkps://github.com/angular/angular.dart    
  • 54. Links   •  7  versions  of  the  Save  The  Child  app:   hkp://savesickchild.org   •  Enterprise  Web  Dev  book:   hkp://oreil.ly/1hxK5hl       •  My  employer:       hkp://faratasystems.com     •  My  Twiker:  @yfain