Aloe Express Features

Serve Dynamic and Static Content

You can use Aloe Express to serve up both dynamically generated and static content. Use Xojo to connect to databases, Web services / APIs, etc, and then dynamically generate a variety of content types - HTML, images, JSON, etc. Or server up static files - stylesheets, images, etc.


Access Request Attributes

Aloe Express gives developers convenient access to all attributes of an HTTP requests. Request parameters are available via GET and POST dictionaries. Headers are available as a dictionary.


Route and Process Requests

Aloe Express provides access to the request path and path components (as an array of strings), making it very easy to route and process requests.


Generate Responses Using Templates

Aloe Express includes support for a mustache-like templating system. Easily merge data with a template to generate a response.


Work With Headers

Aloe Express provides easy access to both request and response headers in the form of dictionaries. For example, to get access to a request header, you can do something like this...

Dim UserAgent As String = Request.Headers.Lookup("User-Agent", "")

And to set a response header, you can do something like this...

Request.Response.Headers.Value("Content-Type") = "application/json"

Get and Set Cookies

Use the Response.CookieSet method to set cookies. For example:

Dim ExpirationDate As Xojo.Core.Date
Dim DateInterval As Xojo.Core.DateInterval = New Xojo.Core.DateInterval(0, 0, 0, 0, 0, 30)
ExpirationDate = Xojo.Core.Date.Now + DateInterval
Request.Response.CookieSet("AccountName", "xojofan@test.com", ExpirationDate)
Request.Response.CookieSet("PreferredLanguage", "French", ExpirationDate)

Getting cookies is just as easy. Simply refer to the Request.Cookies dictionary. For example:

Dim AccountName As String = Request.Cookies.Lookup("AccountName", "")
Dim PreferredLanguage As String = Request.Cookies.Lookup("PreferredLanguage", "English")

Manage Sessions

Building a Web app and need to maintain state? No problem. With the Aloe Express SessionEngine class, you can effortlessly create and maintain sessions.


Use WebSockets

Aloe Express supports the WebSocket Protocol, enabling two-way communication between clients and the server.


Improve Performance With Caching

Use server-side caching to store anything at all - content, data, etc. Storing something in the cache is as easy as...

App.CacheEngine.Put("DrummersTable", TableHTML, 60)

And retrieving something from the cache is as easy as...

TableHTML  = App.CacheEngine.Get("DrummersTable")

Compress Responses

Optionally compress responses using gzip.


Handle 404 Errors

Use Aloe Express's default 404 error handler, or roll your own custom error handler.


Log Requests

Optionally generate a log of requests and responses in the industry standard Extended Log File Format


Easy Server Configuration

You can configure the server (its port, minimum and maximum number of sockets, etc) using parameters in your code or using command line arguments. With support for command line arguments, you can easily launch multiple instances of your app in situations where you need to do load balancing.


Provide Secure Communications

New in Aloe Express v2.0, you can provide secure communications to your apps using secure sockets layer (SSL) technology.


XojoScript Support

New in Aloe Express v3.2, you can include XojoScript blocks in your HTML files. Aloe Express will automatically detect the scripts, run them, and include any output in the rendered page.


Compile Your Apps

Aloe Express is Xojo to the core. That means you can compile your projects as 32 or 64-bit applications and deploy them on macOS, Windows, or Linux-based servers.


Ready to give Aloe Express a try?

If you don't already have Xojo, hop over to Xojo.com and download it. It's absolutely free to try and develop with. You only need to pay when you're ready to compile and deploy an app.

Then download Aloe Express and start experimenting. We've even got a easy-to-follow tutorial that will walk you through important concepts and features. And documentation is available here.