@pankajparkar
Source: http://write.flossmanuals.net/summary-of-firefox/how-the-web-works/
@pankajparkar
Tim Berners-Lee
Tim Berners-Lee invented www in 1989
Documents & other resource sharing
@pankajparkar
Senior Software Engineer, Deskera
(@ngx-lib/multiselect)
@pankajparkar
Source: https://home.cern/topics/birth-web
@pankajparkar
Form, table(with ceavate), input, button, etc.
form-based file upload, tables, etc
@pankajparkar
Source: https://www.mysamplecode.com/2012/04/generate-html-table-using-javascript.html
@pankajparkar
December, 1996
December, 1997
Brendan Eich
@pankajparkar
w3c recommended 1st version
standard released under
Abandoned version
Become official standard Jan 1998
@pankajparkar
@pankajparkar
Source: http://royal.pingdom.com/2007/12/07/a-history-of-the-dynamic-web/
@pankajparkar
@pankajparkar
Source: http://www.scottgu.com/blogposts/viewdata/step5.png
@pankajparkar
Source: https://docs.jboss.org/tools/4.0.1.Final/en/GettingStartedGuide/html/jsp_application.html
@pankajparkar
Client
/default.aspx
/main.jsp
html render page
View / Template
Engine
Find page based on route
Rendered
Page
DB
Server
@pankajparkar
@pankajparkar
M - Model
V - View / ViewModel
C - Controller
P - Presentor
@pankajparkar
<widget>
<debug>on</debug>
<window title="Sample Konfabulator Widget">
<name>main_window</name>
<width>500</width>
<height>500</height>
</window>
<image src="Images/Sun.png" name="sun1">
<hOffset>250</hOffset>
<vOffset>250</vOffset>
<alignment>center</alignment>
</image>
<text data="Click Here" size="36" style="bold">
<name>text1</name>
<hOffset>250</hOffset>
<vOffset>100</vOffset>
<alignment>center</alignment>
<onMouseUp>
sun1.opacity = (sun1.opacity / 100) * 90;
</onMouseUp>
</text>
</widget>
@pankajparkar
Source: http://digg.com/2017/best-most-memorable-adobe-flash-websites
@pankajparkar
aka XHR (1999)
var request = new XMLHTTPRequest();
request.onload = function() {
console.log(this.responseText);
};
request.open('get', 'endpointUrl');
request.send();
@pankajparkar
{
"widget": {
"debug": "on",
"window": {
"title": "Sample Konfabulator Widget",
"name": "main_window",
"width": 500,
"height": 500
},
"image": {
"src": "Images/Sun.png",
"name": "sun1",
"hOffset": 250,
"vOffset": 250,
"alignment": "center"
},
"text": {
"data": "Click Here",
"size": 36,
"style": "bold",
"alignment": "center",
"onMouseUp": "sun1.opacity = (sun1.opacity / 100) * 90;"
}
}
}
(early 2000)
@pankajparkar
Server
/index.html
Parse and Render it
Request initial page
Ask for dynamic data using XHR
html page content
DB
HTML
CSS
JS
/user/data
response
@pankajparkar
People started thinking to render their application using AJAX dynamically
home.html
contact.html
about.html
<html>
<head>
<link href="style.css" />
<script src="app.js"></script>
</head>
<body>
<header></header>
<section>
<sidebar></sidebar>
Home Content
</section>
<footer></footer>
</body>
</html>
<html>
<head>
<link href="style.css" />
<script src="app.js"></script>
</head>
<body>
<header></header>
<section>
<sidebar></sidebar>
Contact Content
</section>
<footer></footer>
</body>
</html>
<html>
<head>
<link href="style.css" />
<script src="app.js"></script>
</head>
<body>
<header></header>
<section>
<sidebar></sidebar>
About Content
</section>
<footer></footer>
</body>
</html>
@pankajparkar
index.html
<html>
<head>
<link href="style.css" />
<script src="app.bundle.js"></script>
</head>
<body>
<header></header>
<section>
<sidebar></sidebar>
<placeholder></placeholder>
</section>
<footer></footer>
</body>
</html>
URL: #/home
URL: #/about
URL: #/contact
<div>
Home Content
<div>
<div>
About Content
<div>
<div>
Contact Content
<div>
@pankajparkar
@pankajparkar
Source: https://medium.com/dev-channel/the-cost-of-javascript-84009f51e99e
@pankajparkar
@pankajparkar
@pankajparkar
@pankajparkar
@pankajparkar
@pankajparkar
@pankajparkar
@pankajparkar
Static Pages
Server side rendering
Dynamic page rendering
AJax & JSON
Single Page App
Bundling & Minifiction
Lazyloading & code spliting
Isomorphic App
(with node)
@pankajparkar
@pankajparkar
@pankajparkar
@pankajparkar
@pankajparkar
@pankajparkar
(wasm)
@pankajparkar
+ HTTP2
+ Service Worker
+ Web Components
+ WebAssembly
+ Micro frontend
+ etc...
@pankajparkar
@pankajparkar
@pankajparkar
@pankajparkar