Worauf bezieht sich "./" (Schrägstrich) in Bezug auf den Speicherort eines HTML-Dateipfads?

227

Ich weiß, ../bedeutet, einen Weg zu gehen, aber was bedeutet ./das genau?

Ich habe kürzlich ein Tutorial durchlaufen und es scheint sich nur auf eine Datei am selben Speicherort zu beziehen. Ist es also überhaupt notwendig? Kann ich es einfach nicht benutzen, wenn das alles ist, was es tut?

Simon Suh
quelle

Antworten:

136

./ist der Ordner, in dem sich die Arbeitsdatei befindet:

Also /index.htm ./ist in das Stammverzeichnis,
aber in /css/style.css ./ist der CSS-Ordner.

Dies ist wichtig zu beachten, da sich das Verschieben von CSS /index.htmin /css/style.cssden Pfad ändert.

Coomie
quelle
45
Wie beantwortet dies die Frage? Anscheinend versteht Simon Suh, dass sich ./ auf denselben Speicherort bezieht, an dem sich die verweisende Datei befindet. Der Hauptteil der Frage lautet dann: "Warum es verwenden und ist es überhaupt notwendig?". Der einzige Grund, die Syntax von "./file" anstelle von "file" zu bevorzugen, ist, dass ./ den aktuellen Ordner und NUR den aktuellen Ordner bedeutet. Wenn es also eine Art Tool / Compiler / etc gibt, das nach der Datei sucht, sucht './file' NUR im aktuellen Ordner, während 'file' überall dort sucht, wo das Tool für die Suche konfiguriert ist (z. B. root, aktueller Ordner) usw.)
Marcel Toth
12
Was ist der Unterschied zwischen ./abc.htmund gerecht abc.htm?
Teemoh
12
@Teemoh Sie sind in JS, HTML und CSS gleich. Das "./" ist eine alte Programmierkonvention, die in diese neueren Sprachen übernommen wurde. Unter anderen Umständen könnten sie verschiedene Dinge bedeuten. z.B. Wenn in einem Betriebssystem ein "Pfad" festgelegt ist, kann abc.exe eine Datei sein und ./abc.exe möglicherweise nicht.
Coomie
@MarcelToth du solltest das wirklich als Antwort posten!
Adam
285

/ bedeutet die Wurzel des aktuellen Laufwerks;

./ bedeutet das aktuelle Verzeichnis;

../ bedeutet das übergeordnete Verzeichnis des aktuellen Verzeichnisses.

Sourabh
quelle
Hat der "Header (" Location: ../ ");" In das übergeordnete Verzeichnis umleiten?
Belford
3
Wie unterscheidet sich ./index.html von nur index.html?
N-aß
1
Ich habe einen Code aus einer Vorlage, der enthält, ././was dies bedeutet.
Aaron Franke
120

Sie können die folgende Liste als Kurzreferenz verwenden:

   /   = Root directory
   .   = This location
   ..  = Up a directory
   ./  = Current directory
   ../ = Parent of current directory
   ../../ = Two directories backwards

Nützlicher Artikel: https://css-tricks.com/quick-reminder-about-file-paths/

GibboK
quelle
13
Welcher Unterschied zwischen "Dieser Speicherort" und "Aktuelles Verzeichnis"? Danke dir.
WebBrother
2
@WebBrother, Wie sich herausstellte ./ funktioniert nur im nicht strengen Doctype-Modus. funktioniert in beiden Modi, hier ist ein Link stackoverflow.com/questions/296873/…
Makarov Sergey
Danke dir. Diese klare Erklärung löste gerade ein so grundlegendes Problem, dass es mir peinlich war, laut zu fragen.
Leaky Eddie
57
.  = This location
.. = Up a directory

Also ./foo.htmlist es einfach foo.html. Dies ist optional, kann jedoch relevant sein, wenn ein Skript den Pfad generiert hat (Relevanz für das Skript , nicht für die Funktionsweise der Referenz).

Brad Christie
quelle
38

Ja, ./bedeutet das aktuelle Arbeitsverzeichnis. Sie können die Datei ohne Namen direkt direkt benennen.

Brad
quelle
11

Sie haben Recht, dass Sie es weglassen können. Es ist nur zur Klarheit nützlich. Es gibt keinen funktionalen Unterschied zwischen dem Vorhandensein und dem Nicht-Vorhandensein.

