Rex Javascript compiling for root
Switch branches/tags
Nothing to show
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Failed to load latest commit information.


response.require is a root plugin, for compiling Javascript files using rex. It adds one method response.require. Install using npm.

npm install response.require


response.require takes either a filename and an optional options object, or just the options object as first argument. The input can either be Javascript or HTML, and can be specified using options.html or options.js. When the input is determined to be HTML, either by checking the filename extension or options.html, all the script tags which have the type attribute set to text/require are extracted, joined and compiled using rex.

var fs = require('fs');
var root = require('root');
var responserequire = require('response.require');

var app = root();

app.use(responserequire, { /* options for rex */ });

app.get('/js/*', function(request, response) {
	// Return the compiled javascript file

The module exposes an extra function which is mostly suited for development.

// Create a route and pass the script function
app.get('/require', responserequire.script);

In a HTML file add a script tag whos src attribute points at the route. The specified script tags are compiled and inserted into the document.

<!-- ./index.html -->
		<title>response.require test</title>

		<script type="text/javascript" src="/require"></script>

		<!-- Type must be text/require, only script tags with that type will be compiled -->
		<script type="text/require">
			var mymodule = require('my-module');
			// Do something with mymodule

		<script type="text/require">
			// Require more modules

This is equivalent to doing the following on the server.

app.get('/route', function(request, response) {
	// Read the content of the HTML file
	fs.readFile('./index.html', function(err, content) {
		if(err) return response.error(err);

		response.setHeader('Content-Type', 'application/javascript');

		// Compile the script tags and return the result
		response.require({ html: conent });

responserequire.script adds a more generic method of doing the above, which works with all HTML files, but requires multiple requests to the server.