Document

advertisement
De evolutie van JavaScript
Edwin van der Thiel
Technisch Specialist, Sogeti
[email protected]
www.sogeti.nl
Agenda
• Verleden
– Systeem architectuur
– JavaScript historie
• Heden
– JavaScript basics
– Enterprise JavaScript - TypeScript
– Libraries
• Toekomst
– Web 3.0
– WebGL
• Concerns
Systeem Architectuur
DirectX / OpenGL
C
C++
.NET
WIN32 API
- Communication
- Devices
- Graphics
- Control Objects
Windows Explorer
DirectX
HTA
Web
BrowseUI
MSHTML
- Trident Layout Engine
- HTML / CSS Parser
- DOM
- Active Document
Internet Explorer
Windows Kernel Services
C
C++
WebGL
C#
VB
HTML
WinRT API
- Communication
- Devices
- Graphics
Trident Engine
Windows Runtime
JavaScript Historie
November
1996 –
Netscape
biedt
JavaScript
aan ECMA
voor
standaardis
atie
Maart
1996 Netscape
lanceert
JavaScript
Augustus
1996 Microsoft
IE met
JScript
1999 –
Microsoft
embed
JScript in
Windows
Script Host
Juni 1997 –
ECMA
publiceert
ECMAScrip
t
2005 –
Uitbreiding
Arrays
2000 –
Exception
Handling
Huidig –
JavaScript
gestandaar
diseerd
ECMA-262
(5.1)
JavaScript Basics - HTML
HTML
Definieert de document
structuur
CSS
Definieert de document
opmaak
JavaScript
Defineert functionaliteit
-
-
<html>
<head>, <body>
<form>, <input>
<article>, <section>
<div>, <p>
<img>, <video>,
<audio>
<canvas>, <iframe>
<table>
-
div, .class, #id
:pseudoclass
-
Background
Spacing
Borders
Font and Text
Positioning
Printing
-
Reactie op HTML object
event
- Document ready
- Onclick
- Onhover
- …
Prototypes
JavaScript Basics - structure
document.getElementById("demo").innerHTML="Hello";
var firstname;
firstname="Hege";
document.write(firstname);
try
{ ... }
catch(err)
{ ... }
function myFunction()
{
var x="";
var time=new Date().getHours();
if (time<20) x="Good day";
else x="Good evening";
return x;
}
for (i=0;i<5;i++) { ... }
alert("Hello! I am an alert box!");
switch (d)
{
case 0:
x="Sunday";
break;
var Circle = function(radius)
{
this.radius = radius;
}
Circle.prototype.area = function()
{
return Math.PI*this.radius*this.radius;
}
case 1:
x="Monday";
break;
}
var a = new Circle(3), b = new Circle(4);
a.area().toFixed(2); //28.27
b.area().toFixed(2); //50.27
JavaScript Basics - JSON
• JSON staat voor JavaScript Object Notatie
• Het wordt veel gebruikt om objecten van een
back-end (WCF services, ASMX services, …) naar
front-end (AJAX) te sturen.
[{
"Naam": "JSON",
"Type": "Gegevensuitwisselingsformaat",
"isProgrammeertaal": false,
},
{
"Naam": "JavaScript",
"Type": "Programmeertaal",
"isProgrammeertaal": true,
"Jaar": 1995
}
]
data.Naam
data.Type
data.isProgrammeertaal
data.Jaar
TypeScript – Status
TypeScript biedt modules, classes, interfaces en
type annotaties (strong typing) – ECMA 6
• Momenteel op versie 0.9.1
• Installatie: http://www.typescriptlang.org
• In Visual Studio wordt een template geleverd
voor een web app, maar is ook te gebruiken
binnen Windows Store apps (tijdelijk met
workarounds).
Libraries - jQuery
jQuery is een extensie op JavaScript voor
optimalizatie van DOM interactie en AJAX.
- *Selectors (in CSS syntax)
- Effecten (sliding, fading, …)
- *Event handling
- *DOM manipulatie
- AJAX
Libraries – jQuery UI
Een library gebouwd op jQuery, het levert een
set interacties, effecten en widgets voor UI
- *Draggable en Droppable
- Resizable
- Dialog (=lightbox/overlay)
- Accordion, datepicker, autocomplete, menu
- Custom checkbox, radiobutton, textbox, …
Libraries – En vele anderen
•
•
•
•
•
•
•
•
•
•
MooTools & YUI – Tegenhangers van jQuery
QUnit – js unit testing
jQuery mobile – mobile support
Backbone.js – MVC framework in JavaScript
Modernizr – HTML5 / CSS3 feature detection
Jsplumb – connector library
jqPlot – graph plotting
JavaScrypt – encryptie library
Jsvalidate – form validation
jQuery Tools – standaard componenten voor
overlay, scrollable, …
Web 3.0
• Identiteiten spelen een centrale rol
Identity Management – WS-federation stack
• Internet verwordt een Service-Oriented
Architecture
Windows Azure
• Apps bieden de interface om diensten te
consumeren
Web apps + Windows 8 apps
Directory Services?
Web 3.0
ID
ID
ID
ID
ID
Directory
dir
Internet Services
Company
dir
dir
Home
…
WebGL
• Een JavaScript API voor rendering van interactieve
2D/3D graphics binnen de web browser zonder gebruik
van plug-ins
• Ontstond als experiment bij Mozilla in 2006
• Initialiseer het canvas HTML object als WebGL canvas
en gebruik OpenGL ES 2.0 syntax binnen JavaScript
• Internet Explorer 11 / Windows 8.1 ondersteunt
WebGL
Concerns
• JavaScript compileert niet, het is altijd
mogelijk de broncode te achterhalen – ook uit
Windows Store apps
• Clientside validatie is eenvoudig te omzeilen –
Maak de juiste keuze wat clientside vs
serverside te implementeren
• Het is een geïnterpreteerde taal, en heeft
daarmee performance implicaties
Download