
Three.js ohne Framework: 3D für Vibe Coders
Jede vibe-gecodete Website sieht gleich aus: Inter Font, weisser Hintergrund, blaue Buttons. Das ist der AI-Look, und ein Three.js 3D-Hero durchbricht ihn sofort. Seit Import Maps in allen modernen Browsern funktionieren (Chrome 89+, Firefox 108+, Safari 16.4+), brauchst du weder npm noch einen Bundler. Seit Three.js r157 (September 2023) ist zudem kein es-module-shims Polyfill mehr nötig, ein wichtiger Qualitätshinweis für ältere Tutorials die es noch empfehlen.
// 01 / 03Import Maps statt CDN-Script-Tag
Die alte Methode mit Script-Tag und globalem THREE-Objekt funktioniert, hat aber Nachteile: kein Tree-Shaking, keine Addons (OrbitControls, GLTFLoader), Versionskonflikte bei Deep-Imports ab v137 auf Skypack. Die moderne Methode: Import Maps mit esm.sh als CDN.
html · importmap<script type="importmap">
{
"imports": {
"three": "https://cdn.jsdelivr.net/npm/max@while.chat/build/three.module.js",
"three/addons/": "https://cdn.jsdelivr.net/npm/max@while.chat/examples/jsm/"
}
}
</script>
<script type="module">
import * as THREE from 'three';
import { OrbitControls } from 'three/addons/controls/OrbitControls.js';
const scene = new THREE.Scene();
const camera = new THREE.PerspectiveCamera(60,
innerWidth / innerHeight, 1, 1000);
camera.position.set(0, 4, 21);
const renderer = new THREE.WebGLRenderer({ alpha: true });
renderer.setSize(innerWidth, innerHeight);
renderer.setPixelRatio(Math.min(window.devicePixelRatio, 2));
document.body.appendChild(renderer.domElement);
// Deine Szene hier
function animate() {
requestAnimationFrame(animate);
renderer.render(scene, camera);
}
animate();
</script>
Diese Datei ist sofort deploybar. Kein npm install, kein vite.config.js. Und anders als das r128-CDN-Pattern unterstützt sie OrbitControls, GLTFLoader und jedes andere Three.js Addon direkt.
// 02 / 035 Szenen-Typen die per Prompt funktionieren
1. Partikel-Galaxie. PointsMaterial mit tausenden Punkten in einer Spiralformation. Ideal für Hero-Hintergründe. Per Vibe Coding in 5 Minuten generierbar, ein vollständiges Snippet mit GLSL-Vertex-Shader erzeugt 150.000 Partikel.
2. Wireframe-Geometrien. Rotierende BoxGeometry, IcosahedronGeometry oder TorusGeometry mit wireframe: true. Drei Zeilen Code, maximaler Effekt. Ideal für Tech-Themen.
3. Netzwerk-Knoten. Points mit Verbindungslinien bei Nähe. Der Klassiker für KI- und Netzwerk-Themen. Jeder Artikel auf while.chat nutzt eine Variante davon.
4. 3D Image Carousel. Claude Code kann komplexe Carousels mit Three.js Shading Language (TSL) und WebGPU aus Screenshots rekonstruieren. Mouse-Wheel und Drag-Interaktion via PointerEvents.
5. 3D Game Environment. Ein komplettes Game-Environment lässt sich per Vibe Coding in unter 10 Minuten aufsetzen, dokumentiert auf YouTube mit Cursor und Three.js.
// 03 / 03Vibe-Coding-Workflow für Three.js
1. Szenentyp beschreiben: "floating particles", "rotating globe", "wireframe icosahedron".
2. Import Map vorgeben: Immer die eigene Import-Map-Version in den Prompt kopieren. Verhindert Versionskonflikte.
3. Isoliert iterieren: Kamera-Position, Material-Properties und Animation-Speed separat prompten. Nicht alles auf einmal ändern.
4. Performance checken: setPixelRatio(Math.min(window.devicePixelRatio, 2)) verhindert Überrendering auf Retina-Displays. Max 500 Vertices für Hero-Szenen. Lighthouse-Compliance prüfen.
5. Accessibility einbauen: Canvas-Container bekommt role="img" und aria-label. prefers-reduced-motion: Canvas ausblenden, Gradient-Fallback zeigen. Nicht optional.
Das fertige Snippet gehört in die Snippet-Bibliothek, einmal richtig gebaut, bei jedem Projekt wiederverwendet.
Häufige Fragen
Quellen
- sbcode.net, "Using Import Maps with Three.js" (Tutorial)
- esm.sh, ES Module CDN (esm.sh)
- Skypack Issue #261, Deep Import Probleme ab Three.js v137
- builder.io, "Vibe code immersive 3D effects in one prompt"
- wawasensei.dev, "Vibe Code a 3D Carousel with Claude Code & Three.js"
- YouTube, "I vibe coded a 3D game w/ three.js in 10 minutes"
- jsDelivr, cdn.jsdelivr.net/npm/three (Alternative zu esm.sh)
- jvns.ca, "Importing a frontend Javascript library without a build system"
- Three.js Discourse, "Why does Three.js require an import map?"
// micro-journal
Welche eine 3D-Szene baust du als Erstes?
Ein Satz reicht. Das Journal bleibt lokal in deinem Browser — kein Konto, kein Server.
notierenMG
Max Götte
SEO Strategist · Founder · while.chat
Ich bin Max, SEO Strategist aus Bochum. Von Audit über Content-Strategie bis Local SEO. KMU im DACH-Raum, evidenzbasiert, ohne Hype-Versprechen.
FAQ
Warum Import Maps statt dem alten Script-Tag?
Import Maps ermöglichen ES-Module-Syntax (import/export), Zugriff auf alle Three.js Addons (OrbitControls, GLTFLoader etc.) und präzise Versionskontrolle. Der alte Script-Tag mit globalem THREE-Objekt unterstützt keine Addons und hat Versionskonflikte ab v137.
Welchen Performance-Impact hat Three.js?
Minimal bei korrekter Einbindung: Canvas mit fester Höhe (kein CLS), setPixelRatio begrenzen, max 500 Vertices für Heros, reduced-motion-Fallback. Lighthouse bleibt bei 95-100.
Kann ich auch GLTF-Modelle laden ohne Build-Tool?
Ja, dank Import Maps. GLTFLoader importieren.glb-Datei neben die HTML legen, fertig. Für Hero-Hintergründe sind generative Szenen (Partikel, Geometrien) fast immer leichter und schneller als 3D-Modelle.
Wie kombiniere ich Three.js mit dem restlichen Vibe-Coding-Workflow?
Three.js ist eine Komponente im Gesamt-Workflow. Erst die Seite bauen (B1), dann Performance sicherstellen (B4), dann den 3D-Hero als letztes Layer hinzufügen.