SlideShare une entreprise Scribd logo
1  sur  18
Télécharger pour lire hors ligne
UI Develepoment in the browser?


 YES!             oh,   NO!
HTML, CSS, XML,
 JavaScript and   the browser API ...
the browser API
ok we need a framework,
     but remember
  this is only plan b ...
YUI
              Ext JS               qooxdoo
                       Ample SDK                Backbase
      jQuery UI
                                   dojo dijit       AJAX.org
        JavaScriptMVC
                           MooTools
GWT                                       jQuery           prototype
           Cappuccino
  JSF                                      dojo
                   ASP.NET Ajax                     Raphaël
         SAJAX
                  XAJAX          script.aculo.us

                          vapor.js
Standards for UI Development?

    XHTML XForms

  XPath                HTML5
                                  WHATWG
             W3C
XInclude             XBL         Web Controls
            SMIL
  XML Schema      CSS3
              SVG DOM           XUL
XSLT REX                               Mozilla
Ok Standards, but now?
           Yes, with Ample SDK:
DOM Level 2 Core / Events & Selector API
HTML5 Canvas / Forms
CSS2.1 fixes & CSS 3 Namespaces, UI
SVG - vector graphics (yes in IE5 )
SMIL - Synchronized Multimedia Integration Language
XSLT - transform XML fragments with XSL-T stylesheets
XPath - expressions to locate XML nodes (in dev.)
XInclude - merge and XML inclusion
XUL - XML User Interface Language
programatic                          And what is „declarative“ ?
<div id="slider" />

//YUI
YUI().use('slider', function (Y) {
                                               declarative
!   var slider = new Y.Slider({                // Ajax.org Platform
!   !    min! !  : 20,                         <a:slider min="20" max="40" />
!   !    max! !  : 40
!   });                                        // Backbase
!   slider.render('#slider');                  <b:slider min="20" max="40" />
});
                                               //Ample SDK
// ExtJS                                       <xul:scale min="20" max="40" />
new Ext.Slider({
    renderTo!: 'slider',
    minValue!: 20,
    maxValue!: 40
});

//jQuery UI
                                 plain vanilla HTML and JS
$('#slider').slider({
                                 <div class="x-slider x-slider-horz" id="ext-comp-1001" s
!   min! !   : 20,
                                 !   <div class="x-slider-end" id="ext-gen3">
!   max! !   : 40
                                 !   !    <div class="x-slider-inner" id="ext-gen4" style=
});
                                 !   !    !   <div class="x-slider-thumb" id="ext-gen6" st
                                 !   !    !   </div>
                                 !   !    !   <a hidefocus="on" tabindex="-1" href="#" cla
                                 !   !    </div>
                                 !   </div>
Ok declarative is shorter,
           but why it is better?
- again, it is standard base (Mozilla XUL) in Ample SDK
- namespacing and own domain specific markup
- separation of concerns (layout, logic and style)
- building blocks so easier to maintain
- better readable (and readable for non js guys)
 - ui reusable in the future (or after api change)
 - easier to split responsibilities in teams
   (ui dude and js coder)
LOGIC          UI         DESIGN


JAVASCRIPT    INTERFACE     WEB
DEVELOPER      ENGINEER   DESIGNER


Javascript      XUL          CSS
DOM Level 3     SVG         HTML 5
Ladies and Gentlemen, the code ...
<head>
    <!-- (A) Ample SDK runtime and UI language -->
    <script type="text/javascript" src="ample/runtime.js"></script>
    <script type="text/javascript" src="ample/languages/xul/xul.js"></script>
    <link type="text/css" src="ample/languages/xul/themes/default/style.css"/>

    <!-- (1) Style -->
    <style type="text/ample+css">
        @namespace xul "http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul";
        xul|button {
             color: red;
        }
    </style>

     <!-- (2) Logic -->
     <script type="text/javascript">
         function alertHelloWorld(oEvent) {
             alert('Element "' + oEvent.target.tagName + '" was clicked');
         }
     </script>
 </head>
