javascript
Unterschiede
Hier werden die Unterschiede zwischen zwei Versionen angezeigt.
| Beide Seiten der vorigen RevisionVorhergehende ÜberarbeitungNächste Überarbeitung | Vorhergehende Überarbeitung | ||
| javascript [2022-01-09 23:48:54] – [table auto full colspan] david | javascript [2023-01-18 15:43:23] (aktuell) – [test api] david | ||
|---|---|---|---|
| Zeile 3: | Zeile 3: | ||
| JavaScript (JS) ist eine dynamisch typisierte Programmiersprache (Skriptsprache), | JavaScript (JS) ist eine dynamisch typisierte Programmiersprache (Skriptsprache), | ||
| - | ===== Beispielprogramme ===== | + | JS kann auch als Sprache für das backend genutzt werden. Dazu gibt es die JS runtime [[https:// |
| + | * [[https:// | ||
| - | ==== table auto full colspan ==== | ||
| - | Dieses Programm setzt automatisch | + | ===== ECMAScript modules |
| - | Achtung: Die Tabelle muss folgendermaßen aufgebaut sein: **table> | + | |
| - | Beispiel: | + | |
| - | <code html> | + | JavaScript Module (auch ES6 Module genannt) ermöglichen das Aufteilen des Codes und exportieren bzw. importieren von Funktionen, Klassen, Objekten usw. |
| - | <table> | + | |
| - | <thead> | + | ==== Beispiel |
| - | <tr> | + | |
| - | <th scope="col"></th> | + | < |
| - | <th scope="col"></ | + | <!DOCTYPE html> |
| - | <th scope="col"></th> | + | <html lang=" |
| - | </tr> | + | <head> |
| - | </thead> | + | <meta charset="UTF-8"> |
| - | <tbody> | + | <meta name="viewport" |
| - | <tr> | + | |
| - | <td class="colspan-full"></ | + | </head> |
| - | </tr> | + | <body> |
| - | </tbody> | + | <h1> |
| - | </table> | + | |
| + | | ||
| + | <script src="./object.js" | ||
| + | </body> | ||
| + | </html> | ||
| </ | </ | ||
| + | |||
| + | <code javascript script.js> | ||
| + | "use strict"; | ||
| + | |||
| + | import { obj as object } from " | ||
| + | |||
| + | const x = object(42); | ||
| + | const child = document.createElement(" | ||
| + | child.innerText = x.value; | ||
| + | |||
| + | document.querySelector(" | ||
| + | </ | ||
| + | |||
| + | <code javascript object.js> | ||
| + | "use strict"; | ||
| + | |||
| + | const object = (x) => { | ||
| + | return { | ||
| + | value: x, | ||
| + | }; | ||
| + | }; | ||
| + | |||
| + | export { object as obj }; | ||
| + | </ | ||
| + | |||
| + | ===== AJAX/AJAJ (fetch) ===== | ||
| + | |||
| + | * __AJAX__ steht für // | ||
| + | * __fetch__ ist eine moderne Alternative zu __XMLHttpRequest__ (XHR). fetch arbeitet komplett **asynchron** und gibt ein **Promise** zurück, während XHR **synchron** und **asynchron** verwendet werden kann und mit **callbacks** arbeitet. | ||
| <code javascript> | <code javascript> | ||
| + | const response = await fetch("/ | ||
| + | method: " | ||
| + | headers: { | ||
| + | " | ||
| + | } | ||
| + | }); | ||
| + | console.info(`status: | ||
| + | let json; | ||
| + | try { | ||
| + | json = await response.json(); | ||
| + | } catch (e) { | ||
| + | console.error(e); | ||
| + | json = JSON.stringify({}); | ||
| + | } finally { | ||
| + | console.info(json); | ||
| + | } | ||
| + | </ | ||
| + | |||
| + | ===== Beispielprogramme ===== | ||
| + | |||
| + | |||
| + | ==== backend ==== | ||
| + | |||
| + | |||
| + | === test api === | ||
| + | |||
| + | API zum testen: Alle Anfragen werden geloggt und mit "Hello World!" | ||
| + | |||
| + | <code javascript test.js> | ||
| "use strict"; | "use strict"; | ||
| - | window.addEventListener(" | + | |
| - | | + | import express from " |
| - | | + | |
| - | for (let e of span) { | + | const app = express(); |
| + | const port = process.env.PORT || 3000; | ||
| + | |||
| + | app.use(express.json()); | ||
| + | app.use((req, | ||
| + | const payload = { | ||
| + | body: req.body ?? null, | ||
| + | headers: req.headers ?? null, | ||
| + | url: req.url ?? null, | ||
| + | }; | ||
| + | console.log(payload); | ||
| + | res.status(418); | ||
| + | res.send(" | ||
| + | next(); | ||
| + | }); | ||
| + | |||
| + | app.listen(port); | ||
| + | console.info(`Express started on port ${port}`); | ||
| + | |||
| + | </ | ||
| + | |||
| + | <code json package.json> | ||
| + | { | ||
| + | " | ||
| + | " | ||
| + | " | ||
| + | " | ||
| + | " | ||
| + | " | ||
| + | " | ||
| + | }, | ||
| + | } | ||
| + | |||
| + | </ | ||
| + | |||
| + | |||
| + | === hello world webserver (deno) === | ||
| + | |||
| + | <code javascript hello-world.ts> | ||
| + | import { serve } from " | ||
| + | |||
| + | const port = 80; | ||
| + | |||
| + | const handler = (): Response => { | ||
| + | return new Response(" | ||
| + | }; | ||
| + | |||
| + | serve(handler, | ||
| + | console.log(`Listening on http:// | ||
| + | |||
| + | </ | ||
| + | |||
| + | |||
| + | ==== frontend ==== | ||
| + | |||
| + | |||
| + | === table auto full colspan === | ||
| + | |||
| + | Dieses Programm setzt automatisch (nachdem das DOM geladen ist) die Spannbreite (colspan) jeder Tabellenzelle, | ||
| + | |||
| + | <code html> | ||
| + | < | ||
| + | <html lang=" | ||
| + | < | ||
| + | <meta charset=" | ||
| + | <meta name=" | ||
| + | <link rel=" | ||
| + | < | ||
| + | </ | ||
| + | < | ||
| + | <table id=" | ||
| + | < | ||
| + | < | ||
| + | <th scope=" | ||
| + | <th scope=" | ||
| + | <th scope=" | ||
| + | </ | ||
| + | </ | ||
| + | < | ||
| + | < | ||
| + | < | ||
| + | < | ||
| + | < | ||
| + | </ | ||
| + | </ | ||
| + | < | ||
| + | < | ||
| + | <td class=" | ||
| + | </ | ||
| + | </ | ||
| + | </ | ||
| + | |||
| + | <script type=" | ||
| + | </ | ||
| + | </ | ||
| + | </ | ||
| + | |||
| + | <code css styles.css> | ||
| + | #test { | ||
| + | width: 100%; | ||
| + | border-collapse: | ||
| + | border: 1px solid black; | ||
| + | } | ||
| + | |||
| + | #test th, | ||
| + | #test td { | ||
| + | text-align: left; | ||
| + | border: 1px solid black; | ||
| + | padding: 0.5rem; | ||
| + | } | ||
| + | |||
| + | .colspan-full { | ||
| + | text-align: center !important; | ||
| + | } | ||
| + | </ | ||
| + | |||
| + | <code javascript scripts.ts> | ||
| + | globalThis.addEventListener(" | ||
| + | | ||
| + | | ||
| + | for (const e of elements) { | ||
| let table = e.parentElement; | let table = e.parentElement; | ||
| - | while (table.tagName.toLowerCase() !== " | + | |
| - | table = table.parentElement; | + | |
| + | table = table?.parentElement | ||
| } | } | ||
| - | if (table | + | if (table == null) console.error(" |
| - | | + | |
| - | .querySelector(" | + | const columnCount = table |
| - | .querySelector(" | + | .querySelector(" |
| - | .querySelectorAll(" | + | ?.querySelector(" |
| - | e.setAttribute(" | + | ?.querySelectorAll(" |
| - | } else { | + | e.setAttribute(" |
| - | console.warn(" | + | |
| - | } | + | |
| } | } | ||
| }); | }); | ||
| + | |||
| </ | </ | ||
/home/http/wiki/data/attic/javascript.1641772134.txt · Zuletzt geändert: von david
