Skip to content

HTTPS clone URL

Subversion checkout URL

You can clone with HTTPS or Subversion.

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

README.md

JooDee

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.

Dependencies

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

Tags

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
    </script>

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">
        console.log(Client.GET);
    </script>

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

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:
       close
       listen
       kill
       load
       reload
       exit

    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

Demo

    node demo.js

navigate to 127.0.0.1:8081 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 127.0.0.1:8082 in your browser.

Something went wrong with that request. Please try again.