Top Banner
A brief view at client web Markiyan Matsekh Web developer
64

Client Web

Dec 10, 2014

Download

Technology

A brief view at core components that compose client web nowadays.
This presentation is targeted on newbies in this area
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: Client Web

A brief view at client web

Markiyan MatsekhWeb developer

Page 2: Client Web
Page 3: Client Web
Page 4: Client Web
Page 5: Client Web
Page 6: Client Web

No, we won’t

Page 7: Client Web

HTTP HTML

CSS JS

Page 8: Client Web

Transport Content

Appearance Behavior

Page 9: Client Web
Page 10: Client Web

Http (HyperText Transfer Protocol) –is a deal between client and server on how to deliver data

Page 11: Client Web

-Request/Response model-Stateless-Operates with text

Http

Page 12: Client Web

How to transfer large binary files through protocol

which operates with text?

Page 13: Client Web

How to maintain statein stateless protocol?

Page 14: Client Web

How to get updates from serverwhen all you can do is ask for?

Page 15: Client Web

Http methods- Get- Post- Put- Delete- (few less used)

Page 16: Client Web
Page 17: Client Web

Time for a small demo

Page 18: Client Web

What about security?

Page 19: Client Web

-Agree on PreMasterSecret-Encrypt traffic with it-Send data safely

Https

Page 20: Client Web
Page 21: Client Web

Html (HyperText Markup Language) –is a tool for describing contents with pre-defined limited set of words

Page 22: Client Web

Is a set of rules, by which browser

reads this description

Page 23: Client Web
Page 24: Client Web

<form name="input" action=“your_url" method="get">

Text: <input type=“text" name=“text” /> Radio: <input type="checkbox" name=“radio"/> <input type="submit" value="Submit" />

</form>

Here comes Http

Page 25: Client Web

The number of html elements is growing…

Because what really matters nowadays…

Page 26: Client Web
Page 27: Client Web
Page 28: Client Web

Html5 is just a logical step in evolution of web

ordo ab chaoAfter chaos comes order

Page 29: Client Web
Page 30: Client Web

Css (Cascading Style Sheets) –is a way of describing how your contents should look

Page 31: Client Web
Page 32: Client Web
Page 33: Client Web

Css rules priorities

Page 34: Client Web

- #id == 3- .classname == 2- [attr] == 2- el == 1

Sum = … -> order -> priority = …

Css rules priorities

Page 35: Client Web
Page 36: Client Web
Page 37: Client Web

JavaScript –is a powerful programming language,embedded into the browsers,letting us control the behavior of contents

Page 38: Client Web

Unobtrusive JavaScript10 years ago

<body bgcolor=“#000”>

BAD! Now we move styles into separate files

