Benutzer-Werkzeuge

Webseiten-Werkzeuge


javascript

Unterschiede

Hier werden die Unterschiede zwischen zwei Versionen angezeigt.

Link zu dieser Vergleichsansicht

Beide Seiten der vorigen RevisionVorhergehende Überarbeitung
Nächste Überarbeitung
Vorhergehende Überarbeitung
javascript [2022-01-16 15:55:19] davidjavascript [2023-01-18 15:43:23] (aktuell) – [test api] david
Zeile 2: Zeile 2:
  
 JavaScript (JS) ist eine dynamisch typisierte Programmiersprache (Skriptsprache), die von Netscape für dynamisches HTML in Webbrowsern entwickelt wurde. Der Sprachkern ist als ECMAScript standardisiert. JavaScript ermöglicht vor allem clientseitige Manipulation des HTML DOMs, wird aber immer mehr auch außerhalb des Browsers benutzt (wie z.B. in Node oder Deno, Laufzeitumgebungen für Java- bzw. TypeScript). JavaScript ist zusammen mit [[html|HTML]] und [[css|CSS]] eine der Kernsprachen des World Wide Webs (WWW). JavaScript (JS) ist eine dynamisch typisierte Programmiersprache (Skriptsprache), die von Netscape für dynamisches HTML in Webbrowsern entwickelt wurde. Der Sprachkern ist als ECMAScript standardisiert. JavaScript ermöglicht vor allem clientseitige Manipulation des HTML DOMs, wird aber immer mehr auch außerhalb des Browsers benutzt (wie z.B. in Node oder Deno, Laufzeitumgebungen für Java- bzw. TypeScript). JavaScript ist zusammen mit [[html|HTML]] und [[css|CSS]] eine der Kernsprachen des World Wide Webs (WWW).
 +
 +JS kann auch als Sprache für das backend genutzt werden. Dazu gibt es die JS runtime [[https://nodejs.org/|NodeJS]], welche auf Chromium's V8 JavaScript engine aufbaut. Eine neuere Alternative vom gleichen Erfinder ist [[https://deno.land/|Deno]] (Anagram von Node). Deno setzt auf eingebauten TypeScript Support und keine Paketverwaltung (sondern Import von Modulen mit URLs), unterstützt aber auch klassisches JS.
 +
 +  * [[https://google.github.io/styleguide/jsguide.html|Google JavaScript Style Guide]]
  
  
Zeile 51: Zeile 55:
  
 export { object as obj }; export { object as obj };
 +</code>
 +
 +===== AJAX/AJAJ (fetch) =====
 +
 +  * __AJAX__ steht für //Asynchronous JavaScript and XML//. Man spricht heutzutage zwar immer noch oft von AJAX und nicht von AJAJ, obwohl die meisten APIs mittlerweile das kompaktere und weniger komplexe JSON nutzen.
 +  * __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>
 +const response = await fetch("/api/test", {
 +    method: "get",
 +    headers: {
 +      "Content-Type": "application/json"
 +    }
 +});
 +console.info(`status: ${response.status}`);
 +let json;
 +try {
 +    json = await response.json();
 +} catch (e) {
 +    console.error(e);
 +    json = JSON.stringify({});
 +} finally {
 +    console.info(json);
 +}
 </code> </code>
  
Zeile 56: Zeile 84:
  
  
-==== table auto full colspan ====+==== backend ==== 
 + 
 + 
 +=== test api === 
 + 
 +API zum testen: Alle Anfragen werden geloggt und mit "Hello World!" und dem Status Code 418 (I'm a teapot) beantwortet. 
 + 
 +<code javascript test.js> 
 +"use strict"; 
 + 
 +import express from "express"; 
 + 
 +const app = express(); 
 +const port = process.env.PORT || 3000; 
 + 
 +app.use(express.json()); 
 +app.use((req, res, next) => { 
 +    const payload = { 
 +        body: req.body ?? null, 
 +        headers: req.headers ?? null, 
 +        url: req.url ?? null, 
 +    }; 
 +    console.log(payload); 
 +    res.status(418); 
 +    res.send("Hello World!"); 
 +    next(); 
 +}); 
 + 
 +app.listen(port); 
 +console.info(`Express started on port ${port}`); 
 + 
 +</code> 
 + 
 +<code json package.json> 
 +
 +  "name": "test", 
 +  "version": "1.0.0", 
 +  "license": "MIT", 
 +  "type": "module", 
 +  "main": "test.js", 
 +  "dependencies":
 +    "express": "^4.18.2" 
 +  }, 
 +
 + 
 +</code> 
 + 
 + 
 +=== hello world webserver (deno) === 
 + 
 +<code javascript hello-world.ts> 
 +import { serve } from "https://deno.land/std@0.126.0/http/server.ts"; 
 + 
 +const port = 80; 
 + 
 +const handler = (): Response => { 
 +    return new Response("Hello World!"); 
 +}; 
 + 
 +serve(handler, { port }); 
 +console.log(`Listening on http://localhost:${port}`); 
 + 
 +</code> 
 + 
 + 
 +==== frontend ==== 
 + 
 + 
 +=== table auto full colspan ===
  
 Dieses Programm setzt automatisch (nachdem das DOM geladen ist) die Spannbreite (colspan) jeder Tabellenzelle, welche durch den definierten Selektor (hier die Klasse "**.colspan-full**") erfasst wird, auf den richtigen Wert, damit die Zelle die Breite der vollen Tabelle einnimmt. Diese Funktion wird von HTML 5 leider noch nicht unterstützt, weshalb dieses Skript eine einfache Lösung darstellt. Dieses Programm setzt automatisch (nachdem das DOM geladen ist) die Spannbreite (colspan) jeder Tabellenzelle, welche durch den definierten Selektor (hier die Klasse "**.colspan-full**") erfasst wird, auf den richtigen Wert, damit die Zelle die Breite der vollen Tabelle einnimmt. Diese Funktion wird von HTML 5 leider noch nicht unterstützt, weshalb dieses Skript eine einfache Lösung darstellt.
Zeile 116: Zeile 212:
 </code> </code>
  
-<code javascript scripts.js+<code javascript scripts.ts
-"use strict"; +globalThis.addEventListener("DOMContentLoaded", () => { 
-window.addEventListener("DOMContentLoaded", () => { +    const selector = ".colspan-full"; 
-    let selector = ".colspan-full"; +    const elements = document.querySelectorAll(selector); 
-    let span = document.querySelectorAll(selector); +    for (const e of elements) {
-    for (let e of span) {+
         let table = e.parentElement;         let table = e.parentElement;
-        while (table.tagName.toLowerCase() !== "table") { +        if (table == null) continue; 
-            table = table.parentElement;+        while (table?.tagName.toLowerCase() !== "table") { 
 +            table = table?.parentElement ?? null;
         }         }
  
-        if (table !== undefined{ +        if (table == nullconsole.error("couldn't find the table!"); 
-            let columnCount = table + 
-                .querySelector("thead"+        const columnCount = table 
-                .querySelector("tr"+            .querySelector("thead"
-                .querySelectorAll("th, td").length; +            ?.querySelector("tr"
-            e.setAttribute("colspan", columnCount); +            ?.querySelectorAll("th, td").length ?? 0
-        } else { +        e.setAttribute("colspan", columnCount.toString());
-            console.error("couldn't find the table!"); +
-        }+
     }     }
 }); });
 +
 </code> </code>
  
  
/home/http/wiki/data/attic/javascript.1642348519.txt · Zuletzt geändert: von david