<body>

    <!-- (3) Layout -->
    <script type="application/ample+xml">!
            <xul:button onclick="alertHelloWorld(event)">Hello, World!</xul:button>
    </script>!
             !   !    !   !   !   !    !
 </body>
The Ample SDK way.

 equalize browser APIs without introducing new:
 - brings features into the browser
 - fixes existing features
 - or does nothing if the feature is well implemented
                            Text


      „ ... coding against Ample SDK is like
Yeah, doing it against a cross-browser browser! “
How it works ...
- Ample SDK is a browser in a browser
- generates the browser DOM (shadow) tree
- Ample SDK Node is the brave brother of the DOM Node
                                                   div
                                       div                       div
         select
                                 div         div         input         button
    option    option
                                 div         div



  Ample SDK DOM                Browse DOM (shadow tree)
Ample SDK Node API

getElementById                        childNodes, parentNode
getElementsByTagName (NS)                  firstChild, lastChild
querySelector, querySelectorAll               previousSibling
createElement (NS), createTextNode                 nextSibling
setAttribute, getAttribute, removeAttribute (NS)
appendChild, insertBefore, removeChild, replaceChild
Class Model (ample.classes)
                    Node




Document                         Element




             OWNElement         XULElement       XHTMLElement




           OWNFancyElement   XULWindowElement   XHTMLElement_div
Ample SDK jQuery API
 DOM API

document.getElementById(“slider“).setAttribute(“value“,“30“)
 AMPLE SDK API

ample.getElementById(“slider“).setAttribute(“value“,“30“)
 AMPLE SDK jQUERY API

