-
Notifications
You must be signed in to change notification settings - Fork 0
Einstieg
Inhalte sind up-to-date für
ccm.js
v27.5.0
Klicke hier für die englische Version.
Mit dem JavaScript-Befehl ccm.start(component, config, element)
kann eine Komponente (component
) mit einer konkreten Konfiguration (config
) in einen Webseitenbereich (element
) eingebettet werden. Die von der Komponente realisierte App wird dann mit dieser Konfiguration im Webseitenbereich angezeigt.
Sobald in einer Webseite die ccm.js eingebunden ist, steht die ccm.start
-Funktion zur Verfügung.
Hier ein Beispiel für die Einbettung einer Quiz-App:
<!DOCTYPE html>
<meta charset="UTF-8">
<body>
<script src="https://ccmjs.github.io/ccm/ccm.js"></script>
<script>
ccm.start("https://ccmjs.github.io/akless-components/quiz/ccm.quiz.js", {
feedback: true,
questions: [
{
text: "Funktioniert dieses Beispiel?",
input: "radio",
answers: [
{text: "Ja", correct: true},
{text: "Nein"}
]
}
]
}, document.body);
</script>
Bei W3C-Webkomponenten liegt der Fokus auf HTML und der Erweiterung von HTML-Elementen. Bei der ccm-Webtechnologie liegt der Fokus auf JavaScript und der Konfigurierbarkeit mittels JSON. Anders als bei Angular, React und Vue.js können Komponenten nachträglich zur Laufzeit in Webseiten eingebettet und kombiniert werden. Die Einbettung funktioniert auch mehrfach in der selben Webseite konfliktfrei in unterschiedlichen Versionen und Konfigurationen.
Eine ccm-Webkomponente ist eine Datei, deren Name mit ccm.
startet, gefolgt vom eindeutigen Namen der Komponente und mit .js
endet. Beispiel: ccm.quiz.js
.
Der Inhalt einer Komponente hat folgende Struktur:
ccm.files["ccm.quiz.js"] = {
name: "quiz", // Eindeutiger Name
ccm: "https://ccmjs.github.io/ccm/ccm.js", // URL zur ccm.js
config: {/*...*/}, // enthält die Standardkonfiguration
Instance: function () {
this.start = async () => {/*...*/}; // hier wird der Webseitenbereich der Komponente gestaltet
}
};
Innerhalb der start()
kann mit this.element
auf den zu gestaltenden Webseitenbereich zugegriffen werden.
Jeder Eintrag in der config
ist über this
erreichbar.
Beispiel einer hello
-Komponente:
ccm.files["ccm.hello.js"] = {
name: "hello",
ccm: "https://ccmjs.github.io/ccm/ccm.js",
config: {
name: "World"
},
Instance: function () {
this.start = async () => {
this.element.innerHTML = "Hello " + this.name;
};
}
};
Nutzung der hello
-Komponente:
<!DOCTYPE html>
<meta charset="UTF-8">
<body>
<script src="https://ccmjs.github.io/ccm/ccm.js"></script>
<script>
ccm.start("./ccm.hello.js", {
name: "Mika" // überschreibt "World" in der Standardkonfiguration
}, document.body);
</script>
Der <body>
der Webseite enthält dann Hello Mika
.
ccm bietet folgende Services an:
-
Einbettung von Komponenten:
ccm.start()
,ccm.component()
,ccm.instance()
-
Laden von Ressourcen:
ccm.load()
-
Datenhaltung:
ccm.store()
,ccm.get()
Zusätzlich bietet ccm noch unter ccm.helper
nützliche Hilfsfunktionen für Komponentenentwickler an.
Über die config
einer Komponente können weitere abhängige Ressourcen dynamisch zur Laufzeit eingebunden werden.
Abhängigkeiten zu anderen Ressourcen werden als Array in der Form [functionName, ...params]
angegeben. Beispiele:
const config = {
html: ["ccm.load", "./templates.html"], // HTML-Templates
css: ["ccm.load", "./styles.css"], // CSS
store: ["ccm.store", {name: "mycollection"}], // Datenspeicher
dataset: ["ccm.get", {name: "mycollection"}, "mykey"], // einzelner Datensatz
comp: ["ccm.component", "./ccm.component.js", {/*config*/}], // Komponentenobjekt
inst: ["ccm.instance", "./ccm.component.js", {/*config*/}], // Instanz aus einer Komponente
app: ["ccm.start", "./ccm.component.js", {/*config*/}] // direkt gestartete Instanz
};
ToDo: HTML-Templating
ToDo: Versionierung