Jewgeni Simkin
quelle
16
It's useful only for clarity.Oder Verwirrung im Fall von OP - und meiner. :)
ANeves
Sie können es nicht weglassen, wenn Sie eine Javascript-Datei in HTML5 importieren. Zum Beispiel, wenn Sie einen Ordner js und eine index.html-Datei in einem Verzeichnis haben: Das in HTML 5 deklarierte <script src = "./ js / main.js"> </ script> ist korrekt, aber wenn Sie das 'weglassen. ' Notation, es wird die Datei nicht geladen.
MaXi32
4
@ MaXi32 - In Ihrem Beispiel <script src="js/main.js"></script>wird die Datei in HTML5 sowie./js/main.js
pmrotule
9

Eine schnelle und kleine Zusammenfassung über Wege

Absolute Wege

http://website.com/assets/image.jpg
WENN sich das Bild nicht in Ihrer Domain befindet , suchen Sie dort nach einem Bild


//website.com/assets/image.jpg
Bild geladen mit http oder https Protokollen


Relative Pfade

(Für den internen Gebrauch, wenn sich das Image auf demselben Server befindet)


image.jpg
Bild an der gleichen Stelle wie das Dokument, das das Bild aufruft!


./image.jpg
Wie oben, Bild an derselben Stelle wie das Dokument, das das Bild aufruft!


/assets/image.jpg
Ähnlich wie bei Absolute Paths
suchen Sie einfach das Protokoll und den Domainnamen weg. Suchen Sie mein Bild ausgehend von meinem Stammordner /und dann inassets/


assets/image.jpg
Dieses Mal befinden sich die Assets an derselben Stelle wie das Dokument. Gehen Sie also zu den Assets für das Bild


../assets/image.jpg
Gehen Sie von der Stelle, an der sich das Dokument befindet, einen Ordner zurück ../ und gehen Sie inassets


../../image.jpg
gehe zwei Ordner zurück , da ist mein Bild!


../../assets/image.jpg
gehe zwei Ordner zurück ../../ und gehe dann hinein assets

Roko C. Buljan
quelle
Gibt es eine Möglichkeit zu sagen, "gehe zum ultimativen Stammverzeichnis und folge dann diesem Pfad", ohne den Domänennamen zu verwenden (dh wenn die Site in einer Staging-Umgebung arbeiten soll)? Oder müssen Sie nur so etwas tun wie ../../../../../../../../../../../../../../ .. /../../../../../../../../../../../../../../../../../../. ./../../images/image.jpg und hoffen, dass jedes mögliche Szenario abgedeckt wird?
Mark Chapel
1
@ Mark, wenn ich Ihre Frage richtig gestellt habe, müssen Sie "zurückgehen (unbestimmte Zeit) bis zur Wurzel, dann eingeben images. Siehe Relative Pfade und das dritte Beispiel/images/image. jpg
Roko C. Buljan
2

Ja ./bedeutet das Verzeichnis, in dem Sie sich gerade befinden.


quelle
8
Das ist etwas irreführend. ./thisfile.txtist nicht immer gleichbedeutend mit /thisfile.txt. Es ist völlig abhängig davon, in welchem ​​Verzeichnis der Code ausgeführt wird.
Jon Newmuis
@ JonathanNewmuis ist richtig ./thisfile.txt ist nicht explizit /thisfile.txt
Coomie
Wenn der Code an einer anderen Stelle ausgeführt ./wird, bezieht er sich dann auf die ursprüngliche Stelle?
CodyBugstein
2

Zum Beispiel befinden sich CSS-Dateien im Ordner mit dem Namen CSSund HTML-Dateien im Ordner HTML, und beide befinden sich im Ordner mit dem Namen, was XYZbedeutet, dass wir CSS-Dateien in HTML als bezeichnen

<link rel="stylesheet" type="text/css" href="./../CSS/style.css" />

Hier ..bewegt sich nach oben zu HTML
und .bezieht sich auf das aktuelle VerzeichnisXYZ

--- Nach dieser Logik würden Sie nur Folgendes bezeichnen:

<link rel="stylesheet" type="text/css" href="CSS/style.css" />
Jenifer Venitta
quelle
3
Die zweite Referenz "CSS/style.css"hat bei mir nicht funktioniert, vielleicht meintest du das "../CSS/style.css"?
Ajax333221
-1

In Bezug auf die Kurzreferenzliste können Sie insbesondere Folgendes verwenden:

\. \ Stammverzeichnis + Aktuelles Verzeichnis (Laufwerksbuchstabe)

Musaranio
quelle