Top Banner
Enterprise Ajax - Client Edition Béla Varga bvarga [at] internetwire [dot] de
47

Backbase Intro

Nov 01, 2014

Download

Technology

Béla Varga

Backbase Javascript Framework Course
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: Backbase Intro

Enterprise Ajax - Client Edition

Béla Vargabvarga [at] internetwire [dot] de

Page 2: Backbase Intro

BackbaseEnterprise Ajax - Client Edition

Béla Vargabvarga [at] internetwire [dot] de

Page 3: Backbase Intro

Backbase Enterprise FrameworkBéla Varga

Das Unternehmen hinter Backbase

- gegründet 2003

- Zentrale in San Mateo - California

- Büro in Amsterdam

- ca. 80 Angestellte

www.backbase.com

2

Page 4: Backbase Intro

Backbase Enterprise FrameworkBéla Varga 3

- dynamischen laden von Daten und Elementen (JSON,XML)

- Javascript für die clientseitige Logik

- XHMTL/CSS für die Darstellung

Teile der Benutzeroberfläche ein und ausblendenCSS Werte veränderndynamischen erzeugen und löschen von XHMTL Elementen

eventgesteuerte Ereignisseclientseitige Validierung

Ajax Grundprinzipen

Page 5: Backbase Intro

Backbase Enterprise FrameworkBéla Varga

Zielsetzung des Frameworks:

- Web Standards (W3C) bündeln & erweitern

- Komplexität von Webapplikationen verringern

- Browser Quirks verbergen

DOM, Events, XML, Xpath, XSLT, Schema, XInclude, SMIL

Widgets (objektorientiert)

Backbase JavaScript API

Model Tree - Backbase XML Dokument

View Tree - der Browser DOM

Controller - Applikations und Widget Logik

Eigene deklarative Sprache - XEL

4

Page 6: Backbase Intro

Backbase Enterprise FrameworkBéla Varga

Backbase Technologien

- Client Core (closed source)

- BTL Backbase Widget Bibliothek

TDL - Element Definitionssprache

XEL und JavaScript runtime

JavaScript API und Kommandos

- XML Namespaces

Elemente aus verschiedenen Auszeichnungssprachen

5

Vorgefertigte und eigene Elemente

Definition der Bezeichnung und des Tags des Namensraumes

Page 7: Backbase Intro

Backbase Enterprise FrameworkBéla Varga

TDL (Tag Description Language)

- Wird von der Core Engine verarbeitet

- Eigene Widgets (Klassen)

- View Templates

- ObjektorientiertKonstruktor / Destruktor

Attribute / Eigenschaften und Methoden

Mehrfache Vererbung

Abstrakte Klassen und Interfaces

- Alle Elemente erben von DOM ElementenUmsetzung der W3C DOM Spezifikation

6

Page 8: Backbase Intro

ClassAttributeMethodEvent Handler

Page 9: Backbase Intro

Backbase Enterprise FrameworkBéla Varga

TDL - View Templates

- beschreibt das Aussehen des Elements im Browser

- erlaubt das Verschachteln von Elementen

- XML oder JavaScript verwendbar

8

- nur ein root Knoten erlaubt

<d:template type="text/javascript"> var oRoot = document.createElement('div'); var oGate = document.createElement('div'); oRoot.appendChild(oGate); return [oRoot, oGate];</d:template>

<d:template type="application/xhtml+xml"> <div> <div> <d:content/> </div> </div></d:template>

Page 10: Backbase Intro

Backbase Enterprise FrameworkBéla Varga

TDL - Attributes

- Tag: <attribute>

- kann beim initialisieren des Elementes gesetzt werden

- optional kann beim setzen und verändern des Wertes Code ausgeführt werden

9

- erlaubt nur string Werte

<mapper>

<changer>

Wird beim intialisieren und Änderung des Attributes ausgeführt

Wird nur bei Änderungen des Attributes ausgeführt

Page 11: Backbase Intro

Backbase Enterprise FrameworkBéla Varga

TDL - Property

- Tag: <property>

- kann alle JavaScript Typen (string, boolean, array, object) speichern

- optional können setter und getter Methoden gesetzt werden

10

<setter>

<getter>

Page 12: Backbase Intro

Backbase Enterprise FrameworkBéla Varga

TDL - Methoden

- Tag: <d:method>

11

- Argumente: <d:argument>

