Блог Горошко Андрея 1C-Битрикс Современный Frontend в Битрикс: Система JS-расширений и CJSCore::Init

Современный Frontend в Битрикс: Система JS-расширений и CJSCore::Init

Средний рейтинг
5 из 5 звезд. 1 голосов.

Времена хаотичного подключения <script> и <link> тегов в header.php прошли.

Современный Битрикс предлагает мощную систему управления frontend-зависимостями — JS-расширения (extensions).

Что такое расширение?
Это именованный пакет, который может содержать:

  • JS-файлы;
  • CSS-файлы;
  • Языковые фразы (lang-файлы);
  • Зависимости от других расширений.

Зачем это нужно?

  1. Управление зависимостями: Если ваше расширение my.component зависит от popup и ajax, Битрикс автоматически подключит их вместе с вашим скриптом.
  2. Исключение дублирования: Если два разных компонента на странице запросят одно и то же расширение (например, jquery), оно будет подключено только один раз.
  3. Сборка (бандлинг): Система может автоматически объединять несколько JS/CSS файлов в один для оптимизации загрузки.
  4. Удобство: Вместо десятка строк AddHeadScript и SetAdditionalCSS — одна строка CJSCore::Init().

Шаг 1: Создание и регистрация расширения

Все расширения регистрируются через файлы config.php, которые система автоматически ищет в папках /bitrix/js, /bitrix/css, /local/js, /local/css.

Пример: Создадим расширение my.script.

  • Создайте структуру папок:
  • /local/js/my/
    • └── script/
      • ├── config.php
      • └── script.js
      • └── style.css
  • Опишите расширение в config.php:
// /local/js/my/script/config.php 
if (!defined('B_PROLOG_INCLUDED') || B_PROLOG_INCLUDED !== true) { die(); } return [ 'css' => 'style.css', 
// Путь к CSS-файлу относительно папки расширения 'js' => 'script.js', 
// Путь к JS-файлу 
'rel' => [ 
// Зависимости 
'main.core', 
// Ядро BX JS (обязательно почти всегда) 
'ui.buttons', 
// Например, зависимость от стандартных кнопок 
], 
'skip_core' => false, 
// Не пропускать подключение ядра 
];
  • css, js: Пути к файлам или массив путей.
  • rel: Массив имен других расширений, от которых зависит наше. main.core — это базовое ядро BX.

Шаг 2: Подключение расширения

Теперь, чтобы подключить наш скрипт, стили и все его зависимости, достаточно в любом месте (prolog, component.php, template.php) вызвать CJSCore::Init().

// В component.php или template.php
\CJSCore::Init(['my.script']);

Эта одна строка сделает все необходимое:

  1. Найдет config.php для my.script.
  2. Проверит его зависимости (rel).
  3. Подключит CSS и JS для main.core и ui.buttons (если они еще не подключены).
  4. Подключит style.css и script.js нашего расширения.

Продвинутые возможности

Локализация (JS Lang-файлы)

Вы можете передавать языковые фразы в JavaScript.

Создайте lang/ru/config.php

/local/js/my/script/lang/ru/config.php 
$MESS['MY_SCRIPT_GREETING'] = 'Привет из JS!';

В script.js используйте BX.message():

// /local/js/my/script/script.js 
BX.ready(function(){ console.log(BX.message('MY_SCRIPT_GREETING')); });

Битрикс автоматически подгрузит нужные языковые фразы.

Сборка (бандлинг)
Для больших расширений можно настроить сборку нескольких файлов в один с помощью bundle.config.js.

Это тема для отдельной статьи, но знайте, что система это поддерживает.

Вывод:
Система JS-расширений — это современный и единственно правильный способ управления frontend-кодом в Битрикс.

Она решает проблемы зависимостей, дублирования и оптимизации. Начинайте использовать CJSCore::Init() во всех своих компонентах, и ваш frontend-код станет чистым, структурированным и профессиональным.

CJSCore::Init, JS расширения Битрикс, frontend, управление зависимостями, config.php, bundle.config.js, lang.php JS.

Мой рейтинг:

Добавить комментарий

Related Post

Обновление свойств элемента инфоблока 1с BitrixОбновление свойств элемента инфоблока 1с Bitrix

Средний рейтинг Еще нет оценок SetPropertyValuesEx() — это метод для сохранения значений свойств элемента информационного блока в БД. Этот метод более экономен в количестве запросов к БД, чем SetPropertyValues(), потому

Работа с файлами и директориями в D7: Классы File, Directory и PathРабота с файлами и директориями в D7: Классы File, Directory и Path

Средний рейтинг Еще нет оценок Классические PHP-функции (file_get_contents, mkdir, unlink) отлично работают, но они не предоставляют объектного интерфейса и не всегда корректно обрабатывают особенности путей и кодировок в Битрикс. Ядро D7 предлагает

 CIBlockElement::GetList — Полное руководство по выборке элементов инфоблока в Битрикс CIBlockElement::GetList — Полное руководство по выборке элементов инфоблока в Битрикс

Средний рейтинг Еще нет оценок CIBlockElement::GetList — это, без преувеличения, один из самых важных и часто используемых методов в API 1С-Битрикс. Он позволяет получать элементы из информационных блоков с гибкими условиями