Jannis Bosch
Programm, um Javascript Bibliotheken über die Kommandozeile dynamisch zu installieren/deinstallieren und die Versionen aktuell zu halten
Wird über Shell-Kommandos gesteuert (Skriptsprache, die für Interaktionen mit dem OS verwendet wird)
jsPsych ist eine JavaScript-Bibliothek zur Erstellung von (psychologischen) Online-Experimenten
jsPsych ist modular aufgebaut und ermöglicht die Nutzung vordefinierter Module (z.B. Modul für Videodarbietung mit Button-Reaktion) aber auch die Erstellung eigener Module
jsPsych wurde mit der Zeit auch für die Nutzung mit Node.js optimiert
Anwendung, die viele Schritte bei der Experimenterstellung für jsPsych automatisiert
Erstellung einer Basis-Datei und einer festen Ordnerstruktur mit Pre-load Funktionen
Aufsetzen eines lokalen Servers zur Testung des Experiments
Bundling des Experiments
Beinhaltet z.B. Webpack (bundler) und Babel (Kompiliersprache für JS)
Node.js und Visual Studio Code installieren
Neuen Ordner für das Experiment erstellen und mit VSC öffnen (File -> Open Folder)
PowerShell in VSC öffnen (Terminal -> New Terminal)
Nicht vergessen zurück in den richtigen Ordner zu navigieren!
Bei Problemen:
5. Wenn es funktioniert: Installation bestätigen und Name und Beschreibung eingeben
Veränderbare Ordner:
Weitere Ordner:
Titel, Version, usw.
Importieren von Scripts, Modulen, etc.
// Stylesheets importieren (.scss or .css).
import "../styles/main.scss";
// Plugins importieren (erst installieren!)
import FullscreenPlugin from "@jspsych/plugin-fullscreen";
import HtmlKeyboardResponsePlugin from "@jspsych/plugin-html-keyboard-response";
import PreloadPlugin from "@jspsych/plugin-preload";
// Import der Hauptfunktion für das Experiment (einfach nicht ändern)
import { initJsPsych } from "jspsych";
/**
* This function will be executed by jsPsych Builder and is expected to run the jsPsych experiment
*
* @type {import("jspsych-builder").RunFunction}
*/
export async function run({ assetPaths, input = {}, environment, title, version }) {
const jsPsych = initJsPsych();
// Hier wird die Timeline deklariert. Alle trials werden mit timeline.push() angehängt.
const timeline = [];
// Dateien Preloaden mit dem PreloadPlugin
timeline.push({
type: PreloadPlugin,
images: assetPaths.images,
audio: assetPaths.audio,
video: assetPaths.video,
});
// Welcome screen mit dem Keyboard Response Plugin
timeline.push({
type: HtmlKeyboardResponsePlugin,
stimulus: "<p>Welcome to Texperiment!<p/>",
});
// Switch to fullscreen mit Fullscreen Plugin
timeline.push({
type: FullscreenPlugin,
fullscreen_mode: true,
});
// Hier wird die Variable timeline dann ausgeführt und damit das Experiment gestartet
await jsPsych.run(timeline);
// Die Variable jsPsych beinhaltet alle gespeicherten Daten. Die Ausgabe dieser Funktion wird am Ende des Experiments
// vergleichbar mit der print()-Funktion in R auf eine leere Seite abgedruckt
return jsPsych;
}
Besucht die Seite localhost:3000, um euer Experiment auszuprobieren
Wenn ihr Änderungen speichert, wird die Seite automatisch aktualisiert (Strg+C zum Beenden)
// Hier wird die Timeline deklariert.
const timeline = [];
// Zwischendrin können Elemente an die timeline angehängt werden
timeline.push({
type: HtmlKeyboardResponsePlugin,
stimulus: "<p>Welcome to Texperiment!<p/>",
});
// Hier wird die Variable timeline dann ausgeführt und damit das Experiment gestartet
await jsPsych.run(timeline);
const timeline = [];
var welcome = {
type: HtmlKeyboardResponsePlugin,
stimulus: "<p>Welcome to Texperiment!<p/>",
};
timeline.push(welcome)
await jsPsych.run(timeline);
Wir haben im Template des jspsych-Builder bereits drei Plugins kennengelernt:
Es gibt aber noch einige andere Plugins (und man kann auch eigene Plugins erstellen)
Besucht jetzt www.jspsych.org und klickt auf den Reiter Plugins
Jedes offizielle Plugin hat eine Hilfeseite
Auf der Hilfeseite findet man jeweils:
Neue Plugins müssen zunächst über npm installiert werden (vergleichbar mit R-Bibliotheken in RStudio)
Die Installation läuft über die Shell
Probieren wir das mal aus für das html-button-response plugin
Auf der Hilfeseite gibt es Informationen für die Installation
Wir arbeiten mit npm und brauchen deswegen die beiden Zeilen unter Using NPM
Installation in der Shell:
Teil 2 gehört in den Teil zu Plugins in experiment.js:
// Stylesheets importieren (.scss or .css).
import "../styles/main.scss";
// Plugins importieren (erst installieren!)
import FullscreenPlugin from "@jspsych/plugin-fullscreen";
import HtmlKeyboardResponsePlugin from "@jspsych/plugin-html-keyboard-response";
import PreloadPlugin from "@jspsych/plugin-preload";
import htmlButtonResponse from '@jspsych/plugin-html-button-response';
// Import der Hauptfunktion für das Experiment (einfach nicht ändern)
import { initJsPsych } from "jspsych";
/**
* This function will be executed by jsPsych Builder and is expected to run the jsPsych experiment
*
* @type {import("jspsych-builder").RunFunction}
*/
export async function run({ assetPaths, input = {}, environment, title, version }) {
const jsPsych = initJsPsych();
// Hier wird die Timeline deklariert. Alle trials werden mit timeline.push() angehängt.
const timeline = [];
// Dateien Preloaden mit dem PreloadPlugin
timeline.push({
type: PreloadPlugin,
images: assetPaths.images,
audio: assetPaths.audio,
video: assetPaths.video,
});
// Welcome screen mit dem Keyboard Response Plugin
timeline.push({
type: HtmlKeyboardResponsePlugin,
stimulus: "<p>Welcome to Texperiment!<p/>",
});
// Switch to fullscreen mit Fullscreen Plugin
timeline.push({
type: FullscreenPlugin,
fullscreen_mode: true,
});
timeline.push({
type: htmlButtonResponse, // Hier wird das Plugin definiert
stimulus: `Ich bin der Stimulus</br></br>Und ich akzeptiere HTML-Befehle`, // Hier wird der Stimulus definiert
choices: [`Fortfahren`], // Hier können die Antwort-Buttons beschriftet werden
prompt: `<div style='font-size: 28pt'>Das steht unter dem Stimulus</div>` // Hier kann ein Prompt unter dem Button generiert werden
})
// Hier wird die Variable timeline dann ausgeführt und damit das Experiment gestartet
await jsPsych.run(timeline);
// Die Variable jsPsych beinhaltet alle gespeicherten Daten. Die Ausgabe dieser Funktion wird am Ende des Experiments
// vergleichbar mit der print()-Funktion in R auf eine leere Seite abgedruckt
return jsPsych;
}