status | accepted |
---|---|
date | 2023-04-17 |
deciders | Finn Gedrath, Patrick Lang |
informed |
In ADR-003 wurde entschieden, dass eine native App für Android und iOS mit Hilfe einer Cross-Platform-Lösung entwickelt werden soll. Dieses ist Framework unabhängig. In diesem ADR wird nun das Web-Framework für die Entwicklung der App festgelegt.
Teilweise wurde Dimensionen aus Vargas et. al. (2020) übernommen1:
Gewählte Option: “Svelte”, weil am besten ausfällt (siehe unten) und Motivation besteht Technologie auszuprobieren.
Svelte ist ein junges Framework (bekannt seit: 20192) entwickelt von Rich Harris. Es basiert syntaktisch auf HTML und JavaScript. Als Compiler, ist teilweise eigene Svelte Syntax möglich. Teilweise bestehen Ähnlichkeiten zu Mustache.
Beispiel-Syntax einer Komponente:
<script>
let count = 1;
$: doubled = count * 2;
function handleClick() { count += 1; }
</script>
<button on:click={handleClick}> {count} </button>
<p>{count} * 2 = {doubled}</p>
🟢 Gut, denn hohe technische Reaktivität bei State-Veränderung innerhalb einer Komponente und über mehrere Komponenten hinweg.
🟡 Neutral, weil Wissen innerhalb der Gruppe über Svelte teilweise vorhanden ist.
React ist ein von Facebook entwickeltes Framework. Templates werden in JSX geschrieben (Erweiterung von JS um HTML-Elemente).
Beispiel-Syntax einer Komponente:
import React, { useState } from 'react';
export default function Counter() {
const [count, setCount] = useState(0);
return (
<div>
<button onClick={() => setCount(count + 1)}>
{count}
</button>
<p>{count} * 2 = {count * 2}</p>
</div>
);
}
fetch
, DOM
, etc.)Vue.js ist ein Framework von Evan You. Vue Projekte können als eigenständige Single-File-Componenten entwickelt werden. Templates werden in HTML mit einer Mustach-ähnlichen Syntax geschrieben.
Beispiel-Syntax einer Komponente:
<template>
<button @click="count++">You clicked me 8 times.</button>
<p> 8 * 2 = </p>
</template>
<script>
export default {
data() {
return {
count: 0,
};
},
computed: {
double() {
return this.count * 2;
},
},
};
</script>
Larios Vargas, Enrique, Maurício Aniche, Christoph Treude et al. (2020). „Selecting Third-Party Libraries: The Practitioners’ Perspective“. In: ESEC/FSE 2020. Virtual Event, USA: Association for Computing Machinery, S. 245–256. ISBN: 9781450370431. DOI: 10.1145/3368089.3409711 ↩
Greif, Sacha und Raphaël Benitte (2020). State of JavaScript Trend Report. Technologies: Front-end Frameworks. Letzter Zugriff: 10. August 2021. URL: https://2020.stateofjs.com/en-US/technologies/front-end-frameworks/. ↩