Установка dmd и vibe.d достаточна проста. При установке фреймворка под windows не забудьте прописать нужные пути в PATH
Для начала создадим проект.
vibe init project_name
Фреймворк сам создаст нужную структуру(3 папки и манифест)
./views — шаблоны
./public — статичные файлы, аля *.css,*.js
./src — исходный код приложения
//app.d import vibe.d; import std.stdio; import std.string; import std.file; import std.array; // Подключаем нужны библиотеки void image (HTTPServerRequest req, HTTPServerResponse res) { auto file = format("./public/images/%s", req.params["f"]); if(exists(file)) { auto image = cast(ubyte[]) read(file); res.writeBody(image,"image"); } else { res.writeBody("Not Found","text/plain"); } } // Создаем обработчика , который будет отдавать изображения void style (HTTPServerRequest req, HTTPServerResponse res) { auto css = readText(format("./public/styles/%s", req.params["f"])); res.writeBody(css,"text/css"); } // Создаем обработчика , который будет CSS void error(HTTPServerRequest req, HTTPServerResponse res, HTTPServerErrorInfo error) { res.writeBody("Some error, man","text/plain"); } // Создаем обработчика ошибок void index_req(HTTPServerRequest req, HTTPServerResponse res) { auto request = req.params["r"]; // Получаем текст запроса res.renderCompat!("index.dt", HTTPServerRequest, "req",string,"title")(req,request); // Рендерим шаблон с передачей в него шаблона. } void index(HTTPServerRequest req, HTTPServerResponse res) { res.renderCompat!("index.dt", HTTPServerRequest, "req",string,"title")(req,"Main page"); // Рендерим шаблон с передачей в него шаблона. } // Создаем обработчика , который будет отдавать главную страницу со всякими плюшками. shared static this() { auto settings = new HttpServerSettings; settings.port = 8080; // Подняли http сервер на порту 8080 //settings.errorPageHandler = toDelegate(&error); // Подключили обработчик ошибок // Создаем экземляр роутера(он выбирает на какой обработчик отправить тот или иной запрос) auto router = new URLRouter; router.get("/:r",&index_req); router.get("/",&index); router.get("/style/:f",&style); router.get("/images/:f",&image); //Добавили пару обработчиков listenHTTP(settings,router); //Запустили сервер }
В vibe есть неплохой шаблонизатор, немного спорный, но неплохой. Основан на шаблонизаторе JADE. CSS подключается в зависимости от обработчика, но стили желательно держать в папке public.Файлы шаблонов же следует держать в views.
!!! 5 html head title Hi world meta(charset="utf-8") link(rel="stylesheet",href="/style/main.css") body div#menu a#logo(href="/") div.links a(href="/main")Main page a(href="/about")About a(href="/some")Some div#content div.article h3 #{title} p Sorry,not founded
Неоспоримый плюс vibed — это работа с проектами. Очень удобно работать из консоли, создание, компиляция и дебаг проекта. Себе наделал пару скриптов для Notepad++.
vibe build
Сборка проекта(разумеется в папке проекта).
После компиляции создается исполняемый файл, подключаются нужные библиотеки. Еще один плюс этого фреймворка — Батарейки в комплекте. Библиотек реально хватает для всего. При том, это не только написание cgi приложений, это полноценный асинхроный сервер. С развитием проекта предполагается развитие балансировщика нагрузки(если правильно понял).
Плюсы: Скорость, Относительная простота, Низкий порог вхождения, Большая комплектация, Гибкость(работает не только с http, но и напрямую с tcp)
Минусы: Сырость проекта и языка, маленькое сообщество
В целом фреймворк вполне неплох и удобен. В сочетании с удобным языком думаю появится новый конкурент GO,node.js.
ссылка на оригинал статьи http://habrahabr.ru/post/181548/
Добавить комментарий