bem-profiler v1.1.0
bem-profiler
Очень простой блок, который поможет посчитать время инициализации страницы в разрезе i-bem.js блоков. Это достигается путём оборачивания вызова конструктора блока в функцию, которая считает два отдельных времени:
- работу метода
__constructor, который по факту включает в себя вызовonSetMod: { js: function() {} }; - работу методов
afterCurrentEventвызванных во время инициализации блока.
Блок не считает некоторые служебные вызовы функций вроде:
- первоначального поиска блоков с
js-реализацией по селекторуi-bem; - разбора параметров
data-bem.
Информация собирается в течение 3000ms после события DOMContentLoaded и выводится в консоль через console.table, console.log.
| block | time |
|---|---|
| b-page | 300 |
| footer | 30 |
| link | 4 |
В варианте console.log можно посмотреть время инициализации каждого инстанса, проинспектировать его DOMElement.
Установка, подключение и использование
На данный момент предполагается подключение через bower и сборка с помощью enb, сконфигурированная на подключение уровня переопределения bem-profiler/common.blocks только в development-режиме.
При этом никто не мешает в качестве временного решения копировать код блока и непосредственно подмешивать в какой-нибудь существующий, делать символическую ссылку на этот уровень подключения, или выносить код в псевдоэлемент debug и управлять им через deps.js. Мы принимаем PR и пожелаения ;)
Важно: подключение != непосредственное выполнение профилирования. Для включения функциональности необходимо открыть страницу с дополнительным параметром bem-profiler=1, например:
http://localhost/index?bem-profiler=1.
Также есть возможность в любой момент времени в консоли позвать BEM.profiler(), опционально передав параметром имя блока BEM.profiler('header').