ample.query(“#slider“).attr(“value“,“30“)
Conclusion

- natural client-side development experience
- good separation of concerns (layout, logic and style)
- modular and readable UI building
- standard based API that will stay
- create own domain specific markup language
- API validation and guarding
- open source and available on github
- ...
More Information

amplesdk.com
github.com/clientside/amplesdk

 Sergey Ilinsky   @ilinsky
 Béla Varga       @netzzwerg
THX

Contenu connexe

Tendances

Styling components with JavaScript
Styling components with JavaScriptStyling components with JavaScript
Styling components with JavaScriptbensmithett
 
Styling Components with JavaScript: MelbCSS Edition
Styling Components with JavaScript: MelbCSS EditionStyling Components with JavaScript: MelbCSS Edition
Styling Components with JavaScript: MelbCSS Editionbensmithett
 
An in-depth look at jQuery
An in-depth look at jQueryAn in-depth look at jQuery
An in-depth look at jQueryPaul Bakaus
 
Angular JS blog tutorial
Angular JS blog tutorialAngular JS blog tutorial
Angular JS blog tutorialClaude Tech
 
jQuery Tips Tricks Trivia
jQuery Tips Tricks TriviajQuery Tips Tricks Trivia
jQuery Tips Tricks TriviaCognizant
 
Jacob Waller: Webifying Titanium Development
Jacob Waller: Webifying Titanium DevelopmentJacob Waller: Webifying Titanium Development
Jacob Waller: Webifying Titanium DevelopmentAxway Appcelerator
 
Managing JavaScript Dependencies With RequireJS
Managing JavaScript Dependencies With RequireJSManaging JavaScript Dependencies With RequireJS
Managing JavaScript Dependencies With RequireJSDen Odell
 
09 - express nodes on the right angle - vitaliy basyuk - it event 2013 (5)
09 - express nodes on the right angle - vitaliy basyuk - it event 2013 (5)09 - express nodes on the right angle - vitaliy basyuk - it event 2013 (5)
09 - express nodes on the right angle - vitaliy basyuk - it event 2013 (5)Igor Bronovskyy
 
从YUI2到YUI3看前端的演变
从YUI2到YUI3看前端的演变从YUI2到YUI3看前端的演变
从YUI2到YUI3看前端的演变Kejun Zhang
 
JavaScript Libraries (@Media)
JavaScript Libraries (@Media)JavaScript Libraries (@Media)
JavaScript Libraries (@Media)jeresig
 
jQuery (BostonPHP)
jQuery (BostonPHP)jQuery (BostonPHP)
jQuery (BostonPHP)jeresig
 
Requirejs
RequirejsRequirejs
Requirejssioked
 
the 5 layers of web accessibility - Open Web Camp II
the 5 layers of web accessibility - Open Web Camp IIthe 5 layers of web accessibility - Open Web Camp II
the 5 layers of web accessibility - Open Web Camp IIDirk Ginader
 
JavaScript Libraries (Kings of Code)
JavaScript Libraries (Kings of Code)JavaScript Libraries (Kings of Code)
JavaScript Libraries (Kings of Code)jeresig
 
Mobile HTML, CSS, and JavaScript
Mobile HTML, CSS, and JavaScriptMobile HTML, CSS, and JavaScript
Mobile HTML, CSS, and JavaScriptfranksvalli
 
CodeFest 2014. Пухальский И. — Отзывчивые кроссплатформенные веб-приложения
CodeFest 2014. Пухальский И. — Отзывчивые кроссплатформенные веб-приложенияCodeFest 2014. Пухальский И. — Отзывчивые кроссплатформенные веб-приложения
CodeFest 2014. Пухальский И. — Отзывчивые кроссплатформенные веб-приложенияCodeFest
 
MVC pattern for widgets
MVC pattern for widgetsMVC pattern for widgets
MVC pattern for widgetsBehnam Taraghi
 
jQuery (DrupalCamp Toronto)
jQuery (DrupalCamp Toronto)jQuery (DrupalCamp Toronto)
jQuery (DrupalCamp Toronto)jeresig
 

Tendances (20)

dojo.Patterns
dojo.Patternsdojo.Patterns
dojo.Patterns
 
Styling components with JavaScript
Styling components with JavaScriptStyling components with JavaScript
Styling components with JavaScript
 
Styling Components with JavaScript: MelbCSS Edition
Styling Components with JavaScript: MelbCSS EditionStyling Components with JavaScript: MelbCSS Edition
Styling Components with JavaScript: MelbCSS Edition
 
An in-depth look at jQuery
An in-depth look at jQueryAn in-depth look at jQuery
An in-depth look at jQuery
 
Angular JS blog tutorial
Angular JS blog tutorialAngular JS blog tutorial
Angular JS blog tutorial
 
jQuery Tips Tricks Trivia
jQuery Tips Tricks TriviajQuery Tips Tricks Trivia
jQuery Tips Tricks Trivia
 
Jacob Waller: Webifying Titanium Development
Jacob Waller: Webifying Titanium DevelopmentJacob Waller: Webifying Titanium Development
Jacob Waller: Webifying Titanium Development
 
Managing JavaScript Dependencies With RequireJS
Managing JavaScript Dependencies With RequireJSManaging JavaScript Dependencies With RequireJS
Managing JavaScript Dependencies With RequireJS
 
09 - express nodes on the right angle - vitaliy basyuk - it event 2013 (5)
09 - express nodes on the right angle - vitaliy basyuk - it event 2013 (5)09 - express nodes on the right angle - vitaliy basyuk - it event 2013 (5)
09 - express nodes on the right angle - vitaliy basyuk - it event 2013 (5)
 
从YUI2到YUI3看前端的演变
从YUI2到YUI3看前端的演变从YUI2到YUI3看前端的演变
从YUI2到YUI3看前端的演变
 
JavaScript Libraries (@Media)
JavaScript Libraries (@Media)JavaScript Libraries (@Media)
JavaScript Libraries (@Media)
 
jQuery (BostonPHP)
jQuery (BostonPHP)jQuery (BostonPHP)
jQuery (BostonPHP)
 
Requirejs
RequirejsRequirejs
Requirejs
 
the 5 layers of web accessibility - Open Web Camp II
the 5 layers of web accessibility - Open Web Camp IIthe 5 layers of web accessibility - Open Web Camp II
the 5 layers of web accessibility - Open Web Camp II
 
JavaScript Libraries (Kings of Code)
JavaScript Libraries (Kings of Code)JavaScript Libraries (Kings of Code)
JavaScript Libraries (Kings of Code)
 
Requirejs
RequirejsRequirejs
Requirejs
 
Mobile HTML, CSS, and JavaScript
Mobile HTML, CSS, and JavaScriptMobile HTML, CSS, and JavaScript
Mobile HTML, CSS, and JavaScript
 
CodeFest 2014. Пухальский И. — Отзывчивые кроссплатформенные веб-приложения
CodeFest 2014. Пухальский И. — Отзывчивые кроссплатформенные веб-приложенияCodeFest 2014. Пухальский И. — Отзывчивые кроссплатформенные веб-приложения
CodeFest 2014. Пухальский И. — Отзывчивые кроссплатформенные веб-приложения
 
MVC pattern for widgets
MVC pattern for widgetsMVC pattern for widgets
MVC pattern for widgets
 
jQuery (DrupalCamp Toronto)
jQuery (DrupalCamp Toronto)jQuery (DrupalCamp Toronto)
jQuery (DrupalCamp Toronto)
 

Similaire à Declarative and standards-based web application development with the Ample SDK

How to make Ajax Libraries work for you
How to make Ajax Libraries work for youHow to make Ajax Libraries work for you
How to make Ajax Libraries work for youSimon Willison
 
Thomas Lobinger
Thomas LobingerThomas Lobinger
Thomas LobingerCodeFest
 
Sergey Ilinsky Presentation Ample Sdk
Sergey Ilinsky Presentation Ample SdkSergey Ilinsky Presentation Ample Sdk
Sergey Ilinsky Presentation Ample SdkAjax Experience 2009
 
Survive JavaScript - Strategies and Tricks
Survive JavaScript - Strategies and TricksSurvive JavaScript - Strategies and Tricks
Survive JavaScript - Strategies and TricksJuho Vepsäläinen
 
Building assets on the fly with Node.js
Building assets on the fly with Node.jsBuilding assets on the fly with Node.js
Building assets on the fly with Node.jsAcquisio
 
JavaScript Libraries: The Big Picture
JavaScript Libraries: The Big PictureJavaScript Libraries: The Big Picture
JavaScript Libraries: The Big PictureSimon Willison
 
How to Extend Axure's Animation Capability
How to Extend Axure's Animation CapabilityHow to Extend Axure's Animation Capability
How to Extend Axure's Animation CapabilitySvetlin Denkov
 
Scala Italy 2015 - Hands On ScalaJS
Scala Italy 2015 - Hands On ScalaJSScala Italy 2015 - Hands On ScalaJS
Scala Italy 2015 - Hands On ScalaJSAlberto Paro
 
Alberto Paro - Hands on Scala.js
Alberto Paro - Hands on Scala.jsAlberto Paro - Hands on Scala.js
Alberto Paro - Hands on Scala.jsScala Italy
 
e-suap - client technologies- english version
e-suap - client technologies- english versione-suap - client technologies- english version
e-suap - client technologies- english versionSabino Labarile
 
Ionic Framework - get up and running to build hybrid mobile apps
Ionic Framework - get up and running to build hybrid mobile appsIonic Framework - get up and running to build hybrid mobile apps
Ionic Framework - get up and running to build hybrid mobile appsAndreas Sahle
 
WebNet Conference 2012 - Designing complex applications using html5 and knock...
WebNet Conference 2012 - Designing complex applications using html5 and knock...WebNet Conference 2012 - Designing complex applications using html5 and knock...
WebNet Conference 2012 - Designing complex applications using html5 and knock...Fabio Franzini
 
UIWebViewでつくるUI
UIWebViewでつくるUIUIWebViewでつくるUI
UIWebViewでつくるUIcocopon
 
HTML5 應用程式開發簡介
HTML5 應用程式開發簡介HTML5 應用程式開發簡介
HTML5 應用程式開發簡介Timothy Chien
 
Xitrum Web Framework Live Coding Demos / Xitrum Web Framework ライブコーディング
Xitrum Web Framework Live Coding Demos / Xitrum Web Framework ライブコーディングXitrum Web Framework Live Coding Demos / Xitrum Web Framework ライブコーディング
Xitrum Web Framework Live Coding Demos / Xitrum Web Framework ライブコーディングscalaconfjp
 

Similaire à Declarative and standards-based web application development with the Ample SDK (20)

How to make Ajax Libraries work for you
How to make Ajax Libraries work for youHow to make Ajax Libraries work for you
How to make Ajax Libraries work for you
 
Thomas Lobinger
Thomas LobingerThomas Lobinger
Thomas Lobinger
 
Sergey Ilinsky Presentation Ample Sdk
Sergey Ilinsky Presentation Ample SdkSergey Ilinsky Presentation Ample Sdk
Sergey Ilinsky Presentation Ample Sdk
 
Play framework
Play frameworkPlay framework
Play framework
 
Coding the UI
Coding the UICoding the UI
Coding the UI
 
Coding Ui
Coding UiCoding Ui
Coding Ui
 
Jsf2 html5-jazoon
Jsf2 html5-jazoonJsf2 html5-jazoon
Jsf2 html5-jazoon
 
Survive JavaScript - Strategies and Tricks
Survive JavaScript - Strategies and TricksSurvive JavaScript - Strategies and Tricks
Survive JavaScript - Strategies and Tricks
 
Building assets on the fly with Node.js
Building assets on the fly with Node.jsBuilding assets on the fly with Node.js
Building assets on the fly with Node.js
 
JavaScript Libraries: The Big Picture
JavaScript Libraries: The Big PictureJavaScript Libraries: The Big Picture
JavaScript Libraries: The Big Picture
 
How to Extend Axure's Animation Capability
How to Extend Axure's Animation CapabilityHow to Extend Axure's Animation Capability
How to Extend Axure's Animation Capability
 
Jquery
JqueryJquery
Jquery
 
Scala Italy 2015 - Hands On ScalaJS
Scala Italy 2015 - Hands On ScalaJSScala Italy 2015 - Hands On ScalaJS
Scala Italy 2015 - Hands On ScalaJS
 
Alberto Paro - Hands on Scala.js
Alberto Paro - Hands on Scala.jsAlberto Paro - Hands on Scala.js
Alberto Paro - Hands on Scala.js
 
e-suap - client technologies- english version
e-suap - client technologies- english versione-suap - client technologies- english version
e-suap - client technologies- english version
 
Ionic Framework - get up and running to build hybrid mobile apps
Ionic Framework - get up and running to build hybrid mobile appsIonic Framework - get up and running to build hybrid mobile apps
Ionic Framework - get up and running to build hybrid mobile apps
 
WebNet Conference 2012 - Designing complex applications using html5 and knock...
WebNet Conference 2012 - Designing complex applications using html5 and knock...WebNet Conference 2012 - Designing complex applications using html5 and knock...
WebNet Conference 2012 - Designing complex applications using html5 and knock...
 
UIWebViewでつくるUI
UIWebViewでつくるUIUIWebViewでつくるUI
UIWebViewでつくるUI
 
HTML5 應用程式開發簡介
HTML5 應用程式開發簡介HTML5 應用程式開發簡介
HTML5 應用程式開發簡介
 
Xitrum Web Framework Live Coding Demos / Xitrum Web Framework ライブコーディング
Xitrum Web Framework Live Coding Demos / Xitrum Web Framework ライブコーディングXitrum Web Framework Live Coding Demos / Xitrum Web Framework ライブコーディング
Xitrum Web Framework Live Coding Demos / Xitrum Web Framework ライブコーディング
 

Dernier

TeamStation AI System Report LATAM IT Salaries 2024
TeamStation AI System Report LATAM IT Salaries 2024TeamStation AI System Report LATAM IT Salaries 2024
TeamStation AI System Report LATAM IT Salaries 2024Lonnie McRorey
 
Nell’iperspazio con Rocket: il Framework Web di Rust!
Nell’iperspazio con Rocket: il Framework Web di Rust!Nell’iperspazio con Rocket: il Framework Web di Rust!
Nell’iperspazio con Rocket: il Framework Web di Rust!Commit University
 
Digital Identity is Under Attack: FIDO Paris Seminar.pptx
Digital Identity is Under Attack: FIDO Paris Seminar.pptxDigital Identity is Under Attack: FIDO Paris Seminar.pptx
Digital Identity is Under Attack: FIDO Paris Seminar.pptxLoriGlavin3
 
Take control of your SAP testing with UiPath Test Suite
Take control of your SAP testing with UiPath Test SuiteTake control of your SAP testing with UiPath Test Suite
Take control of your SAP testing with UiPath Test SuiteDianaGray10
 
"ML in Production",Oleksandr Bagan
"ML in Production",Oleksandr Bagan"ML in Production",Oleksandr Bagan
"ML in Production",Oleksandr BaganFwdays
 
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024BookNet Canada
 
The Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptx
The Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptxThe Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptx
The Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptxLoriGlavin3
 
Generative AI for Technical Writer or Information Developers
Generative AI for Technical Writer or Information DevelopersGenerative AI for Technical Writer or Information Developers
Generative AI for Technical Writer or Information DevelopersRaghuram Pandurangan
 
Merck Moving Beyond Passwords: FIDO Paris Seminar.pptx
Merck Moving Beyond Passwords: FIDO Paris Seminar.pptxMerck Moving Beyond Passwords: FIDO Paris Seminar.pptx
Merck Moving Beyond Passwords: FIDO Paris Seminar.pptxLoriGlavin3
 
Ensuring Technical Readiness For Copilot in Microsoft 365
Ensuring Technical Readiness For Copilot in Microsoft 365Ensuring Technical Readiness For Copilot in Microsoft 365
Ensuring Technical Readiness For Copilot in Microsoft 3652toLead Limited
 
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek SchlawackFwdays
 
What's New in Teams Calling, Meetings and Devices March 2024
What's New in Teams Calling, Meetings and Devices March 2024What's New in Teams Calling, Meetings and Devices March 2024
What's New in Teams Calling, Meetings and Devices March 2024Stephanie Beckett
 
What is DBT - The Ultimate Data Build Tool.pdf
What is DBT - The Ultimate Data Build Tool.pdfWhat is DBT - The Ultimate Data Build Tool.pdf
What is DBT - The Ultimate Data Build Tool.pdfMounikaPolabathina
 
Advanced Computer Architecture – An Introduction
Advanced Computer Architecture – An IntroductionAdvanced Computer Architecture – An Introduction
Advanced Computer Architecture – An IntroductionDilum Bandara
 
Transcript: New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024Transcript: New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024BookNet Canada
 
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024BookNet Canada
 
A Deep Dive on Passkeys: FIDO Paris Seminar.pptx
A Deep Dive on Passkeys: FIDO Paris Seminar.pptxA Deep Dive on Passkeys: FIDO Paris Seminar.pptx
A Deep Dive on Passkeys: FIDO Paris Seminar.pptxLoriGlavin3
 
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)Mark Simos
 
