Я давно хотел иметь простой список задач в браузере. Что-то свободное от любых отвлекающих факторов. Создание этого с помощью Swift и знакомство с некоторыми задействованными библиотеками казалось отличным началом.

Это серия из 4 частей, в которых рассказывается, как настроить проект, начать работу с маршрутизацией, настроить базу данных и, наконец, создать модель и контроллеры нашего приложения. Чтобы увидеть часть 1, нажмите здесь.

Введение

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



Получение усов

Нам нужно добавить Perfect Mustache в наш список зависимостей проекта. Итак, в Package.swift добавьте следующее.

.package(url: “https://github.com/PerfectlySoft/Perfect-Mustache.git", from: “3.0.0”)

Не забудьте добавить PerfectMustache в список целевых зависимостей.

Вернувшись к нашему терминалу, мы обновим наш проект с помощью

swift package update
swift package generate-xcodeproj

Чтобы убедиться, что все в порядке, добавьте import PerfectMustache в список импорта в Main.swift, соберите и запустите.

Добавление HTML-файлов

Теперь нам нужно добавить несколько файлов HTML в наш проект. Добавьте файл hello.html в наш каталог webroot и добавьте немного HTML.

Серверу нужен маршрут для этого нового html, и чтобы мы могли использовать Mustache, нам нужно создать тип, соответствующий протоколу MustachePageHandler. У этого есть один метод, который нужно реализовать, func extendValuesForResponse(context contxt: MustacheWebEvaluationContext, collector: MustacheEvaluationOutputCollector)

Это обрабатывает данные, которые будут использоваться для заполнения любого шаблона усов.

У типа также есть свойство, которое можно передать шаблону для отображения.

Наш Main.swift будет выглядеть примерно так.

Мы добавили маршрут для URI /helloMustache. Ответ и запрос обрабатываются методом helloMustache(request: HTTPRequest, response: HTTPResponse). Здесь мы вызываем mustacheRequest и передаем значение для name в переменную типа MustacheEvaluationContext.MapType(). Это просто псевдоним для [String:any].

Соберите и запустите, перейдите к localhost:8080/helloMustache, и вы должны увидеть HTML со значениями, переданными из вашего быстрого кода. Круто а!

Следующий…

Итак, теперь наш базовый веб-сервер Swift обслуживает не только текст, но и фактические HTML-файлы, и мы можем передавать некоторые новые вычисляемые значения из нашего быстрого кода. Далее мы рассмотрим некоторые действия с базой данных с помощью postgrSQL и StORM. Нажмите на эту ссылку, чтобы увидеть больше.