Я ищу объектно-ориентированную веб-инфраструктуру для разработки Ajax-приложений в Scala.
Итак, в идеале я хотел бы иметь что-то вроде GWT, но без смешивания Java (код клиента) и Scala (код сервера).
Вот краткий пример того, как Scala может создать вертикальный макет с меткой и списком:
val label = new Label("nothing selected")
val list = new ListView("item1", "item2") onSelection { value => label.text = value }
pageContent = VerticalLayout(label, list)
На самом деле, это почти код Scala Swing. Но почему бы не выбрать такой же синтаксис для веб-приложений?
По вопросу Можно ли использовать Scala для написания приложений GWT? ozone предложили использовать проект scalagwt. Проект выглядит очень перспективным. Тем не менее, он все еще находится на ранней стадии и еще не поддерживает взаимодействие клиент-сервер (насколько я знаю) - от меня зависит мое веб-приложение.
Другие люди предложили использовать лифт-фреймворк, и мне интересно, позволяет ли лифт разрабатывать Ajax-приложения аналогичным объектно-ориентированным способом, насколько это возможно в GWT. Мне не нужна особенность, заключающаяся в том, что клиентский код компилируется в Java Script, так что клиентские приложения могут даже работать полностью без связи с сервером. Вместо этого я не возражаю, если каждое действие в браузере приводит к Ajax-запросу к серверу, а сервер выполняет соответствующую операцию и отправляет клиенту команды JavaScript для обновления частей веб-страницы (например, для заполнения таблицы X содержимым Y). Хорошо спроектированный API, состоящий из нескольких компонентов пользовательского интерфейса, может использоваться не только для скрытия от пользователей определений этих компонентов в формате HTML, но также и команд обновления JS, которые выполняются в фоновом режиме, когда пользователь обновляет компонент пользовательского интерфейса в коде Scala (например, lable.text = ...
). Есть ли модуль для лифта или альтернативный веб-фреймворк, обеспечивающий такое объектно-ориентированное определение веб-приложений?