Голые кости веб-фреймворка Scala? - PullRequest
5 голосов
/ 13 августа 2011

Существует ли базовая веб-платформа Scala? Мне в основном нужны основные функции, такие как:

  • Routing.
  • Обработка параметров GET / POST / PUT.
  • A простой шаблонизатор (на основе замещения контента).
  • Сериализация (JSON, YAML)

Мне не нравится Lift, так как он делает для меня слишком много, поскольку я хотел бы получить полный контроль над сгенерированным HTML, то есть я хочу иметь возможность писать 100% кода HTML / CSS / JS.

Есть ли такая структура? Или можно использовать Lift таким образом, чтобы no HTML генерировался за кулисами? Или мне лучше написать нормальный сервлет?

Ответы [ 7 ]

7 голосов
/ 13 августа 2011

Возможно, вам захочется что-то вроде Скалатра или Нефильтрованный ? С другой стороны, вам не нужно отказываться от какого-либо контроля над вашим HTML / CSS / JS в приложении Lift, если вы этого не хотите.

2 голосов
/ 18 августа 2011

Питер дал отличный ответ ... Я его немного расширю.

Lift дает вам тонну контроля и доступа к необработанным HTTP-запросам, а также предоставляет массу абстракций поверхуровень HTTP.Вы сами выбираете, сколько или мало вы хотите, чтобы Lift делал.

Вы можете создать приложение на основе REST, используя Resthelper от Lift.См. http://simply.liftweb.net/index-Chapter-5.html Преимущество RestHelper от Lift по сравнению с большинством подходов, основанных на MVC / Routing, заключается в безопасности типов и контроле доступа на самом краю вашего приложения.Но, используя экстракторы сопоставления с образцом Scala, вы можете убедиться, что параметры, доставленные в бизнес-логику вашего приложения, уже материализованы и проверены на предмет контроля доступа.Кроме того, поддержка REST в Lift будет такой же лаконичной или более лаконичной, как и другие веб-фреймворки.

С точки зрения обработки HTML в Lift у вас есть тонна контроля над созданием HTML, если вы хотите сгенерироватьHTML как действительный DOM, а не как последовательность строк.

Большинство веб-платформ вынуждают вас генерировать строки при создании HTML.Разработчик должен правильно вывести строки HTML-escape.Разработчик должен убедиться, что закрывающие теги выстроены правильно.С Lift вы получаете такие вещи бесплатно.

Вы можете обслуживать HTML из приложений Lift в стиле MVC.См. https://github.com/dpp/hoisted (это код, который обеспечивает http://liftweb.net)

. В «стандартной» конфигурации приложений Lift Lift выполняет некоторую пост-обработку HTML, если и только если вы используетеопределенная конструкция. Таким образом, если вы поместите тег <head> в тело, HTML-страница, Lift возьмет содержимое этого тега <head> и переместит его в раздел заголовка страницы. Если вы включите вызовы кометы LiftПоддержка, Lift вставит JavaScript на страницу для выполнения длинных опросов, но эти функции являются необязательными, и они возможны только при использовании определенных функций в Lift.

Надеюсь, это поможет вам понять преимущества использования Lift.

2 голосов
/ 13 августа 2011

Вы можете просто использовать Lift для создания сервисов, таких как REST, это более или менее то, что вы ищете? http://www.assembla.com/spaces/liftweb/wiki/REST_Web_Services

Если мы посмотрим на Какие веб-фреймворки Scala доступны? Ни у одного из них нет замечательного простого движка шаблонов, по крайней мере, мне так кажется. SweetScala кажется самым близким, хотя http://code.google.com/p/sweetscala/wiki/GettingStarted

1 голос
/ 13 августа 2011

Еще две рамки для вас, чтобы рассмотреть:

  • Play - простая набирающая популярность среда REST, обладающая приятным интерфейсом Scala . Его шаблоны относительно просто переводятся в функции Scala. Пару месяцев назад возникли трудности с использованием пакетов JSON (например, lift-json), которые распаковывают данные в классы дел, поскольку в Play есть специальный загрузчик классов для быстрой разработки. Не уверен, что эта проблема решена. Компания Scala Typesafe использует Play для своего сайта . Play интегрируется с Akka, и один из ведущих разработчиков Akka, Виктор Кланг, рекомендовал Play некоторое время назад.

  • Чуть дальше от проторенной дорожки есть Spray . Я не могу говорить с деталями, но Wiki выглядит интригующим. На мой взгляд, Spray выглядит элегантно с учетом интеграции Akka. Я не думаю, что он поставляется с движком шаблонов, но, вероятно, было бы возможно взаимодействовать с Scalate (см. Обсуждение списка рассылки ).

0 голосов
/ 27 марта 2018

Современные веб-фреймворки Scala: Play (по Akka HTTP), Scalatra (Akka Actors) и Finatra.https://www.reddit.com/r/scala/comments/743zjv/web_framework/

0 голосов
/ 13 августа 2011

Скалатра - это довольно голые кости с добротой скалы. Легко настроить, легко обрабатывать Bare HTTP. Это похоже на синатру скалы. Scalatra также имеет хорошую поддержку Maven и хорошо сосуществует с традиционными сервлетами Java.

0 голосов
/ 13 августа 2011

Сам по себе не фреймворк Scala, но мне повезло с Jetty + JAX-RS + Scala + Freemarker.Все это довольно проверенные в бою технологии, и с интеграцией Scala проблем нет.Небольшая прокладка необходима для адаптации Freemarker для понимания коллекций и свойств Scala, но ничего сложного.

...