2015-01-10 7 views
5

Hallo Ich habe eine Web-App und wenn ich an meinem Computer arbeiten und auf dev-Modus in einer ländlichen Gegend muss ich in der Lage sein Verwenden Sie die Assets aus einem lokalen Ordner. Aber wenn ich meinen Code auf den PROD-Server deploy, muss ich in der Lage sein, die zu ladenden Assets von einem CDN zu wechseln.SailsJS laden Assets vom lokalen Server, wenn Umgebung = DEV und laden Assets von CDN, wenn Umgebung = PROD

Ist dies in jedem Fall mit Hilfe von sails.environment global möglich?

zum Beispiel

<% if(sails.environment == 'PROD') { %> 
     <script src="//ajax.googleapis.com/ajax/libs/jquery/1.10.2/jquery.min.js"></script> 
     <script src="//netdna.bootstrapcdn.com/bootstrap/3.0.0/js/bootstrap.min.js"></script> 
     <script src="//ajax.googleapis.com/ajax/libs/angularjs/1.0.7/angular.min.js"></script>  
     <script src="//ajax.googleapis.com/ajax/libs/angularjs/1.0.7/angular-resource.min.js"></script>  
     <script src="//ajax.googleapis.com/ajax/libs/angularjs/1.0.7/angular-cookies.min.js"></script>  
    <% } else { %> 
     <script src="/js/jquery.min.js"></script> 
     <script src="/js/bootstrap.min.js"></script> 
     <script src="/js/angular.min.js"></script> 
     <script src="/js/angular-resource.min.js"></script> 
     <script src="/js/angular-cookies.min.js"></script> 
    <% } %> 

Danke.

Antwort

0

Diese Tags werden von Grunt eingefügt.

Ich glaube, Sie tasks/config/sails-linker.js ändern können, um zu erreichen, was Sie wollen:

ein Abschnitt ist devJS und prodJs Ich glaube, Sie sie entsprechend Ihrer Anforderung ändern sollte.

Beachten Sie, dass ich nicht weiß, ob es die gute Praxis in Segeln ist.

bearbeiten paar Dinge, die helfen könnten:

Segel heben -> Führt die Standardaufgabe (Aufgaben/Registrieren/default.js).

Segel heben --prod -> Führt die Prod-Aufgabe aus (tasks/register/prod.js).

aus http://sailsjs.org/#/documentation/concepts/Assets/TaskAutomation.html

+1

können Sie auf jeden Fall Grunt verwenden, um dies zu erreichen, aber wahrscheinlich nicht out-of-the-box mit 'sails-linker', das Links zu lokalen Dateien ausgeben soll (und nur dann, wenn Sie die' ',' 'oder' 'in Ihrer Ansicht.) Wenn also der Pfad auf dem CDN nicht mit dem lokalen Pfad identisch ist, d ist knifflig. – sgress454

0

Sie erreichen können, was Sie für die Verwendung von sails.config.environment oder process.env.NODE_ENV in Ihrem Beispiel würden, aber eine bessere Lösung könnte die umgebungsspezifischen Konfigurationsdateien zu verwenden sein, um einen Vermögenswert Pfad angeben. Zum Beispiel in config/development.js, könnten Sie haben:

"assets_path": "/js" 

und in config/production.js:

"assets_path": "//ajax.googleapis.com/ajax/libs/jquery/1.10.2" 

Dann Ihrer Ansicht nach:

<script src="<%=sails.config.assets_path%>/jquery.min.js"></script> 
+0

nicht, dass ich ein Fanatiker von "meiner eigenen Lösung" bin oder grunze, aber ich würde es vorziehen, für den grunzen Weg zu gehen noch grunt in Ihrem zu deaktivieren, zumindest die Aufgabe, wer die Kopie von Vermögenswerten durchführt und die Skript-Tags in die Vorlagendateien :) – MrVinz

Verwandte Themen