Introduction to HTML / JavaScript / DOM · HyperText Markup Language (HTML) is the standard markup...

63
[email protected] Introduction to HTML / JavaScript / DOM This document: http://arnaud-nauwynck.github.io/docs/Intro-Html-JS- DOM.pdf

Transcript of Introduction to HTML / JavaScript / DOM · HyperText Markup Language (HTML) is the standard markup...

Page 1: Introduction to HTML / JavaScript / DOM · HyperText Markup Language (HTML) is the standard markup language for creating web pages and web applications.

[email protected]

Introduction to HTML / JavaScript / DOM

This document:http://arnaud-nauwynck.github.io/docs/Intro-Html-JS-

DOM.pdf

Page 2: Introduction to HTML / JavaScript / DOM · HyperText Markup Language (HTML) is the standard markup language for creating web pages and web applications.

Agenda

● Introduction to Client-Side Web Technologies– HTML = Elements / Custom Elements

– CSS

– JavaScript

● The DOM … how JavaScript interact

● JavaScript framework(s)– AngularJS, binding principles

Page 3: Introduction to HTML / JavaScript / DOM · HyperText Markup Language (HTML) is the standard markup language for creating web pages and web applications.

21 Billions...

Rank#1 : w3scools (not Wikipedia?)

Page 4: Introduction to HTML / JavaScript / DOM · HyperText Markup Language (HTML) is the standard markup language for creating web pages and web applications.
Page 5: Introduction to HTML / JavaScript / DOM · HyperText Markup Language (HTML) is the standard markup language for creating web pages and web applications.

HyperText Markup Langage

Page 6: Introduction to HTML / JavaScript / DOM · HyperText Markup Language (HTML) is the standard markup language for creating web pages and web applications.

1989 : HTTP + HTMLTim Berners-Lee

Page 7: Introduction to HTML / JavaScript / DOM · HyperText Markup Language (HTML) is the standard markup language for creating web pages and web applications.

HyperText Markup Language (HTML) is the standard markup language for creating web pages and web applications.

Page 8: Introduction to HTML / JavaScript / DOM · HyperText Markup Language (HTML) is the standard markup language for creating web pages and web applications.

With Cascading Style Sheets (CSS), and JavaScript, it forms a triad of cornerstone technologies for the World Wide Web

WWWW3C Technologies =

HTML

CSS JavaScript

Page 9: Introduction to HTML / JavaScript / DOM · HyperText Markup Language (HTML) is the standard markup language for creating web pages and web applications.

Client(Html+CSS+JS) – Protocol(Http) - Server(*)

HTML

CSS JavaScript

HTTP Request (GET,POST,..) URLheadersbody

HTTP Response (20x,30x,40x,50x)headersbody

Client-Side

WebSocket events

80808443

Server-Sideexpose IP<TCP<HTTP port

Page 10: Introduction to HTML / JavaScript / DOM · HyperText Markup Language (HTML) is the standard markup language for creating web pages and web applications.

Client-Side = Browser= Security Sandbox

HTML

CSS JavaScript https://site1

https://site2

https://site3

Cookie / LocalStorage site1.com

Cookie site2.com

Cookie site3.com

Page 11: Introduction to HTML / JavaScript / DOM · HyperText Markup Language (HTML) is the standard markup language for creating web pages and web applications.

Site Navigation Isolation …

Example on Chrome:

1 separate Process per navigation Tab !!!

Shared processes(chrome launcher)

Page 12: Introduction to HTML / JavaScript / DOM · HyperText Markup Language (HTML) is the standard markup language for creating web pages and web applications.

On Client-Side = ONLY Html / CSS / (Limited) JavaScript

HTML

CSS JavaScript

JavaScript access to global “Window” (current frame)

NO access to C:\*, D:\*only “Save As” to D:\Downloads

+ OpenFileDialog for upload

W3C API for Mouse (swipe..)

ScrollbarKeyBoard

Micro...

Amazing WebGL, Canvas, SVG renderingusing video card !!

JS limited to 2 Threadsand Few Connections

per site

Page 13: Introduction to HTML / JavaScript / DOM · HyperText Markup Language (HTML) is the standard markup language for creating web pages and web applications.

1/ HTML

2/ CSS 3/ JavaScript