body { background-color: #000;}

Same with javascript. We put him into separate file.

Page 39: Client Web

Bad, mixing JavaScript with HTML

<button type="button“ onclick=“document.getElementById(‘photo').style.color='red';“> Click Me </button><div id=“photo”>I am photo</div>

Page 40: Client Web

Unobtrusive JavaScript<button type="button" id="testButton">Click Me</button>

<-clean HTML

<script type="text/javascript"> window.onload = init;

function init() { document.getElementById('testButton').onclick = makeItRed;}function makeItRed() {  document.getElementById(‘photo').style.color = 'red'; };</script>

Page 41: Client Web

HTTP HTML

CSS JS

Page 42: Client Web

Transport Content

Appearance Behavior

Page 43: Client Web

Separation of concerns

Page 44: Client Web

Events• World Wide Web – it’s events that make it all

happen

1 Set up the user interface.2 Wait for something interesting to happen.3 React accordingly.4 Repeat.

Page 45: Client Web

Netscape Event Model (march 1996)DOM Level 0 Event Model

• Hanlder function is assigned to attribtues on html element (onclick)

<button id=“button1” value=“I’m button” onclick=“alert(‘I\’am clicked’)” />

<script type="text/javascript"> $(function() { $(‘#button1’)[0].onfocus = function(event) { console.log(‘Focused!’); } }); </script>

Page 46: Client Web

Across the browsers?1. IE doesn’t invoke function with ‘event’ $(‘#button1’)[0].onfocus = function(event) { if (!event) event = window.event; }

2. IE has event.target instead of event.srcElement: var target = (event.target) ? event.target : event.srcElement;

$(‘#button1’)[0].onfocus = function(event) { if (!event) event = window.event; var target = (event.target) ? event.target : event.srcElement;}

Page 47: Client Web

Event bubbling

Page 48: Client Web

Event bubblingdocument.onclick = function(event) { alert(event.target.tagName);}

Events bubbling (propagation)Browsers: event.stopPropagation();IE: event.cancelBubble = true;These don’t bubble: focus, blur; change, submit

Events default actions<form name=“myform” onsubmit=“return false;”></form|><a href=“http://www.mysite.com” onclick=“return false;”></a>Browsers: event.preventDefault();IE: event.returnValue = false;

event.currentTarget – doesn’t work on IE

Page 49: Client Web

The DOM Level 2 Event Model (november2000)

function doFirstThing() {}function doSecondThing() {}

addEventListener(eventType, listener, useCapture)

someElement.addEventListener(‘click’, doFirstThing, false);someElement.addEventListener(‘click’, doSecondThing, false);// (порядок виконання не гарантується)

IE: attachEvent(eventName, handler); // window.event :(someElement.attachEvent(‘onclick’, doFirstThing);someElement.attachEvent(‘onclick’, doSecondThing);

Page 50: Client Web

jQuery

Page 51: Client Web

What is jQuery?

$(), jQuery() – is function, just another piece of js code. But more pleasant one

var jQuery = function(selector, context) { return new jQuery.fn.init(selector, context);}jQuery.fn.init - returns wrapped set

Page 52: Client Web

What does jQuery do?

Page 53: Client Web
Page 54: Client Web

$(selector).action()<div>Some text</div><div class=“winter”>Winter text</div>

<script type=“text/javascript”>$('div.winter').hide();// jQuery chaining$('div.winter').hide().show();

$('div.winter').hide().show().removeClass('winter').addClass('spring');

// same as:var myDiv = $('div.winter');myDiv.hide();myDiv.show();myDiv.removeClass('winter');myDiv.addClass('spring');</script>

Page 55: Client Web

CSS, or jQuery selectorsp a { color: green; }$(“p a”).css(‘color’, ‘green’);$("p:even"); $("tr:nth-child(1)"); $("body > div"); $("a[href$=pdf]"); $("body > div:has(a)"); 

Page 56: Client Web

The jQuery Event Model

$(‘img’).bind(‘click’, function(event) { alert(‘Image clicked ’ + $(this).attr(‘alt’));});

• Unified way of adding event handlers• Easy to add many handlers at once• Standard names (click, focus);• ‘event’ is always present and in the same form• Unified way of canceling and preventing default actions

(event.preventDefault()) (event.cancelBubble())

Page 57: Client Web
Page 58: Client Web

Ajax (Asynchronous JavaScript and Xml) –is a chance to reload the contentwithout reloading the whole page

Page 59: Client Web

1. Simple HTTP Get through click2. Page loads javascript logic for ajax3. Certain actions lead user to async ajax requests4. Browser sends request to server without reloading page5. Server examines that the request is async6. Server s sends back piece of html or json7. Client gets response and applies it to page

Usual Ajax workflow

Page 60: Client Web

Ajax lets us use more HTTP then <form> element

Page 61: Client Web

Don’t forget!

• Javascript is tricky• Javascript is single-threaded• Events run it all• Use Ajax wisely• Use Cookies wisely

Page 62: Client Web
Page 63: Client Web

And now time for another demo

Page 64: Client Web