2013-05-22 2 views
7

Das Problem

Ich habe eine große Website, so dass meine CSS-Ordnerstruktur kann ziemlich tief sein. Jede CSS-Datei kann das Hintergrundbild eines Elements über eine relative URL setzen. Bevor ich auf meine Produktionsserver veröffentlichen kann, muss ich alle CSS-Dateien minimieren. Dieser Minification-Prozess kann einige der relativen URLs unterbrechen, da dies die Ordnerstruktur effektiv reduziert. Wie gehen Sie als Entwickler mit dieser Diskrepanz zwischen Entwicklungs- und Produktionscode um?Wie wird mit der Änderung der relativen Bild-URL verfahren, wenn CSS minimiert wird?

Beispiel

Dies ist meine Ordnerstruktur:

image/ 
    article/ 
     brushStroke.jpg 
style/ 
    module/ 
     button.css 
    page/ 
     article/ 
      introToPainting.css 
    minified/ 
     style20130522.css 

Während der Entwicklung ich diese CSS-Regel introToPainting.css in haben:

#step1 { 
    background-image: url(../../../image/article/brushStroke.jpg); 
} 

die auf einem bestimmten sagen lassen einfache Seite, ich brauche nur button.css und introToPa inting.css. Für die Produktionsversion werden diese beiden CSS-Dateien in style20130522.css minimiert. Nun, da sich die minimierte Datei in einer anderen Ordnertiefe als introToPainting.css befindet, ist der Pfad zu brushStroke.jpg jetzt falsch.

http://scs.veetle.com/soget/session-thumbnails/5363e222d2e10/0eaf8f26f193375f97b7deeabae97016/5363e222d2e10_0eaf8f26f193375f97b7deeabae97016_20140509184555_536d84d367530_74_896x672.jpg

http://scs.veetle.com/soget/session-thumbnails/534711b951df7/60d40fd7ca34cf794237c5ec8cb4ff6d/534711b951df7_60d40fd7ca34cf794237c5ec8cb4ff6d_20140521112148_537ceebcd74e0_98_896x672.jpg

+1

yeah ... speichern Sie die CSS-Dateien, die Sie entwickeln, in demselben relativen Ordner wie den, auf den in der Produktion verwiesen wird. oder verwenden Sie absolute Referenzierung. Sie können keine relative Referenz haben, die relative Positionierung ändern und erwarten, dass sie auf magische Weise funktioniert. – PlantTheIdea

+0

Yeah, das scheint die logische Wahl zu sein, wenn Sie nicht alle Dateipfade vor dem Start ändern, selbst wenn Sie Ordner/Ordner/CSS haben und Sie in Ordner/Ordner/Min/Minimiert haben, die relativen Pfade wären gleich – jamil

+0

Ich kann ' t verwende einen absoluten Pfad. Ich arbeite in einem Team. Jede Entwicklerumgebung hat möglicherweise eine andere Basis-URL. – Pwner

Antwort

0

Ich würde für diese Server-Seite normalerweise gerecht zu werden.

Zum Beispiel (mit ASP.NET C#) würde normalerweise eine baseUrl an das Bild anhängen und die URL in der web.config definieren.

Ich würde dann Debug oder Release-Versionen der web.config verwenden, um die BaseUrl geeignet zu transformieren.

Als Ergebnis meiner HTML-Dateien würden entweder Teile oder die Gesamtheit der Code auf dieser Seite Client aufgebaut URLs haben Server-Seite (oder zumindest die baseUrl beigefügten Server-Seite) oder potenziell die baseUrl projiziert in vielleicht über Session oder JavaScript.

EDIT: Um zu klären, ich meine nicht so etwas wie http://mysite.com als baseUrl Einstellung, würde ich so etwas wie ../../../image/ als meine Entwicklung baseUrl befürwortet, und dies, wenn in der Produktion /image/ übersetzen, oder etwas ähnliches

+0

Eine Basis-URL ist für eine CSS-Datei nutzlos. Die URL in der CSS-Datei ist statisch und kann daher nicht geändert werden (besonders, wenn es sich um ein Plugin eines Drittanbieters handelt). Wenn die Pfade in CSS-Dateien relativ zum Speicherort der CSS-Datei sind und die Minification den Speicherort der CSS-Datei ändert, ohne diese relativen Pfade zu aktualisieren, dann handelt es sich um einen Fehler/Überblick im Minification-Prozess. – Triynko