YellowLeds Weblog v2

Artikel über Webdesign, Webstandards und Serendipity von Matthias Mees.

Alternative zu Modernizr.load

Vor mittlerweile ziemlich genau drei Jahren schrieb ich eine Artikel-Reihe zu Modernizr. Modernizr ist nach wie vor ein wichtiges Werkzeug in der Frontend-Entwicklung, es ist mittlerweile drei Minor-Versionen weiter gereift und wie mir heute zufällig auffiel ist die neue Version 3 inzwischen in der Beta-Phase.

No load

Neben den umfangreichen Möglichkeiten, Browser auf die Unterstützung bestimmter Features zu testen, fand ich damals den in Modernizr integrierten Ressource-Loader Modernizr.load äußerst praktisch und simpel in der Anwendung. Dummerweise ist dieser ab Version 3 nicht mehr Teil von Modernizr, das zugrunde liegende yepnope wird auch nicht mehr weiterentwickelt.

Das Argument, es gäbe mittlerweile bessere Alternativen wie require.js oder browserify, mag nachvollziehbar sein. Ein direkter Ersatz für Modernizr.load zum nachträglichen Laden von Ressourcen z.B. von Polyfills sind sie jedoch – soweit ich es verstehe – nicht unbedingt, zudem dürfte die Umstellung deutlich komplexer sein als bei einem „Eins-zu-eins-Ersatz“.

toast

toast von Aurélien Delogu leistet – abzüglich der integrierten Verknüpfung mit den Modernizr-Tests – exakt das, was Modernizr.load bot: Nachträgliches Laden von CSS- und JS-Ressourcen. Es ist über bower verfügbar, wiegt minifiziert gerade mal 1 KB und ist denkbar simpel anzuwenden, z.B. basierend auf Modernizr-Tests.

Das folgende Codebeispiel besteht aus Platz- und Zeitgründen ausschließlich aus Dummy-Code; den Test Modernizr.foo z.B. gibt es gar nicht.

if (!Modernizr.foo) {
    toast(
        'css/bar.css',
        'js/bar.min.js',
        function() {
        	$('.bar').polyfill();
        }
    );
});

Mit anderen Worten: Ist der Modernizr-Test nicht erfüllt, lade die CSS- und JS-Ressource des Polyfills und führe (falls nötig) den Polyfill aus. Man ist natürlich nicht auf je eine Ressource pro Typ beschränkt, toast kann beliebig viele Parameter entgegen nehmen. Ebenso muss man weder Modernizr-Tests als Bedingung noch überhaupt eine Bedingung verwenden.