- Ist durch Subklassen überschreibbar

- aufruf durch element.methoden() oder <e:call/>

Page 13: Backbase Intro

Backbase Enterprise FrameworkBéla Varga

XEL (Declarative Execution Language)

- wird von der Core Engine verarbeitet

- Grundfunktionalitäten

- austauschbar durch JavaScript

12

Funktion und Methodeaufrufe

Variablen, Schleifen, Iteration, Error Handling

- plattformunabhängige Definition der Client Logik

- Vereinfachung von JavaScriptasynchrones Laden

DOM Manipulation

- nahtlose Einbindung von XPath

Page 14: Backbase Intro

Backbase Enterprise FrameworkBéla Varga

XEL vs. JS

13

<button><e:handler event="click" type="application/xml">

<c:create destination="id('productList')" mode="appendChild">

<li>New item</li><li>New item</li><li>New item</li><li>New item</li>

</c:create>

</e:handler></button>

das gleiche in JavaScript? 4 x createElement, 4 x createTextNode, appendChild ...

Page 15: Backbase Intro

Backbase Enterprise FrameworkBéla Varga

DOM Manipulation

- alle Element besitzen die W3C DOM Level 2 API

- XEL Methoden

14

createElement, create TextNodeappendChild, removeChild

childNodes

- bb Core JavaScript API

bb.controller.destructChildren()

<c:destroy with="id(myDiv)" />

Page 16: Backbase Intro

Backbase Enterprise FrameworkBéla Varga

XPath

15

"ancestor::form" "descendant::input[@name = 'myInput']"

"id('myElement')//w4:element[@value = 'myValue']"

"following-sibling::td[2]" "concat( 'input', '[1]')"

"model()/id('myDiv')" "view()/id('myDiv')"

Page 17: Backbase Intro

Backbase Enterprise FrameworkBéla Varga

XSLT - Beispiel

16

...

<e:variable name="xmlSource"><c:load url="data.xml" />

</e:variable>

<e:variable name="stylesheet"><c:load url="datastyle.xsl" />

</e:variable>

<c:transform select="$xmlSource" stylesheet="$stylesheet" destination="id('myDiv')" mode="appendChild" />

...

Page 18: Backbase Intro

Backbase Enterprise FrameworkBéla Varga 17

Tag 2

Page 19: Backbase Intro

Backbase Enterprise FrameworkBéla Varga

TDL - Behavior

- wiederkehrende Funktionalitäten Kapseln

18

- Darstellung und Funktion trennen

- Tag: <d:behavior/>

- Folgende Elemente können verwendet werden:

<d:attribute/>

<d:method/>

<d:property/>

<d:handler/>

<d:resources/>

- BTL Behavior: drag, resize, remoteData, userEdit

Page 20: Backbase Intro

Backbase Enterprise FrameworkBéla Varga

TDL - Vererbung

- Attribut: extends

19

- Erben von element oder behavior

- Alle Elemente erben von dom:element

- Mehrfachvererbung möglich (right-to-left priority)

- Anwenden von Interfaces durch implements

- Abstrakte Elemente erzeugen durch abstract Attribut

- Überschreibar sind attribute, property, method

bb.callSuper()bb.instanceOf()

- OOP Methoden:

Page 21: Backbase Intro

Backbase Enterprise FrameworkBéla Varga

TDL - Constructor

20

- Logik ausführen wenn das Element initialisiert wird

- Wird ausgeführt bevor das Element in den DOM Baum eingefügt wird

- Wird meistens verwendet um Properties zu initialisieren

- Wenn das Element in den DOM Baum eingefügt wird, dannDOMNodeInsertedIntoDocument verwenden

Page 22: Backbase Intro

Backbase Enterprise FrameworkBéla Varga

XPath

21

- selektiert Teile einer XML Struktur

- Verwendung in XEL

- Verwendung in JavaScript

bb.evalute(`xpath`, oTarget)

select=``with=``

bb.evaluteSmart(`xpath`, oTarget)

Page 23: Backbase Intro

Backbase Enterprise FrameworkBéla Varga

XPath

22

self

precendingsibling

precendingsibling

followingsibling

ancestor

ancestor

descendant

Page 24: Backbase Intro

Backbase Enterprise FrameworkBéla Varga

XPath

23

<library>

<book>

<chapter/> <chapter>

<section>

