Открыть сервисСервис

Включи как — функция включения файлов в конфигурации

Включи как (англ. include as) — конструкция в языках разметки и конфигурационных форматах, предназначенная для включения содержимого одного файла в другой с указанием альтернативного имени, типа или обработки подключаемого фрагмента. Синтаксис «include as» встречается в системах сборки, шаблонизаторах, форматах конфигураций и системах документации, где требуется не просто подставить текст, а пометить его происхождение или назначение.

Общие принципы

Конструкции включения в конфигурациях принято делить на две группы:

  • Простое включение (include, import) — подстановка содержимого файла без дополнительных указаний.
  • Включение с указанием (include as, import as) — подстановка с присвоением имени, пространства имён, типа или иной метки.

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

Синтаксис в разных системах

Языки разметки и документация

В формате reStructuredText (используется в Sphinx и документации Python) директива .. include:: допускает параметр :name: и :encoding:, а также :parser: — указание парсера для подключаемого файла. В Markdown расширения (например, markdown-include) поддерживают синтаксис вида <!-- include: файл.md -->, иногда с указанием заголовка уровня.

В DocBook и DocBook-подобных форматах включение реализовано через xi:include (XInclude) с атрибутами parse, href и xpointer, что позволяет подключать фрагменты XML-документов с указанием обработки.

Языки программирования и конфигурации

В языке Rust директива include! позволяет включить файл на этапе компиляции; аналог include_str! и include_bytes! подключает содержимое как строку или массив байтов — здесь «as» реализовано через присваивание результата переменной.

В конфигурациях Ansible директива include_tasks и import_tasks подключают файлы задач; в YAML-конфигурациях Kubernetes конструкция import в Kustomize позволяет подключать базовые манифесты с переопределением имён ресурсов.

В системе сборки Bazel директива load загружает символы из .bzl-файлов с указанием имён, что по смыслу соответствует «include as».

Шаблонизаторы

В Jinja2 (Python) конструкция {% include 'файл.html' with context %} подключает шаблон с передачей контекста; в Twig (PHP) — {% include 'шаблон.html' with { 'переменная': значение } %}. В обоих случаях содержимое подключается под именем шаблона, а не как безымянный фрагмент.

Примеры использования

Типичный пример в reStructuredText:

`` .. include:: common/header.rst :parser: myst_parser.sphinx_ :encoding: utf-8 ``

Пример в Ansible (YAML):

```yaml

  • name: Подключить общие задачи

ansible.builtin.include_tasks: file: common/setup.yml name: common_setup ```

Пример в Rust:

``rust let шаблон = include_str!("шаблон.txt"); ``

Области применения

  • Документация Sphinx — подключение общих разделов (лицензии, предупреждения) в несколько документов.
  • Сборка программного обеспечения — включение общих правил, макросов, заголовочных файлов.
  • Конфигурации инфраструктуры — переиспользование общих манифестов и задач.
  • Шаблоны веб-страниц — подключение общих фрагментов (шапка, подвал) с указанием контекста.

Отличие от простого включения

Простое включение (include) подразумевает, что содержимое подключается «как есть», без дополнительной обработки. Включение с указанием (include as) добавляет слой идентификации: файл может быть подключён под разными именами, с разной кодировкой, разным парсером или в разном контексте. Это критично при многократном использовании одного источника в разных проектах или разделах документации.

См. также

Источники

  • Документация Sphinx по директиве include
  • Документация Ansible по include_tasks и import_tasks
  • Документация Rust по макросам include!, include_str!
  • Спецификация XInclude (W3C)
  • Документация Kustomize по конструкции import
Заметили ошибку или не согласны с информацией в статье? Напишите нам support@bfometr.ru