Vibe.d. Ваше первое веб-приложение на D

Развитие нынешнего интернета задают такие информационные гиганты, как Facebook, Amazon, Vkontakte, услугами которых ежедневно пользуются миллионы пользователей по всему миру.

Фреймворк vibe.d, написанный на D, предназначен для создания устойчивых высоконагруженных веб-систем, подобных перечисленным.
В цикле статей мы расскажем, как создать и развить свое веб-приложение с помощью vibe.d.

Не будем останавливаться на таких простых вещах, как установка компилятора D, выбор среды разработки (IDE). Предполагается, что читатель не совсем новичок и знаком с основами. Для новичков же советуем изучить ранние статьи нашего блога, где мы подробно все объясняем. И да, пользуйтесь поиском, он реально работает!

Давайте начнем с того, что создадим новый проект с помощью DUB и пропишем необходимые зависимости в файл настроек dub.sdl в корне нашего проекта.

Узнать последнюю версию фреймворка можно на официальном сайте vibed.org или в репозитории DUB. Добавим стабильную версию vibe.d в зависимости:

dependency "vibe-d" version="~>0.7.27"

Кроме того, vibe.d использует некоторые зависимости (LibEvent и OpenSSL), но о них позаботится DUB.

Теперь можно заняться кодом нашего первого веб-приложения. По старой доброй традиции, для примера, создадим веб-сервер, который по указанному адресу будет выдавать надпись «Привет, %username%!».

import vibe.d;

// конструктор главного объекта, то есть "функции" main
shared static this()
{
	auto settings = new HTTPServerSettings;
	settings.port = 8080; // задаем порт
	// "забиваем" IP-адреса через запятую, каждый в своих кавычках
	settings.bindAddresses = ["127.0.0.1"];
	// укажем ссылку на метод, который будет постоянно исполнять сервер
	listenHTTP(settings, &hello);

	// лог в консоль не помешает
	logInfo("Please open http://127.0.0.1:8080/ in your browser!");
}

// исполняемый сервером метод, req - запрос, res - ответ
void hello(HTTPServerRequest req, HTTPServerResponse res)
{
	// в ответ на любой запрос выдаем приветствие
	res.writeBody("Привет, %username%!");
}

Теперь скомпилируем получившееся dub’ом (dub build), запустим наш сервер и перейдем в браузере по адресу http://127.0.0.1:8080

1

Теперь добавим немного шарма в виде html-оформления. Сделать это проще всего с помощью специального html-предпроцессора Diet, который является немного подправленным для D Jade. Он позволяет включать «куски» D-кода в шаблоны, получая, таким образом, необходимые данные динамически.

Создадим в папке с проектом папку views, а в ней файл index.dt. В этот файл поместим следующую разметку.

doctype html
html
  head
    title Изучаем vibe.d
  body
    p Привет, %username%!

Познать синтаксис Diet можно, как ни странно, изучив синтаксис Jade. Немного непривычно, но не сложно.

Теперь придется поправить код нашего сервера, а именно заменить

listenHTTP(settings, &hello);

на

listenHTTP(settings, staticTemplate!"index.dt");

И также, за ненадобностью, уберем метод hello.

Теперь код сервера выглядит следующим образом:

import vibe.d;

shared static this()
{
	auto settings = new HTTPServerSettings;
	settings.port = 8080;
	settings.bindAddresses = ["127.0.0.1"];
	// указываем наш статичный шаблон
	listenHTTP(settings, staticTemplate!"index.dt");

	logInfo("Please open http://127.0.0.1:8080/ in your browser!");
}

Компиллируем, запускаем, смотрим.

2

Видите изменения? И я не вижу. А они есть!
Title у нас обозначился, да и шрифт приветствия увеличился в размерах.
Это значит, что все работает! Вот и отлично, продолжим развивать наш сервер в следующей статье…

Bagomot

Эколог, почти программист-самоучка, мучаю майнкрафт bagomot@zel.crux

Добавить комментарий