<paragraph/> <paragraph/>

</section>

</chapter>

</book>

</library>

Page 25: Backbase Intro

Backbase Enterprise FrameworkBéla Varga

XPath

24

<library>

<book>

<chapter/> <chapter/>

<section>

<paragraph/> <paragraph/>

</section>

</chapter>

</book>

</library>

library ist parent von book

Page 26: Backbase Intro

Backbase Enterprise FrameworkBéla Varga

XPath

25

<library>

<book>

<chapter/> <chapter/>

<section>

<paragraph/> <paragraph/>

</section>

</chapter>

</book>

</library>

library ist parent von book

die beiden chapter sind children von book

Page 27: Backbase Intro

Backbase Enterprise FrameworkBéla Varga

XPath

26

<library>

<book>

<chapter/> <chapter/>

<section>

<paragraph/> <paragraph/>

</section>

</chapter>

</book>

</library>

library ist parent von book

die beiden chapter sind children von book

die beiden chapter von book sind siblings (haben beide den gleichen parent)

Page 28: Backbase Intro

Backbase Enterprise FrameworkBéla Varga

XPath

27

<library>

<book>

<chapter/> <chapter/>

<section>

<paragraph/> <paragraph/>

</section>

</chapter>

</book>

</library>

library ist parent von book

die beiden chapter sind children von book

die beiden chapter von book sind siblings (haben beide den gleichen parent)

library, book, und der zweite chapter sind ancestors von section

Page 29: Backbase Intro

Backbase Enterprise FrameworkBéla Varga

XPath

28

<library>

<book>

<chapter/> <chapter/>

<section>

<paragraph/> <paragraph/>

</section>

</chapter>

</book>

</library>

library ist parent von book

die beiden chapter sind children von book

die beiden chapter von book sind siblings (haben beide den gleichen parent)

library, book, und der zweite chapter sind ancestors von section

die beiden chapter, die section, und die beiden paragraphs sind descendants von book

Page 30: Backbase Intro

Backbase Enterprise FrameworkBéla Varga

XPath Notation

29

/

.

..

