development

ADR › Svelte als Framework für NativeScript

status accepted
date 2023-04-17
deciders Finn Gedrath, Patrick Lang
informed

Kontext und Problemstellung

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.

Entscheidungstreiber

Teilweise wurde Dimensionen aus Vargas et. al. (2020) übernommen1:

In Betracht gezogene Optionen

Ergebnis der Entscheidung

Gewählte Option: “Svelte”, weil am besten ausfällt (siehe unten) und Motivation besteht Technologie auszuprobieren.

Pro und Kontra der Optionen

Svelte

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>

React

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>
  );
}

Vue

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>
  1. 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 

  2. 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/