\n```\n\n### В JavaScript/TypeScript\n\n```javascript\n// Динамический импорт\nconst module = await import('./components/Button.tsx');\n\n// URL конструктор с относительным путем\nconst imageSrc = new URL('./images/logo.png', import.meta.url);\n\n// Fetch\nfetch('./api/data.json')\n .then(response => response.json())\n .then(data => console.log(data));\n```\n\n### Особенности в веб-проектах\n\n**В браузере:**\n\nОтносительные пути вычисляются относительно текущего URL страницы:\n\n```\nТекущая страница: https://example.com/blog/post-1/index.html\n\nОтносительный путь: ../images/image.jpg\nРезультирующий URL: https://example.com/blog/images/image.jpg\n\nОтносительный путь: ../../images/image.jpg\nРезультирующий URL: https://example.com/images/image.jpg\n```\n\n**В Node.js:**\n\nОтносительные пути вычисляются относительно текущей директории:\n\n```javascript\nconst fs = require('fs');\n\n// Текущая директория\nconst file1 = fs.readFileSync('./data.json');\n\n// Родительская директория\nconst file2 = fs.readFileSync('../config.json');\n\n// Для абсолютного пути используйте __dirname\nconst absolutePath = require('path').join(__dirname, 'data.json');\n```\n\n### Плюсы и минусы\n\n**Плюсы относительных путей:**\n- Код становится портативным — проект работает одинаково везде\n- Легче рефакторить структуру папок\n- Меньше кода в импортах\n\n**Минусы:**\n- Сложнее с глубокой вложенностью (много ../../../)\n- Легче ошибиться при перемещении файлов\n- Нужно помнить структуру проекта\n\n### Path aliases в TypeScript/Next.js\n\nДля упрощения глубоких относительных путей используйте path aliases:\n\n**tsconfig.json:**\n\n```json\n{\n \"compilerOptions\": {\n \"baseUrl\": \".\",\n \"paths\": {\n \"@components/*\": [\"src/components/*\"],\n \"@utils/*\": [\"src/utils/*\"],\n \"@styles/*\": [\"src/styles/*\"]\n }\n }\n}\n```\n\n**Использование:**\n\n```typescript\n// Вместо:\nimport { Button } from '../../../components/Button';\n\n// Используйте:\nimport { Button } from '@components/Button';\n```","dateCreated":"2026-04-02T21:49:57.881254","upvoteCount":0,"author":{"@type":"Person","name":"claude-haiku-4.5"}}}}
← Назад к вопросам

Что такое относительный путь?

1.0 Junior🔥 201 комментариев
#JavaScript Core

Комментарии (1)

🐱
claude-haiku-4.5PrepBro AI2 апр. 2026 г.(ред.)

Ответ сгенерирован нейросетью и может содержать ошибки

Относительный путь

Относительный путь — это адрес к файлу или ресурсу, который указывается относительно текущего местоположения в файловой системе или веб-проекте. В отличие от абсолютного пути, он не начинается с корневого каталога или полного адреса.

Абсолютный vs Относительный путь

Абсолютный путь (полный адрес):

/home/user/projects/myapp/src/components/Button.js
https://example.com/images/logo.png
C:\\Users\\user\\projects\\myapp\\styles.css

Относительный путь (от текущей позиции):

./components/Button.js
../styles/main.css
../../utils/helpers.js

Основные синтаксисы

Текущая директория:

./file.js          # Файл в текущей директории
./folder/file.js   # Файл в подпапке текущей директории

Родительская директория:

../file.js         # Файл в родительской директории
../../file.js      # Файл на два уровня выше

Практический пример структуры проекта

my-app/
├── src/
│   ├── components/
│   │   ├── Button.tsx
│   │   ├── Card.tsx
│   │   └── modal/
│   │       └── Modal.tsx
│   ├── pages/
│   │   └── index.tsx
│   ├── styles/
│   │   └── globals.css
│   └── utils/
│       └── helpers.ts
├── public/
│   └── images/
│       └── logo.png
└── package.json

Примеры относительных путей

Из файла Button.tsx:

// Импорт из соседней папки
import { Card } from './Card';

// Импорт из подпапки
import { Modal } from './modal/Modal';

// Импорт из родительской папки
import { helpers } from '../utils/helpers';

// Импорт из другой папки через родителя
import styles from '../styles/globals.css';

Из файла Modal.tsx (в папке modal):

// Импорт из соседней папки components
import { Button } from '../Button';

// Импорт из utils
import { helpers } from '../../utils/helpers';

// Импорт стилей
import styles from '../../styles/globals.css';

Из файла index.tsx (в папке pages):

// Импорт компонентов
import { Button } from '../components/Button';
import { Modal } from '../components/modal/Modal';

// Импорт утилит
import { helpers } from '../utils/helpers';

В HTML ссылках и атрибутах

<!-- Текущая директория -->
<img src="./images/logo.png" alt="Logo" />
<a href="./page.html">Link</a>

<!-- Родительская директория -->
<img src="../images/logo.png" alt="Logo" />
<link rel="stylesheet" href="../styles/main.css" />

<!-- Подпапка -->
<script src="./scripts/app.js"></script>

В JavaScript/TypeScript

// Динамический импорт
const module = await import('./components/Button.tsx');

// URL конструктор с относительным путем
const imageSrc = new URL('./images/logo.png', import.meta.url);

// Fetch
fetch('./api/data.json')
  .then(response => response.json())
  .then(data => console.log(data));

Особенности в веб-проектах

В браузере:

Относительные пути вычисляются относительно текущего URL страницы:

Текущая страница: https://example.com/blog/post-1/index.html

Относительный путь: ../images/image.jpg
Результирующий URL: https://example.com/blog/images/image.jpg

Относительный путь: ../../images/image.jpg
Результирующий URL: https://example.com/images/image.jpg

В Node.js:

Относительные пути вычисляются относительно текущей директории:

const fs = require('fs');

// Текущая директория
const file1 = fs.readFileSync('./data.json');

// Родительская директория
const file2 = fs.readFileSync('../config.json');

// Для абсолютного пути используйте __dirname
const absolutePath = require('path').join(__dirname, 'data.json');

Плюсы и минусы

Плюсы относительных путей:

  • Код становится портативным — проект работает одинаково везде
  • Легче рефакторить структуру папок
  • Меньше кода в импортах

Минусы:

  • Сложнее с глубокой вложенностью (много ../../../)
  • Легче ошибиться при перемещении файлов
  • Нужно помнить структуру проекта

Path aliases в TypeScript/Next.js

Для упрощения глубоких относительных путей используйте path aliases:

tsconfig.json:

{
  "compilerOptions": {
    "baseUrl": ".",
    "paths": {
      "@components/*": ["src/components/*"],
      "@utils/*": ["src/utils/*"],
      "@styles/*": ["src/styles/*"]
    }
  }
}

Использование:

// Вместо:
import { Button } from '../../../components/Button';

// Используйте:
import { Button } from '@components/Button';
Что такое относительный путь? | PrepBro