SALESFORCE EDUCATION CLOUD | FEXLE SERVICES
SALESFORCE EDUCATION CLOUD | FEXLE SERVICESSALESFORCE EDUCATION CLOUD | FEXLE SERVICES
SALESFORCE EDUCATION CLOUD | FEXLE SERVICESmohitsingh558521
 
Commit 2024 - Secret Management made easy
Commit 2024 - Secret Management made easyCommit 2024 - Secret Management made easy
Commit 2024 - Secret Management made easyAlfredo García Lavilla
 

Dernier (20)

TeamStation AI System Report LATAM IT Salaries 2024
TeamStation AI System Report LATAM IT Salaries 2024TeamStation AI System Report LATAM IT Salaries 2024
TeamStation AI System Report LATAM IT Salaries 2024
 
Nell’iperspazio con Rocket: il Framework Web di Rust!
Nell’iperspazio con Rocket: il Framework Web di Rust!Nell’iperspazio con Rocket: il Framework Web di Rust!
Nell’iperspazio con Rocket: il Framework Web di Rust!
 
Digital Identity is Under Attack: FIDO Paris Seminar.pptx
Digital Identity is Under Attack: FIDO Paris Seminar.pptxDigital Identity is Under Attack: FIDO Paris Seminar.pptx
Digital Identity is Under Attack: FIDO Paris Seminar.pptx
 
