On Tue, 14 Dec 2010 18:27:28 +0200, Alexander Pánek <a.pa...@brainsware.org> wrote:

D as server-side was once something I tried to achieve, but it wasn't the right time. It would have been perfect as backend for a full-blown JS browser app, only handling & shuffling data around, sending JSON back and forth.

I've done this. I wrote three web-apps (HTML/CSS, JS+jQuery and D). It's awesome.

Two of the three are private, but here's the simplest one I wrote in 2006 (no jQuery):
http://snoop.worms2d.info/ (basically web IRC client)

The biggest challenge with pure JS applications is getting back/forward buttons and bookmarking right. It's possible, and easy with the right jQuery plugins. However, preserving state which you can't squeeze in the URL is nontrivial (for example, the user submits a form, then clicks "Back" - normally the form would still be filled out on non-JS apps). The solution is storing the information in JS vars or the DOM (you could even leave the form HTML filled out).

D really hits the spot here, though. The apps' backends needed to be persistent and fast (things like searching through growable memory-mapped files), so CGI-like languages (PHP/Perl) were no good. With D's inline struct types and a JSON serializer, returning JSON is really clean and easy, which isn't possible in mainstream compiled languages:

if (resource == "/getfoo")
{
        struct FooResult { int n; string s; }
        return toJSON(FooResult(42, "bar")); // {"n":42,"s":"bar"}
}

--
Best regards,
 Vladimir                            mailto:vladi...@thecybershadow.net

Reply via email to