/library/*

section

/library/book/chapter/section

document root

current element

parent of the current element

all elements in /library

every section element that is child of the current element

every section element in a chapter in every book in the library

root: /element anywhere: //elementcurrent: element

Page 31: Backbase Intro

Backbase Enterprise FrameworkBéla Varga

XPath Axis

30

self::element

parent::element

ancestor::element

descendant::element

preceding-sibling::element

following-sibling::element

- Eine Achse ist ein Satz an Knoten relativ zu einem Knoten

- A::B = selektiere B von der Achse A

Page 32: Backbase Intro

Backbase Enterprise FrameworkBéla Varga

Backbase Element

31

Backbase Explorer

Page 33: Backbase Intro

Backbase Enterprise FrameworkBéla Varga

XInclude

32

- Einbinden von externen XML Dateien<xi:include href="myWidgetDefinition.xml"/>

<?xml version="1.0" encoding="utf-8"?><d:tdl>...</d:tdl>

- Verweis wird durch den Inhalt des Dokuments ersetztBitte Reihenfolge beachten

Page 34: Backbase Intro

Backbase Enterprise FrameworkBéla Varga

Core/DOM API - Commands

33

- der offizielle Weg nach W3C ist nicht immer der einfachste

create, load, move, position

- Vereinfachte Kommandos

- bb JavaScript Core APIbb.construct()bb.evaluate()bb.callSuper()bb.instanceOf()

- bb JavaScript DOM APIoElement.getProperty()oElement.removeChild()oElement.addEventListener()

Page 35: Backbase Intro

Backbase Enterprise FrameworkBéla Varga

Events

34

- Eine Ereignis ist „etwas das zu einem best. Zeitpunkt passiert“

- Ereignisse haben keine Dauer

- Ereignisse werden durch den Anwender oder durch die Anwendung ausgelöst

- Backbase hat die W3C DOM Events implementiert

Page 36: Backbase Intro

Backbase Enterprise FrameworkBéla Varga

Ereignis Arten

35

- User Interface (DOM Level 3 UIEvent)

- Model Changes (DOM Level 3 Mutation Events)

- HTML Events (gehen auch ohne Backbase)

- Custom Events (BTL oder eigene)

focus, blur, resize, scroll, ...

DOMNodeInserted, DOMAttrModified ...

- Mouse Event (DOM Level 3 MouseEvent)

click, mousedown, mouseover, ...

load, select, submit ...

mouseenter, mynewevent...

Page 37: Backbase Intro

Backbase Enterprise FrameworkBéla Varga

onkeyup vs. onkeydown

36

- onkeyup wird einmal gefeuert, onkeydown wird solang gefeuert bis die Taste gedrückt ist, deshalb

onkeyup verwenden!

Page 38: Backbase Intro

Backbase Enterprise FrameworkBéla Varga

Event-Fluss

37

1.) capturing phase - Absteigen zum Zielelement

2.) target phase - Zielelement erreichtDas Ereignis erreicht ein Ziel Element und löst alle zuständigen Handler aus.

3.) bubbling phase - Aufsteigen vom ZielelementDas Ereignis steigt im DOM Baum von einem Eltern Element zum nächsten, bis der document Element erreicht ist und löst unterwegs alle zuständigen Handler aus.

Das Ereignis steigt vom obersten Knoten (document) bis zum Zielelement des Ereignisses.Auf diesen Weg werden alle Handler ausgeführt, die für den Ereignistyp für die Capturing-Phase registiert sind

Jedes Event hat Phase 1 und 2 aber nicht alle haben Phase 3!

bb.html.addEventListener(element,`focus`, handler, true)

focus, blur, ...

Page 39: Backbase Intro

Backbase Enterprise FrameworkBéla Varga

Event DOM API Methoden

38

- Eventhandler/listener löschen

- Eventhandler/listener erstellen<d:handler event=`click` />

oElement.addEventListener(`click`,myFunction,false);

oElement.removeEventListener(`click`,myFunction,false);

- Event auslösenoElement.fireEvent(oTarget,`click`);

<d:handler event=`click` match=`.class` />

Page 40: Backbase Intro

Backbase Enterprise FrameworkBéla Varga

Event Handling

39

- TDL Handler Tag<d:handler event=`click` />

- XEL Handler Tag<b:button> <e:handler event=`click` /></b:button>

- XEL Attribute<b:button e:onclick=`myMethod();` />

- DOM Event ListeneroElement.addEventListener();

- HTML Event Handler (laufen ohne Backbase Engine)<div onclick=`myMethod()` />

Page 41: Backbase Intro

Backbase Enterprise FrameworkBéla Varga

Ereignisse steuern

40

- Event-Fluss in der Phase 1 beenden

- Standardaktionen verhindernBrowser führen standardmäßig Ereignisse aus ohne das eines definiert wurde. Beispiel: Link besitzt click-Ereignis.

event.stopPropagation();

Target und Bubbling Phase fallen aus. Das Ereignis erreicht nie sein Ziel Element.

event.preventDefault();

- Event-Bubbling verhindern

bb.command.fireEvent(oElement,`click`, false);

Das Ereignis hat keine Bubbling Phase.

bb.command.fireEvent(oElement,`click`, true, true);

Page 42: Backbase Intro

Backbase Enterprise FrameworkBéla Varga

Events vs. Methods

41

- Event

Benachrichtung

kann in abgeleiteten Klassen nicht überschrieben werden

- Method

Kommando

kann in abgeleiteten Klassen überschrieben werden

ich.habDurst!

du.holMirMalWasZuTrinken!

Page 43: Backbase Intro

Backbase Enterprise FrameworkBéla Varga

Server - Client Kommunikation

42

- siehe Google Docs

Page 44: Backbase Intro

Backbase Enterprise FrameworkBéla Varga

SMIL (smile)

43

- Synchronized Multimedia Integration Language

- W3C Auszeichnungssprache für multimediale Inhalte

- Wird in Backbase für visuelle Effekte verwendet

var oAnimationInfo = { attributeName: "height", attributeType:"CSS", dur: "1s", to: "250px", fill: "freeze"}

bb.smil.animate(this, oAnimationInfo);

- BasicInlineTiming, RepeatTiming, TimeManipluations und BasicAnimation bereits integriert

Page 45: Backbase Intro

Vielen Dank!

Béla Varganetzzwerg [at] googlemail [dot] com

Page 46: Backbase Intro

Vielen Dank!

Béla Varganetzzwerg [at] googlemail [dot] com

Page 47: Backbase Intro

Vielen Dank!

Béla Varganetzzwerg [at] googlemail [dot] com