Take control of your SAP testing with UiPath Test Suite
Take control of your SAP testing with UiPath Test SuiteTake control of your SAP testing with UiPath Test Suite
Take control of your SAP testing with UiPath Test Suite
 
"ML in Production",Oleksandr Bagan
"ML in Production",Oleksandr Bagan"ML in Production",Oleksandr Bagan
"ML in Production",Oleksandr Bagan
 
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
 
The Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptx
The Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptxThe Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptx
The Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptx
 
Generative AI for Technical Writer or Information Developers
Generative AI for Technical Writer or Information DevelopersGenerative AI for Technical Writer or Information Developers
Generative AI for Technical Writer or Information Developers
 
Merck Moving Beyond Passwords: FIDO Paris Seminar.pptx
Merck Moving Beyond Passwords: FIDO Paris Seminar.pptxMerck Moving Beyond Passwords: FIDO Paris Seminar.pptx
Merck Moving Beyond Passwords: FIDO Paris Seminar.pptx
 
Ensuring Technical Readiness For Copilot in Microsoft 365
Ensuring Technical Readiness For Copilot in Microsoft 365Ensuring Technical Readiness For Copilot in Microsoft 365
Ensuring Technical Readiness For Copilot in Microsoft 365
 
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack
 
What's New in Teams Calling, Meetings and Devices March 2024
What's New in Teams Calling, Meetings and Devices March 2024What's New in Teams Calling, Meetings and Devices March 2024
What's New in Teams Calling, Meetings and Devices March 2024
 
