相対パスと絶対パスの使い分けについて教えてください。

インフラエンジニアをしています。
プログラミングについては専門ではなく、基礎的な知識しかありません。

プログラムを組む際、画像やjsなどのパスをbodyに記載すると思うのですが、相対パス・絶対パスの使い分けについて教えて頂きたいです。
基本的に絶対パスの方がエラーやミスもなく安定するのでしょうか。
相対パスをすべきケースというものがあるのでしょうか。
ご教授いただければ幸いです。
1年前
view数 94

    回答を投稿して企業にアピールしましょう!

    Q&Aで投稿された回答は、
    企業側に表示されるプロフィールにも投稿履歴として表示されます。

    Offersにログイン・新規登録して、気になるテーマやトピックを話してみよう!

    \回答があります!/

    • Cristiano Tomasi

      エンジニア

      1年前

      一般に、絶対パスとは、プロジェクトのルートを原点とするパスのことです。

      例えば
      backgroud-image: url(/src/assests/images/topimage.png)

      一方、相対パスは現在地を原点とします。
      分かりやすくするために例を挙げましょう:
      次のようなcssファイルがあるとします。
      /src/app/css/main.css
      相対パスを使うと、前のurlは次のようになります。

      backgroud-image: url(../../assests/images/topimage.png)

      つまりコンパイラ/IDEが"/src/app/css"パスをもとにして、起点に2レベル下がってその結果のパスに"/assests/images/"を付けます。

      どちらにも利点と欠点があります。例えば、"src"フォルダを "source"にリネームすると、
      相対パスの場合、コンパイラ/IDEが"/src/app/css"パスをもとにして、起点(/src/app/css/)に2レベル下がってその結果のパスに"/assests/images/"を付けますから、結果のぱすは正しいの"/source/assests/images/topimage.png"になります。

      一方、絶対パスの場合、コンパイラ/IDEは "src "フォルダを見つけることができず、エラーとなります。

      逆に、例えばcssファイルを"/src/app/css/main.css"から"/src/css/main.css"に移動した場合、次のようになります。

      絶対パスで移動しても、画像 "topimage.png"へのパスは変更されないので問題はありません。

      相対パスの場合、コンパイラ/IDEはエラーを出します。なぜなら、"/src/css/"を起点に2レベル下がって、"assets/images/topimage.png" を付けて結果としては
      間違った"/assets/images/topimage.png"パスとなります。
      (編集済み)
      view数 46
      • Shoichi Namba

        エンジニア

        1年前

        インフラエンジニアとのことですがhtmlの話でしょうか?
        htmlに関しては絶対パスが望ましいと思います。相対パスはしょっちゅうミスが起こります。表示側だと実際に表示してみるまで気づけないのも怖いところですので。

        そうではなくインフラ内部ということであれば環境によって配置箇所が違う場合もありますので絶対パスだと良くないパターンのほうが多いかもしれませんのでそこはちゃんと必要な想定を見据えてどのような形が望ましいか考えたほうが良いと思います。
        view数 24