You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
252 lines
7.0 KiB
Markdown
252 lines
7.0 KiB
Markdown
---
|
|
marp: true
|
|
paginate: true
|
|
math: mathjax
|
|
theme: buutti
|
|
title: 1. Introduction to the Web
|
|
---
|
|
|
|
# Introduction to the Web
|
|
|
|
<!-- headingDivider: 5 -->
|
|
<!-- class: invert -->
|
|
|
|
## Contents
|
|
|
|
1) Web and the Internet
|
|
2) Frontend and backend
|
|
3) Anatomy of a website
|
|
4) Web APIs
|
|
|
|
## Web and the Internet
|
|
|
|
### What is the Internet?
|
|
|
|
<div class='columns' style='grid-template-columns: 4fr 1fr;' markdown='1'>
|
|
<div markdown='1'>
|
|
|
|
* World Wide Web is not the Internet
|
|
* Internet: connected networks that use the TCP/IP protocol
|
|
* made out of billions of computers, cables and antennae directing data to the right direction
|
|
* World Wide Web: URL-based information system
|
|
|
|
</div>
|
|
<div markdown='1'>
|
|
|
|

|
|
|
|
</div>
|
|
</div>
|
|
|
|
* WWW is a big part of the Internet but it consists of other kinds of traffic, too:
|
|
* Email
|
|
* VoIP (Skype, Discord, etc)
|
|
* File transfer between computers (FTP)
|
|
* remote connections to other computers
|
|
* In other words, the Internet is an infrastructure and WWW is served via it
|
|
|
|
### What is the Web?
|
|
|
|
<div class='columns21' markdown='1'>
|
|
<div markdown='1'>
|
|
|
|
* World wide web (www) is the part of the Internet where browsers fetch and show websites
|
|
* WWW makes sites and applications accessible to all kinds of devices:
|
|
* mobile phones, computers, smart watches, TVs...
|
|
* For the websites to appear on all the different devices similarly, strict rules are needed
|
|
|
|
</div>
|
|
<div markdown='1'>
|
|
|
|
| | Browser | Engine |
|
|
|---------------------------------------------|---------------|---------|
|
|
|  | **Chrome** | Blink |
|
|
|  | **Edge** | Blink |
|
|
|  | **Firefox** | Gecko |
|
|
|  | **Safari** | WebKit |
|
|
|
|
</div>
|
|
</div>
|
|
|
|
## Frontend vs Backend
|
|
|
|
* Web development is split into [**_frontend_** and **_backend_**](https://en.wikipedia.org/wiki/Frontend_and_backend)
|
|
* Frontend is the website users can actually see
|
|
* Visual elements of a website or app the user can interact with
|
|
* Backend is the invisible part
|
|
* "Server side" where user's data is stored
|
|
* Backend is not interacted with directly, but gives and modifies its stored data based on user requests
|
|
* _**Full stack development**_ refers to working on both backend and frontend!
|
|
|
|
### What is a server or "the cloud"
|
|
|
|
<div class='columns32' markdown='1'>
|
|
<div markdown='1'>
|
|
|
|
* A server or "the cloud" is just another computer, or multiple ones
|
|
* Server software is constantly running on it
|
|
* Your own computer could be a server!
|
|
* If you need to save an image, post a comment on a news website, or just load a website, you send a **_request_** to a server
|
|
* Server then gives an appropriate **_response_** based on the request
|
|
|
|
</div>
|
|
<div markdown='1'>
|
|
|
|

|
|
|
|
</div>
|
|
</div>
|
|
|
|
### Backend
|
|
|
|
<div class='columns21' markdown='1'>
|
|
<div markdown='1'>
|
|
|
|
* Backend handles e.g.,
|
|
* saving and fetching user data from a **_database_**
|
|
* user authentication and connecting multiple users together (chat apps!)
|
|
* Databases are used with _**query languages**_ like **_SQL_**
|
|
* Backend software can be written with various different programming languages
|
|
* even with JavaScript! See: [Express](https://expressjs.com/)
|
|
* Simple websites don't require a dedicated backend
|
|
|
|
</div>
|
|
<div markdown='1'>
|
|
|
|

|
|
|
|
</div>
|
|
</div>
|
|
|
|
## Anatomy of a website
|
|
|
|
### Building blocks of a website
|
|
|
|
* Historically, websites looked something like this
|
|
* [https://web.archive.org/web/19970129232848/http://www.iltalehti.fi/](https://web.archive.org/web/19970129232848/http://www.iltalehti.fi/)
|
|
* Nowadays, a website can even be a full-blown application!
|
|
* [https://open.spotify.com/](https://open.spotify.com/)
|
|
* Old and new sites alike are written in **_HTML_**, which describes the **_structure_** of the site
|
|
* In mid-90s, plain HTML was extended with **_CSS_** to implement **_styling_**
|
|
* The third building block of a website is JavaScript, or **_JS_**, which is used to add **_interactivity_**
|
|
|
|
### HTML
|
|
|
|
<div class='columns32' markdown='1'>
|
|
<div markdown='1'>
|
|
|
|
* HTML stands for **_Hypertext markup language_**
|
|
* HTML defines the structure of a website
|
|
* It tells what text, images and containers the website has
|
|
* You might have seen raw html if your browser has failed due to a slow connection $\Rightarrow$
|
|
* [motherfuckingwebsite.com](https://motherfuckingwebsite.com/)
|
|
* http://catb.org/~esr/open-source.html
|
|
|
|
```html
|
|
<body>
|
|
<h1>This is a Heading</h1>
|
|
<p>This is a paragraph.</p>
|
|
</body>
|
|
```
|
|
|
|
</div>
|
|
<div markdown='1'>
|
|
|
|

|
|
|
|
</div>
|
|
</div>
|
|
|
|
### CSS
|
|
|
|
<div class='columns' markdown='1'>
|
|
<div markdown='1'>
|
|
|
|
* CSS stands for **_Cascading style sheets_**
|
|
* CSS defines the ***look*** of the website
|
|
* It tells the fonts, sizes, colors and locations of elements
|
|
* Can be used to animate elements
|
|
|
|
```css
|
|
body {
|
|
background-color: lightblue;
|
|
}
|
|
h1 {
|
|
color: white;
|
|
text-align: center;
|
|
}
|
|
p {
|
|
font-family: verdana;
|
|
}
|
|
```
|
|
|
|
|
|
</div>
|
|
<div markdown='1'>
|
|
|
|

|
|
|
|
* [bettermotherfuckingwebsite.com](http://bettermotherfuckingwebsite.com/)
|
|
* https://www.emuurom.com/
|
|
|
|
</div>
|
|
</div>
|
|
|
|
|
|
|
|
### JavaScript
|
|
|
|
* With a dedicated programming language, JavaScript, your website can become interactive
|
|
* It allows you to add functionality to buttons, send data to / fetch data from a server in real time
|
|
|
|
<div class='columns' markdown='1'>
|
|
<div markdown='1' class='centered'>
|
|
|
|

|
|
|
|
</div>
|
|
<div markdown='1' class='centered'>
|
|
|
|

|
|
|
|
</div>
|
|
</div>
|
|
|
|
## Web APIs
|
|
|
|
### What is a Web API
|
|
|
|
* ***API (Application Programming Interface)*** defines a way of communicating between applications
|
|
* A Web API defines how a client can communicate with a web server
|
|
* With the help of APIs, you don't need to create all functionality yourself
|
|
* Each program that wants to communicate to the outside world defines their own interface
|
|
* There are some architectural models like **_REST (Representational State Transfer)_** that exist to generalize API design
|
|
|
|
### Client-side and Server-side APIs
|
|
|
|
* [Client-side APIs](https://developer.mozilla.org/en-US/docs/Learn_web_development/Extensions/Client-side_APIs/Introduction) — called on the web browser (client side):
|
|
* Browser APIs, built into the browser itself and extend its functionality
|
|
* For instance, the geolocation API returns coordinates where the browser is located
|
|
* Third-party APIs, for retrieving data from somewhere on the Web
|
|
* Server-side APIs — called on the server:
|
|
* For communicating between servers or the client
|
|
* Consist of multiple exposed ***endpoints*** with a defined request-response system
|
|
|
|
### API communication
|
|
|
|
<div class='centered'>
|
|
|
|

|
|
|
|
</div>
|
|
|
|
## Third party APIs
|
|
|
|
* Many services have public APIs that anyone can use
|
|
* Some services require users to have an [API key](https://en.wikipedia.org/wiki/API_key)
|
|
|
|
<div class='centered'>
|
|
|
|

|
|
|
|
</div> |