Skip to content


Subversion checkout URL

You can clone with HTTPS or Subversion.

Download ZIP
Node.js embedded in HTML
JavaScript CoffeeScript Python
branch: master


JooDee is a replacement for PHP or ASP using Node.js javascript. To use JooDee, embed server-side javascript on web pages using special tags. Write to the page using plain HTML outside of the JooDee tags, or using the special output tag. End the response (if you are running any asyncrhonous code) using Response.end().

Easily use server-side javascript variables in your client-side javascript using the built in Client and Session objects.


JooDee depends on syntax-error and mime, both of which are packaged inside of node_modules.


General purpose server-side script tag

        var code = 'goes here';

Shortcut for Response.write(), writes the evaluated code to the page. Must be outside of script tags.

    <:: must('evaluate') + ' to a js string' :>

Includes a .html or .joo file

    <::: file/path/here.joo :>

Special variables

The variables Client and Session are available to you server-side and client-side.
Add attributes to them to make use of them.

        Client.x = 5;
        Session.username = "Iroh";

    <script type="application/javascript"> 
        alert(Session.username + Client.x); //will alert Iroh5

You also have access to the variable Page, which is a static single variable that is specific to a given page, as well as GET and POST, which hold the GET or POST data sent in the request. These three variables, Page, GET, and POST are available server-side, but you can easily expose them to the client:

        Client.GET = GET;
        Client.POST = POST;

    <script type="application/javascript">

Note: changes to any of these special variables client-side will not be reflected server-side, with the exception of Session (and even those changes would require the page to be reloaded).
Server and Page are variables which are shared either across the entire server, or scoped to all instances of a particular page. For example, to keep track of the number of views on a particular page since the server started up, you could write:

    if(!Page.userCount) Page.views++

Server acts in a similar matter, except that it is a single variable accessable to all pages.


LongFeng is a program for creating and controlling JooDee instances. It initially creates them based on the config.json file.

            "name": "JooDee",
            "dir": "./demo/",
            "port": 8080,
            "debug": true,
            "defaultPage": "joodee.joo",
            "timeout": 0
            "name": "JooDee2",
            "dir": "./demo2/",
            "port": 8081,
            "debug": false,
            "defaultPage": "joodee.joo",
            "timeout": 0

It gives a console interface for controlling all of the JooDee instances.

    Command List:

    Type a "?" and a command to learn more about it.

Since joodee.js is only a module, longfeng.js is currently the easiest way to deploy and use your sites. To use longfeng.js just add your project's options object to the config.json file and run

    node longfeng.js


    node demo.js

navigate to in your browser.

Async Demo

This demonstrates one way of how to build a page when async calls are involved.

    node async-demo.js

navigate to in your browser.

Something went wrong with that request. Please try again.