создание статических страниц в OPA - PullRequest
5 голосов
/ 13 декабря 2011

В одном из моих проектов мне нужно написать код HTML и JavaScript.Я бы предпочел использовать статически типизированный язык, поэтому я оцениваю OPA.Однако моя цель - создать коллекцию статических страниц, поэтому меня не волнует HTTP-сервер OPA и постоянный уровень.

Итак, возникает вопрос: существует ли (простой) способ созданияколлекция статических страниц в OPA?

Ответы [ 3 ]

5 голосов
/ 14 декабря 2011

Если я правильно понимаю, вы хотите создать свой xhtml с Opa, но вместо того, чтобы обслуживать, распечатать его в файлы?

Для этого у нас есть 2 функции:

Различия между этими двумя функциями состоят в том, что первая из них не будет генерировать связанную опуjs code.

Затем вы можете записать полученную строку в файл HTML на диске.

Обратите внимание, что мы не предоставляем никакого метода для записи файла на диск в нашем stdlib.Для этого вы должны использовать систему bsl:

write = %%BslFile.of_string%%

Небольшой пример:

static.opa

write = %%BslFile.of_string%%

xhtml_page(num:int) =
  <p>Page {num}</p>

pages = [1, 2, 3, 4, 5]

do List.iter(i ->
  xhtml_content = xhtml_page(i)
  string_content = Xhtml.serialize_as_standalone_html(xhtml_content)
  write("{i}.html", string_content)
, pages)

Скомпилируйте и запустите: opa static.opa --

При этом будет создано 5 HTML-страниц.

2 голосов
/ 23 декабря 2011

Вы можете использовать Xhtml.precompiled. Он принимает значение xhtml и возвращает обратно предварительно скомпилированный xhtml (внутренне уже сведенный в строку).

Это полезно, когда часть веб-страницы статична, а остальная часть динамична. Вы можете избежать оплаты некоторых затрат (сериализация, память ...) за статическую часть.

0 голосов
/ 13 декабря 2011

Томас, я полагаю, вы хотите использовать Opa для кода (вместо JS), правильно?

Наличие только нескольких статических страниц не будет типичным использованием для языка, но вы уверены, что можетесделать это легко:

Server.start(Server.http, { resources: @static_resource_directory("resources") })

Выше приведена полная программа Opa ( S4 style ), которая будет просто статически обслуживать содержимое каталога ресурсов (включая HTML).

Более обычным сценарием было бы использование механизма шаблонов Opa (разметка, принимающая большое подмножество HTML).

Надеюсь, это поможет.

...