1/ HTML ~ XML elements for Hyper Textcontains Data

Page 14: Introduction to HTML / JavaScript / DOM · HyperText Markup Language (HTML) is the standard markup language for creating web pages and web applications.

Element = <tagName> ... </tagName>

Page 15: Introduction to HTML / JavaScript / DOM · HyperText Markup Language (HTML) is the standard markup language for creating web pages and web applications.

<elt attribute1=”value1” attribute2 ../>

Page 16: Introduction to HTML / JavaScript / DOM · HyperText Markup Language (HTML) is the standard markup language for creating web pages and web applications.

Standard W3c Tags

<h1>Header 1</h1><h2>..</h2><h3>..<h3><h4>..</h4><p>paragraph</p><br/> <pre> - pre-formatted

<b> - Bold text<strong> - Important text<i> - Italic text<em> - Emphasized text<mark> - Marked text<small> - Small text<del> - Deleted text<ins> - Inserted text<sub> - Subscript text<sup> - Superscript text

Text Formatting

Basic Structure<A href=”..”><img src=”..”><video ><script ><iframe>

Hyper Link..

<table> <tr><td><ul> <li><><>...…...

Other..

Page 17: Introduction to HTML / JavaScript / DOM · HyperText Markup Language (HTML) is the standard markup language for creating web pages and web applications.

Html 1.0 … a simple MarkupLangage for Text

=> many specific tags for text formatting

Page 18: Introduction to HTML / JavaScript / DOM · HyperText Markup Language (HTML) is the standard markup language for creating web pages and web applications.

Only 2 families of tag layout: Blocks & Inline

=> technically no “needs” to add more than <div>&<span>

with CSS & JS everywhere

Page 19: Introduction to HTML / JavaScript / DOM · HyperText Markup Language (HTML) is the standard markup language for creating web pages and web applications.

<div> and <span> ..

<div> = blocks <span> = inline

Page 20: Introduction to HTML / JavaScript / DOM · HyperText Markup Language (HTML) is the standard markup language for creating web pages and web applications.

Html = soup of <div><div><div> (example: gmail)

Page 21: Introduction to HTML / JavaScript / DOM · HyperText Markup Language (HTML) is the standard markup language for creating web pages and web applications.

Code quality with Only technical <div>&<span> ?

Need more semantic tags for web applications

Page 22: Introduction to HTML / JavaScript / DOM · HyperText Markup Language (HTML) is the standard markup language for creating web pages and web applications.

CustomElement

Define your own application specific tags: <your-custom-tag>

<your-menu> <your-view> <your-object>

Page 23: Introduction to HTML / JavaScript / DOM · HyperText Markup Language (HTML) is the standard markup language for creating web pages and web applications.

Eric Bidelman's articlehttps://www.html5rocks.com/en/tutorials/webcomponents/

customelements/

Page 24: Introduction to HTML / JavaScript / DOM · HyperText Markup Language (HTML) is the standard markup language for creating web pages and web applications.
Page 25: Introduction to HTML / JavaScript / DOM · HyperText Markup Language (HTML) is the standard markup language for creating web pages and web applications.

Example Demo : http://html5-demos.appspot.com/hangouts

Page 26: Introduction to HTML / JavaScript / DOM · HyperText Markup Language (HTML) is the standard markup language for creating web pages and web applications.
Page 27: Introduction to HTML / JavaScript / DOM · HyperText Markup Language (HTML) is the standard markup language for creating web pages and web applications.

Custom Elt

Page 28: Introduction to HTML / JavaScript / DOM · HyperText Markup Language (HTML) is the standard markup language for creating web pages and web applications.

Custom Elements ...

Page 29: Introduction to HTML / JavaScript / DOM · HyperText Markup Language (HTML) is the standard markup language for creating web pages and web applications.

WebComponent… Simplify CustomElement

Goals :

1) simplify Javascript ...replace by Html <dom-module><template>

2) supports old browser via PolyFill

3) use Template + ShadowDom

Page 30: Introduction to HTML / JavaScript / DOM · HyperText Markup Language (HTML) is the standard markup language for creating web pages and web applications.
Page 31: Introduction to HTML / JavaScript / DOM · HyperText Markup Language (HTML) is the standard markup language for creating web pages and web applications.

