2016-02-15 11 views
8

Ich möchte von requirejs zu SystemJS migrieren, aber ich finde keine Lösung als requirjs haben für Modul Versionierung. Zum Beispiel in der Produktion (ASP.Net Website) Ich habe gesetzt RequireJS wie folgt aus:SystemJS Versionierung für Produktion und Cache-Management (requirjs urlArgs Alternative)

require.config({ 
      baseUrl: "@Url.Content("~/Scripts/")", 
      urlArgs: "[email protected](File.GetLastWriteTime(ViewContext.Controller.GetType().Assembly.Location).ToBinary().ToString() + typeof(Foundation.MvcApplication).Assembly.GetName().Version)", 
      ... 
}); 

Es garantiert, dass die Datei neu geladen wird, sobald das Projekt in der Produktionsumgebung erneut veröffentlicht wird, und hielt auf diese Weise, bis es neu geladen.

Allerdings habe ich keine Lösung für SystemJS gefunden (Da SystemJS mehr Arten von Modulen verwalten, würde ich gerne dorthin migrieren).

Hat jemand SystemJS in der Produktion verwendet und hatte das gleiche Problem, kennen Sie einen "urlArgs" -Parameter (oder Plugin) in SystemJS?

+0

hinzugefügt werden, kann ich nicht wirklich verstehen Sie in Frage? --- PS Ich benutze nur requireJS und Caching alles bis zu 365 Tage. Alles funktioniert gut, warum brauchen Sie systemJS überhaupt? –

+0

Ich habe den Beitrag bearbeitet, es ist nur zu wissen, ob jemand einen Parameter/Plugin gefunden hat, um das gleiche urlArgs-Verhalten von RequireJS zu haben. SystemJS lassen uns viele Arten von Moduldefinitionen verwenden, daher finde ich es "zukunftssicherer". –

+0

Ich verstehe jetzt, es scheint, als ob Sie Ihre Antwort hier finden können. http://stackoverflow.com/questions/33332911/can-system-js-replace-require-js –

Antwort

7

Lange Geschichte kurz: Es gab Probleme auf GitHub SystemJS über cache bust. Aber das ist noch nicht offiziell implementiert. Im Moment gibt es eine individuelle Haken, die leicht

var buildNumber = 1234, // made your own build number 
    systemLocate = System.locate; 
System.locate = function(load) { 
    return Promise.resolve(systemLocate.call(this, load)).then(function(address) { 
    return address + '?build='+buildNumber; 
    }); 
} 

EDIT fix Typo

+2

In der Tat sagte der Hersteller von SystemJS, dass es nicht auf SystemJS implementiert werden würde, sagte "Caching sollte auf den Serverschichten nicht behandelt werden Ladeebene ". –

+0

Funktioniert seit 0,20 nicht: https://github.com/systemjs/systemjs/issues/1616 –