Part0
Javascript: Full stack for front-end and back-end in modern web development.
- Front-end: React
- Back-end: Node-js(for RESTful and GraphQL API)
As well as TypeScript, React Native, CI/CD, Container, SQL, etc.
Prerequisites:
- Programming skills
- Net / Database knowledge
- Git
- Ability of searching and solving problems
Example links:
- https://studies.cs.helsinki.fi/exampleapp/
- https://studies.cs.helsinki.fi/exampleapp/notes
- https://studies.cs.helsinki.fi/exampleapp/data.jsons
- https://studies.cs.helsinki.fi/exampleapp/spa
DevTools panel on Browser(F12/option-cmd-i/ctrl-shift-i)
- console
- network
- Headers
- Response
- Elements
- DOM
- CSS
Practice on the first example page DevTools console:
list = document.getElementsByTagName('ul')[0]
newElement = document.createElement('li')newElement.textContent = 'Page manipulation from console is easy'
list.appendChild(newElement)
Exercises
Read
- https://developer.mozilla.org/en-US/docs/Learn/Getting_started_with_the_web/HTML_basics
- https://developer.mozilla.org/en-US/docs/Learn/Getting_started_with_the_web/CSS_basics
- https://developer.mozilla.org/en-US/docs/Learn/HTML/Forms/Your_first_HTML_form
Make UML diagrams
- https://www.geeksforgeeks.org/unified-modeling-language-uml-sequence-diagrams/
- https://www.websequencediagrams.com/
- Describe creating note on https://studies.cs.helsinki.fi/exampleapp/notes
- Describe entering https://studies.cs.helsinki.fi/exampleapp/spa
- Describe creating note on https://studies.cs.helsinki.fi/exampleapp/spa
My solutions
My solutions:
(Please complete your own solutions before click here.)
0.4 diagram of creating note on exampleapp/notes
https://studies.cs.helsinki.fi/exampleapp/notes
https://www.websequencediagrams.com/app
title part0 0.4
note left of Browser: Payload: "note: part0 0.4"Browser->Server: Request Post /exampleapp/new_notenote right of Server: Save the note at server sidenote right of Server: Response 302 redirect to /exampleapp/notesBrowser->Server: Request Get /exampleapp/notesServer->Browser: Response /exampleapp/notesnote left of Browser: Rendering notes pageBrowser->Server: Request Get /exampleapp/main.cssBrowser->Server: Request Get /exampleapp/main.jsServer->Browser: Response /exampleapp/main.cssServer->Browser: Response /exampleapp/main.jsnote left of Browser: Running jsBrowser->Server: Request Get /exampleapp/data.jsonServer->Browser: Response /exampleapp/data.jsonnote left of Browser: Js onreadystatechange, got the data.jsonnote left of Browser: Js console.log(data)note left of Browser: Js create ul, loop adding li and filling contentnote left of Browser: Js getElementById("notes").appendChild(ul)
sequenceDiagram participant browser participant server
browser->>server: POST https://studies.cs.helsinki.fi/exampleapp/notes Note right of browser: Payload 'note: part0 0.4' activate server Note left of server: Server saves the note server-->>browser: 302 deactivate server
browser->>server: GET https://studies.cs.helsinki.fi/exampleapp/notes activate server server-->>browser: HTML document deactivate server
browser->>server: GET https://studies.cs.helsinki.fi/exampleapp/main.css activate server server-->>browser: the css file deactivate server
browser->>server: GET https://studies.cs.helsinki.fi/exampleapp/main.js activate server server-->>browser: the JavaScript file deactivate server
Note right of browser: The browser starts executing the JavaScript code that fetches the JSON from the server
browser->>server: GET https://studies.cs.helsinki.fi/exampleapp/data.json activate server server-->>browser: [{ "content": "HTML is easy", "date": "2023-1-1" }, ... ] deactivate server
Note right of browser: The browser executes the callback function that renders the notes
0.5 diagram of browsering spa notes page
https://studies.cs.helsinki.fi/exampleapp/spa
sequenceDiagram participant browser participant server
browser->>server: GET https://studies.cs.helsinki.fi/exampleapp/spa activate server server-->>browser: HTML document deactivate server
browser->>server: GET https://studies.cs.helsinki.fi/exampleapp/main.css activate server server-->>browser: the css file deactivate server
browser->>server: GET https://studies.cs.helsinki.fi/exampleapp/spa.js activate server server-->>browser: the JavaScript file deactivate server
Note right of browser: The browser starts executing the JavaScript code that fetches the JSON from the server
browser->>server: GET https://studies.cs.helsinki.fi/exampleapp/data.json activate server server-->>browser: [{ "content": "HTML is easy", "date": "2023-1-1" }, ... ] deactivate server
Note right of browser: The browser executes the callback function that renders the notes
0.6 New note in Single page app diagram
sequenceDiagram participant browser participant server
Note right of browser: User fill in 'part0 0.6' and submit Note right of browser: spa.js run form.onsubmit, save note in notes and redrawNotes() Note right of browser: spa.js redrawNotes(create ul, loop adding li and filling content, drop 'notes' div children, append ul to the div)
browser->>server: POST https://studies.cs.helsinki.fi/exampleapp/new_note_spa Note right of browser: Payload {content: "part0 0.6", date: "2024-07-30T08:30:23.512Z"} activate server Note left of server: Server saves the note. server-->>browser: Response 201, Json content: {"message":"note created"} deactivate server Note right of browser: spa.js console.log {"message":"note created"}