What is DBT - The Ultimate Data Build Tool.pdf
What is DBT - The Ultimate Data Build Tool.pdfWhat is DBT - The Ultimate Data Build Tool.pdf
What is DBT - The Ultimate Data Build Tool.pdf
 
Advanced Computer Architecture – An Introduction
Advanced Computer Architecture – An IntroductionAdvanced Computer Architecture – An Introduction
Advanced Computer Architecture – An Introduction
 
Transcript: New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024Transcript: New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
 
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
 
A Deep Dive on Passkeys: FIDO Paris Seminar.pptx
A Deep Dive on Passkeys: FIDO Paris Seminar.pptxA Deep Dive on Passkeys: FIDO Paris Seminar.pptx
A Deep Dive on Passkeys: FIDO Paris Seminar.pptx
 
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)
 
SALESFORCE EDUCATION CLOUD | FEXLE SERVICES
SALESFORCE EDUCATION CLOUD | FEXLE SERVICESSALESFORCE EDUCATION CLOUD | FEXLE SERVICES
SALESFORCE EDUCATION CLOUD | FEXLE SERVICES
 
Commit 2024 - Secret Management made easy
Commit 2024 - Secret Management made easyCommit 2024 - Secret Management made easy
Commit 2024 - Secret Management made easy
 

