Могу ли я заполнить отверстие шаблона websharper, не зная его имени во время компиляции - PullRequest
0 голосов
/ 25 октября 2018

Я новичок в использовании WebSharper и застрял в текущей ситуации с WebSharper 4:

У меня есть следующий HTML-шаблон (some-template.html):

<div class="container">
    <div ws-replace="Content">
    </div>
</div>

Этоопределяет дыру в содержимом с именем Content.Обычно его можно заполнить с помощью следующего кода (F #):

type SomeTemplate = WebSharper.UI.Templating.Template<"some-template.html">
let doc = SomeTemplate().Content(someElements)

В моем сценарии я не знаю имени шаблона и дыры во время компиляции.Предположим, у меня есть функция:

let buildDom(tempalte : string, holeName : string, content : Doc list) : Doc =
    let template = WebSharper.UI.Template<tempalte> // (1)
    // template.FillHole(holeName, content) (2)

Я не знаю, как лучше всего справиться с (1) - созданием шаблона и (2) - определением местоположения и заполнением отверстия.Размышления приходят на ум, но я хотел бы знать, есть ли более элегантный и производительный подход.

Более общий вопрос - есть ли хороший способ иметь динамическую композицию сайтов-шаблонов с HTML-шаблоном?Это то, чего я пытаюсь достичь, но если это уже сделано, нет необходимости изобретать велосипед.Буду признателен, если вы укажете мне на такие ресурсы, если таковые имеются.

1 Ответ

0 голосов
/ 25 октября 2018

Вы можете передать динамический шаблон, передав строку конструктору:

type SomeTemplate = WebSharper.UI.Templating.Template<"some-template.html">

let doc = SomeTemplate("<div>...</div>").SomeHole("some content").Doc()

, но отверстия по-прежнему статически набираются на основе поставщика типов.В настоящее время нет API для реализации динамических отверстий.

Это может быть хорошим и полезным дополнением;Вы должны опубликовать предложение на github .

...