D рдкрд░ рд╕рд░рд▓ рд╡реЗрдмрд╕рд╛рдЗрдЯ

рдПрдЪ рднрд╛рд╖рд╛ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдбреА рдкрд░ рдЙрд▓реНрд▓рд┐рдЦрд┐рдд рдереАред рд╣рд╛рд▓рд╛рдВрдХрд┐, рд╡реНрдпрд╛рд╡рд╣рд╛рд░рд┐рдХ рдЙрдкрдпреЛрдЧ рдХреА рдЕрд╕рдВрднрд╡рддрд╛ рдХреЗ рдХрд╛рд░рдг рдЗрд╕реЗ рд▓реЛрдХрдкреНрд░рд┐рдпрддрд╛ рдирд╣реАрдВ рдорд┐рд▓реА, рдпрд╛ рдЗрд╕рдХреЗ рдмрдЬрд╛рдп, рдмрд╕ рдЗрд╕рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рдереАред рдЖрдЬ рдореИрдВ рдЖрдкрдХреЛ рдбреА рдХреЗ рд▓рд┐рдП рдПрдХ рдЙрдкрдпреЛрдЧреА рдврд╛рдВрдЪреЗ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдмрддрд╛рдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реВрдВред рдЕрдзрд┐рдХрд╛рдВрд╢ рдкреНрд░реЛрдЧреНрд░рд╛рдорд░ рдХрдо рд╕реЗ рдХрдо рдПрдХ рдмрд╛рд░ рд╕рдВрдХрд▓рд┐рдд рднрд╛рд╖рд╛ рдореЗрдВ рдПрдХ рд╡реЗрдм рд╕рд░реНрд╡рд░ рд▓рд┐рдЦрддреЗ рд╣реИрдВред рд▓реЗрдХрд┐рди рдпреЗ рднрд╛рд╖рд╛рдПрдВ рдЗрд╕ рддрд░рд╣ рдХреЗ рдХрд╛рд░реНрдп рдХреЗ рд▓рд┐рдП рдирд┐рдореНрди рд╕реНрддрд░ рдХреА рд╣реИрдВред рдРрд╕реЗ рдХрд╛рд░реНрдп рдХреЗ рд▓рд┐рдП, рдЖрдк рдЗрд╕ рднрд╛рд╖рд╛ рдХрд╛ рдЙрдкрдпреЛрдЧ vibe.d рдлреНрд░реЗрдорд╡рд░реНрдХ рдХреЗ рд╕рд╛рде рд╕рдВрдпреЛрдЬрди рдореЗрдВ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ;

Dmd рдФрд░ vibe.d рд╕реНрдерд╛рдкрд┐рдд рдХрд░рдирд╛ рдХрд╛рдлреА рд╕рд░рд▓ рд╣реИред рдЦрд┐рдбрд╝рдХрд┐рдпреЛрдВ рдХреЗ рдиреАрдЪреЗ рдлреНрд░реЗрдорд╡рд░реНрдХ рд╕реНрдерд╛рдкрд┐рдд рдХрд░рддреЗ рд╕рдордп, рдкреАрдПрдЯреАрдПрдЪ рдореЗрдВ рдЖрд╡рд╢реНрдпрдХ рдкрде рд▓рд┐рдЦрдирд╛ рди рднреВрд▓реЗрдВ

рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ, рдПрдХ рдкрд░рд┐рдпреЛрдЬрдирд╛ рдмрдирд╛рдПрдБред

vibe init project_name
рд░реВрдкрд░реЗрдЦрд╛ рд╕реНрд╡рдпрдВ рд╡рд╛рдВрдЫрд┐рдд рд╕рдВрд░рдЪрдирд╛ (3 рдлрд╝реЛрд▓реНрдбрд░ рдФрд░ рдкреНрд░рдХрдЯ) рдмрдирд╛рдПрдЧреА
/ рд╕рд╛рдХреНрд╖рд╛рддреНрдХрд╛рд░ - рдЯреЗрдореНрдкрд▓реЗрдЯ
./public - рд╕реНрдЯреИрдЯрд┐рдХ рдлрд╛рдЗрд▓реНрд╕, ala * .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); //  } 


рд╡рд╛рдЗрдм рдореЗрдВ рдПрдХ рдЕрдЪреНрдЫрд╛ рдЯреЗрдореНрдкрд▓реЗрдЯ рдЗрдВрдЬрди рд╣реИ, рдереЛрдбрд╝рд╛ рд╡рд┐рд╡рд╛рджрд╛рд╕реНрдкрдж рд╣реИ, рд▓реЗрдХрд┐рди рдмреБрд░рд╛ рдирд╣реАрдВ рд╣реИред JADE рдЯреЗрдореНрдкрд▓реЗрдЯ рдЗрдВрдЬрди рдХреЗ рдЖрдзрд╛рд░ рдкрд░ред рд╕реАрдПрд╕рдПрд╕ рд╣реИрдВрдбрд▓рд░ рдХреЗ рдЖрдзрд╛рд░ рдкрд░ рдЬреБрдбрд╝рд╛ рд╣реБрдЖ рд╣реИ, рд▓реЗрдХрд┐рди рд╢реИрд▓рд┐рдпреЛрдВ рдХреЛ рд╕рд╛рд░реНрд╡рдЬрдирд┐рдХ рдлрд╝реЛрд▓реНрдбрд░ рдореЗрдВ рд░рдЦрдиреЗ рдХреА рд╕рд▓рд╛рд╣ рджреА рдЬрд╛рддреА рд╣реИред рдЯреЗрдореНрдкрд▓реЗрдЯ рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреЛ рд╡рд┐рдЪрд╛рд░реЛрдВ рдореЗрдВ рд░рдЦрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдПред

 !!! 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 