Declarative and standards-based web application development with the Ample SDK

  • 1.
  • 2. UI Develepoment in the browser? YES! oh, NO! HTML, CSS, XML, JavaScript and the browser API ... the browser API
  • 3. ok we need a framework, but remember this is only plan b ...
  • 4. YUI Ext JS qooxdoo Ample SDK Backbase jQuery UI dojo dijit AJAX.org JavaScriptMVC MooTools GWT jQuery prototype Cappuccino JSF dojo ASP.NET Ajax Raphaël SAJAX XAJAX script.aculo.us vapor.js
  • 5. Standards for UI Development? XHTML XForms XPath HTML5 WHATWG W3C XInclude XBL Web Controls SMIL XML Schema CSS3 SVG DOM XUL XSLT REX Mozilla
  • 6. Ok Standards, but now? Yes, with Ample SDK: DOM Level 2 Core / Events & Selector API HTML5 Canvas / Forms CSS2.1 fixes & CSS 3 Namespaces, UI SVG - vector graphics (yes in IE5 ) SMIL - Synchronized Multimedia Integration Language XSLT - transform XML fragments with XSL-T stylesheets XPath - expressions to locate XML nodes (in dev.) XInclude - merge and XML inclusion XUL - XML User Interface Language
  • 7. programatic And what is „declarative“ ? <div id="slider" /> //YUI YUI().use('slider', function (Y) { declarative ! var slider = new Y.Slider({ // Ajax.org Platform ! ! min! ! : 20, <a:slider min="20" max="40" /> ! ! max! ! : 40 ! }); // Backbase ! slider.render('#slider'); <b:slider min="20" max="40" /> }); //Ample SDK // ExtJS <xul:scale min="20" max="40" /> new Ext.Slider({ renderTo!: 'slider', minValue!: 20, maxValue!: 40 }); //jQuery UI plain vanilla HTML and JS $('#slider').slider({ <div class="x-slider x-slider-horz" id="ext-comp-1001" s ! min! ! : 20, ! <div class="x-slider-end" id="ext-gen3"> ! max! ! : 40 ! ! <div class="x-slider-inner" id="ext-gen4" style= }); ! ! ! <div class="x-slider-thumb" id="ext-gen6" st ! ! ! </div> ! ! ! <a hidefocus="on" tabindex="-1" href="#" cla ! ! </div> ! </div>
  • 8. Ok declarative is shorter, but why it is better? - again, it is standard base (Mozilla XUL) in Ample SDK - namespacing and own domain specific markup - separation of concerns (layout, logic and style) - building blocks so easier to maintain - better readable (and readable for non js guys) - ui reusable in the future (or after api change) - easier to split responsibilities in teams (ui dude and js coder)
  • 9. LOGIC UI DESIGN JAVASCRIPT INTERFACE WEB DEVELOPER ENGINEER DESIGNER Javascript XUL CSS DOM Level 3 SVG HTML 5
  • 10. Ladies and Gentlemen, the code ... <head> <!-- (A) Ample SDK runtime and UI language --> <script type="text/javascript" src="ample/runtime.js"></script> <script type="text/javascript" src="ample/languages/xul/xul.js"></script> <link type="text/css" src="ample/languages/xul/themes/default/style.css"/> <!-- (1) Style --> <style type="text/ample+css"> @namespace xul "http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul"; xul|button { color: red; } </style> <!-- (2) Logic --> <script type="text/javascript"> function alertHelloWorld(oEvent) { alert('Element "' + oEvent.target.tagName + '" was clicked'); } </script> </head> <body> <!-- (3) Layout --> <script type="application/ample+xml">! <xul:button onclick="alertHelloWorld(event)">Hello, World!</xul:button> </script>! ! ! ! ! ! ! ! </body>
  • 11. The Ample SDK way. equalize browser APIs without introducing new: - brings features into the browser - fixes existing features - or does nothing if the feature is well implemented Text „ ... coding against Ample SDK is like Yeah, doing it against a cross-browser browser! “
  • 12. How it works ... - Ample SDK is a browser in a browser - generates the browser DOM (shadow) tree - Ample SDK Node is the brave brother of the DOM Node div div div select div div input button option option div div Ample SDK DOM Browse DOM (shadow tree)
  • 13. Ample SDK Node API getElementById childNodes, parentNode getElementsByTagName (NS) firstChild, lastChild querySelector, querySelectorAll previousSibling createElement (NS), createTextNode nextSibling setAttribute, getAttribute, removeAttribute (NS) appendChild, insertBefore, removeChild, replaceChild
  • 14. Class Model (ample.classes) Node Document Element OWNElement XULElement XHTMLElement OWNFancyElement XULWindowElement XHTMLElement_div
  • 15. Ample SDK jQuery API DOM API document.getElementById(“slider“).setAttribute(“value“,“30“) AMPLE SDK API ample.getElementById(“slider“).setAttribute(“value“,“30“) AMPLE SDK jQUERY API ample.query(“#slider“).attr(“value“,“30“)
  • 16. Conclusion - natural client-side development experience - good separation of concerns (layout, logic and style) - modular and readable UI building - standard based API that will stay - create own domain specific markup language - API validation and guarding - open source and available on github - ...
  • 18. THX