WebComponents = 4 w3c specs = CustomElement + Import + Template + ShadowDom

Page 32: Introduction to HTML / JavaScript / DOM · HyperText Markup Language (HTML) is the standard markup language for creating web pages and web applications.

www.polymer-project.org= Google Library of WebComponents

Page 33: Introduction to HTML / JavaScript / DOM · HyperText Markup Language (HTML) is the standard markup language for creating web pages and web applications.

Polymer example

File “my-element.html”

Page 34: Introduction to HTML / JavaScript / DOM · HyperText Markup Language (HTML) is the standard markup language for creating web pages and web applications.

Polymer custom elements catalog

Page 35: Introduction to HTML / JavaScript / DOM · HyperText Markup Language (HTML) is the standard markup language for creating web pages and web applications.

Polymer Core Elements : Fe (Iron)

Page 36: Introduction to HTML / JavaScript / DOM · HyperText Markup Language (HTML) is the standard markup language for creating web pages and web applications.

Iron example<iron-swipeable-container>

https://github.com/PolymerElements/Iron-swipeable-container/blob/master/demo/index.html

Page 37: Introduction to HTML / JavaScript / DOM · HyperText Markup Language (HTML) is the standard markup language for creating web pages and web applications.

Material Design : Md (Paper)

Page 38: Introduction to HTML / JavaScript / DOM · HyperText Markup Language (HTML) is the standard markup language for creating web pages and web applications.

Md Paper Example

Page 39: Introduction to HTML / JavaScript / DOM · HyperText Markup Language (HTML) is the standard markup language for creating web pages and web applications.

1/ HTML

2/ CSS 3/ JavaScript

2/ CSS ~ size,border,colors,fontscontains Style

Page 40: Introduction to HTML / JavaScript / DOM · HyperText Markup Language (HTML) is the standard markup language for creating web pages and web applications.

style=” …inlined CSS property:value;”

Page 41: Introduction to HTML / JavaScript / DOM · HyperText Markup Language (HTML) is the standard markup language for creating web pages and web applications.

Styles … using CSS files

Page 42: Introduction to HTML / JavaScript / DOM · HyperText Markup Language (HTML) is the standard markup language for creating web pages and web applications.

Internal / External CSS

Page 43: Introduction to HTML / JavaScript / DOM · HyperText Markup Language (HTML) is the standard markup language for creating web pages and web applications.

Style with < class=”..”>

Page 44: Introduction to HTML / JavaScript / DOM · HyperText Markup Language (HTML) is the standard markup language for creating web pages and web applications.

1/ HTML

2/ CSS 3/ JavaScript

3/ Scriptcontains actions,events,behavior

Page 45: Introduction to HTML / JavaScript / DOM · HyperText Markup Language (HTML) is the standard markup language for creating web pages and web applications.
Page 46: Introduction to HTML / JavaScript / DOM · HyperText Markup Language (HTML) is the standard markup language for creating web pages and web applications.

Html / CSS / JavaScript Interactions

1/ HTML

2/ CSS 3/ JavaScript

Affect renderer

<style>..</style>attr style=””<link rel="stylesheet"

Link <script>onDocumentLoadonClickonXX events

New Add Remove Setelement/attr(=DOM )

Css updateAdd/remove class attribute(=DOM )

Page 47: Introduction to HTML / JavaScript / DOM · HyperText Markup Language (HTML) is the standard markup language for creating web pages and web applications.

DOM = Document Object Model

Document

URL, ..

Node(Abstract class)

Element Attribute Text Comment

Body

Header

<H1> <div>

<p>

<A href >

<span>

<fe-*>, <paper-*>,

<your-custom-element>

0..*childNodes

0..*attr

0..1parent

Window

Page 48: Introduction to HTML / JavaScript / DOM · HyperText Markup Language (HTML) is the standard markup language for creating web pages and web applications.

DOM = Class Hierarchy

public abstract class Node { private Node parent; .. public Node getParent() { .. }}

public abstract class Element extends Node { private List<Node> childList; private List<Attribute> attributes; ..}

Page 49: Introduction to HTML / JavaScript / DOM · HyperText Markup Language (HTML) is the standard markup language for creating web pages and web applications.

DOM Reference

