Разбор скорости + глобальные переменные против макроса

avatar
AnnetteC
9 августа 2021 в 06:58
58
1
0

В моем проекте много блоков html-кода, которые я повторно использую в разных местах с небольшими вариациями. Например, у меня есть блок кода, определяющий информационный баннер, но текст и цветовая схема различаются.

Я вижу два способа "включить" его в мой основной шаблон:

1.

#set( $infoBannerText = "This is an info banner..." )
#set( $infoBannerColor = "YELLOW" ) ## predefined map with color-related properties
#parse( "info-banner" )
  1. С определением #macro( info_banner $infoBannerText $infoBannerColor ) до:
#info_banner( "This is an info banner..." "YELLOW" )

Я вижу следующие преимущества/недостатки: Второй более надежен с точки зрения отсутствующих определений переменных или непреднамеренной перезаписи переменных. Принимая во внимание, что первый имеет лучшую производительность и обеспечивает более чистую структуру повторно используемых частей, которые я могу хранить в отдельных файлах. Использование макросов похоже на то, что в итоге я получу большой файл макроса, которому не хватает ясности.

Почему-то я предпочитаю первое решение, но хотел бы знать, что такое "Лучшая практика" или какой у вас опыт.

Источник

Ответы (1)

avatar
Claude Brisson
10 августа 2021 в 09:31
1

Вы можете использовать два способа:

#macro(info_banner, $infoBannerText, $infoBannerColor)
  #if(!$infoBannerText) Missing banner text! #end
  #if(!$infoBannerColor) Missing banner color! #end
  #parse('info-banner')
#end

#info_banner( "This is an info banner..." "YELLOW" )

Я не вижу никаких проблем с производительностью. Хорошей практикой может быть сбор всех проанализированных блоков в какой-нибудь подпапке /inc/, чтобы их нельзя было напрямую вызывать в качестве шаблонов верхнего уровня.

AnnetteC
10 августа 2021 в 12:35
0

Звучит как отличное решение, сочетающее в себе преимущества обоих решений!