рд╡рд╛рдЗрдмреЗрдб рдХрд╛ рдирд┐рд░реНрд╡рд┐рд╡рд╛рдж рдкреНрд▓рд╕ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рддрд╛ рд╣реИред рдХрдВрд╕реЛрд▓ рд╕реЗ рдХрд╛рдо рдХрд░рдирд╛, рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдмрдирд╛рдирд╛, рд╕рдВрдХрд▓рди рдФрд░ рдбреАрдмрдЧ рдХрд░рдирд╛ рдмрд╣реБрдд рд╕реБрд╡рд┐рдзрд╛рдЬрдирдХ рд╣реИред рдЙрдиреНрд╣реЛрдВрдиреЗ рдиреЛрдЯрдкреИрдб ++ рдХреЗ рд▓рд┐рдП рдХреБрдЫ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдмрдирд╛рдИред

vibe build

рдкрд░рд┐рдпреЛрдЬрдирд╛ рдХреА рд╡рд┐рдзрд╛рдирд╕рднрд╛ (рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ рдкрд░рд┐рдпреЛрдЬрдирд╛ рдлрд╝реЛрд▓реНрдбрд░ рдореЗрдВ)ред

рд╕рдВрдХрд▓рди рдХреЗ рдмрд╛рдж, рдПрдХ рдирд┐рд╖реНрдкрд╛рджрди рдпреЛрдЧреНрдп рдлрд╝рд╛рдЗрд▓ рдмрдирд╛рдИ рдЬрд╛рддреА рд╣реИ, рдЖрд╡рд╢реНрдпрдХ рдкреБрд╕реНрддрдХрд╛рд▓рдп рдЬреБрдбрд╝реЗ рд╣реЛрддреЗ рд╣реИрдВред рдЗрд╕ рдврд╛рдВрдЪреЗ рдХрд╛ рдПрдХ рдФрд░ рдкреНрд▓рд╕ рдмрдВрдбрд▓ рдмреИрдЯрд░реА рд╣реИред рд╣рд░ рдЪреАрдЬ рдХреЗ рд▓рд┐рдП рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдкрд░реНрдпрд╛рдкреНрдд рдкреБрд╕реНрддрдХрд╛рд▓рдп рд╣реИрдВред рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдпрд╣ рдХреЗрд╡рд▓ cgi рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдирд╣реАрдВ рд▓рд┐рдЦ рд░рд╣рд╛ рд╣реИ, рдпрд╣ рдПрдХ рдкреВрд░реНрдг-рдЕрддреБрд▓реНрдпрдХрд╛рд▓рд┐рдХ рд╕рд░реНрд╡рд░ рд╣реИред рдкрд░рд┐рдпреЛрдЬрдирд╛ рдХреЗ рд╡рд┐рдХрд╛рд╕ рдХреЗ рд╕рд╛рде, рдпрд╣ рдПрдХ рд▓реЛрдб рдмреИрд▓реЗрдВрд╕рд░ (рдпрджрд┐ рдЗрд╕реЗ рд╕рд╣реА рдврдВрдЧ рд╕реЗ рд╕рдордЭрд╛ рдЬрд╛рддрд╛ рд╣реИ) рд╡рд┐рдХрд╕рд┐рдд рдХрд░рдиреЗ рдХреА рдЙрдореНрдореАрдж рд╣реИред

рдкреЗрд╢реЗрд╡рд░реЛрдВ: рдЧрддрд┐, рд╕рд╛рдкреЗрдХреНрд╖ рд╕рд╛рджрдЧреА, рдХрдо рдкреНрд░рд╡реЗрд╢ рд╕реАрдорд╛, рдмрдбрд╝реЗ рдЙрдкрдХрд░рдг, рд▓рдЪреАрд▓рд╛рдкрди (рди рдХреЗрд╡рд▓ http рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ, рдмрд▓реНрдХрд┐ рд╕реАрдзреЗ tpp рдХреЗ рд╕рд╛рде рднреА)
рд╡рд┐рдкрдХреНрд╖: рдХрдЪреНрдЪрд╛ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдФрд░ рднрд╛рд╖рд╛, рдЫреЛрдЯрд╛ рд╕рдореБрджрд╛рдп

рд╕рд╛рдорд╛рдиреНрдп рддреМрд░ рдкрд░, рд░реВрдкрд░реЗрдЦрд╛ рдХрд╛рдлреА рдЕрдЪреНрдЫреА рдФрд░ рд╕реБрд╡рд┐рдзрд╛рдЬрдирдХ рд╣реЛрддреА рд╣реИред рдПрдХ рд╕реБрд╡рд┐рдзрд╛рдЬрдирдХ рднрд╛рд╖рд╛ рдХреЗ рд╕рдВрдпреЛрдЬрди рдореЗрдВ, рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдПрдХ рдирдпрд╛ рдЬреАрдУ рдкреНрд░рддрд┐рдпреЛрдЧреА, рдиреЛрдб.рдЬреЗрдПрд╕, рджрд┐рдЦрд╛рдИ рджреЗрдЧрд╛ред

Source: https://habr.com/ru/post/In181548/


All Articles