Шаблоны закрытия - создайте многократно используемый псевдоним для сложного определения `record` - PullRequest
0 голосов
/ 16 апреля 2020

У меня есть шаблон сои, который выглядит как

{template .fullView}
  {@param people: list<[age:int, name:string]>}
  {call .headers}
    {param people: $queries /}
  {/call}
  {call .content}
    {param people: $queries /}
  {/call}
{/template}

{template .headers}
  {@param people: list<[age:int, name:string]>}
  # headers
{/template}

{template .content}
  {@param queries: list<[age:int, name:string]>}
  # content
{/template}

Поскольку определение записи для «людей» стало более сложным, чем просто возраст и название, стало утомительно обновлять определение параметра во всех три места. Можно ли вместо этого создать псевдоним или что-то, что можно повторно использовать в каждом шаблоне?

{alias [age:int, name:string] as Person}
{template .headers}
  {@param people: list<Person>}
  # headers
{/template}

1 Ответ

0 голосов
/ 20 апреля 2020

Почему бы не определить вместо этого прото для Person? docs также рекомендует использовать протокол protos over records:

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

Так вы могли бы определить сообщение как это?

// syntax: proto3
message Person {
    int32 age = 1;
    string name = 2;
    // more fields here 
}
...