Page 50: Introduction to HTML / JavaScript / DOM · HyperText Markup Language (HTML) is the standard markup language for creating web pages and web applications.

DOM Elements Properties,Method,Events

Page 51: Introduction to HTML / JavaScript / DOM · HyperText Markup Language (HTML) is the standard markup language for creating web pages and web applications.

DOM Elements Reference

Page 52: Introduction to HTML / JavaScript / DOM · HyperText Markup Language (HTML) is the standard markup language for creating web pages and web applications.

Typical JS Code to Find & Edit Elts

Find:

Document .getElementById()

Create:

Document .createElement(“li”) .createTextNode()...

Update:

element.appendChild()value = element.attributeelement.attribute = valueElement.innerHTML...

Page 53: Introduction to HTML / JavaScript / DOM · HyperText Markup Language (HTML) is the standard markup language for creating web pages and web applications.

JQuery for Portable/ConciseDOM Manipulation?

Make DOM manipulation,event,... “simpler” ...

Page 54: Introduction to HTML / JavaScript / DOM · HyperText Markup Language (HTML) is the standard markup language for creating web pages and web applications.

Same TodoItem example using JQuery

Page 55: Introduction to HTML / JavaScript / DOM · HyperText Markup Language (HTML) is the standard markup language for creating web pages and web applications.

Jquery $() : wrapper for Document.getElementBy..(..)

Code is smaller ?? by including “<script src=”jquery.min.js”></script>

Well ... If you use only 1 method of Jquery...

You could have use “jqueryLight”

or evenfunction my$(id) { return Document.getElementById(id);}

Page 56: Introduction to HTML / JavaScript / DOM · HyperText Markup Language (HTML) is the standard markup language for creating web pages and web applications.

Jquery Risk… Script Code Injection!

Example in previous example : append(“<li>” + text + “</li>”) … text can contain html script!!

Page 57: Introduction to HTML / JavaScript / DOM · HyperText Markup Language (HTML) is the standard markup language for creating web pages and web applications.

Jquery vs DOMNaive retrial after google it

… same pb !!

This one works ...

Compare with Explicit DOM + findById

Page 58: Introduction to HTML / JavaScript / DOM · HyperText Markup Language (HTML) is the standard markup language for creating web pages and web applications.

Jquery Bashing in 2016 ...

$() code not simple ! … not “typed”

JQuery is a very low-level framework … for writing mostly imperative codeOr applying plugins

No easy bi-direction BindingBetter use Richer Framework, like AngularJS

Browser Portability no more an issue in 2016?

Page 59: Introduction to HTML / JavaScript / DOM · HyperText Markup Language (HTML) is the standard markup language for creating web pages and web applications.
Page 60: Introduction to HTML / JavaScript / DOM · HyperText Markup Language (HTML) is the standard markup language for creating web pages and web applications.

Same TodoItem example using AngularJS-1.x

Page 61: Introduction to HTML / JavaScript / DOM · HyperText Markup Language (HTML) is the standard markup language for creating web pages and web applications.

DOM vs Jquery vs AngularJS

● AngularJS code ~ 25 lines / jquery ~ 21 lines● AngularJS code much more readable

Declarative code

MVC : Model-View-Controller

Bi-Directionnal Binding

(no events required, only Model)

Imperative code

Direct DOM manipulation

NO Binding, Events

events history required

Page 62: Introduction to HTML / JavaScript / DOM · HyperText Markup Language (HTML) is the standard markup language for creating web pages and web applications.

Much more to say on Angular MVC Binding...

● very handy writing quick web app● not very efficient having 1000 objects in scope● ...digest() loop is horrible

● Angular 2.x is complete rewrite of 1.x● ...still not very clean code (digest zone?)

Model should be controlled.. and fire chg Event

● ReactJs, Aurelia, ..

… JS Word = “1 fwk a day, the doctor away”?

Page 63: Introduction to HTML / JavaScript / DOM · HyperText Markup Language (HTML) is the standard markup language for creating web pages and web applications.

Conclusion

● Only a “very short” introduction to Html-Js-Dom

● I Hope you feel– “I Did not know all this before”

– “I am happy I have learned something”

– “I want to learn more”

This document:http://arnaud-nauwynck.github.io/docs/Intro-Html-JS-

DOM.pdf