Did you know you could use C preprocessor even for JavaScript files? (yes, it doesn't care about syntax that much)

Say, we want to implement C-like "modules" (inclusions) in JavaScript.

Create first file 1.js (filenames don't matter) like this:

#ifndef HELLO_1 #define HELLO_1 console.log("hello"); #endif

( #ifndef / #define is standard C practice for avoiding double-inclusion)

Then, create 2.js :

#ifndef HELLO_2 #define HELLO_2 #include "1.js" console.log("world"); #endif

And now you can bundle them into one file with:

cpp -P -Wundef -nostdinc -C 2.js

(here we ask cpp just to preprocess our file with basic warning and preserving comments; also we ask not to search standard C library for includes)

And as a result you would get:

console.log("hello"); console.log("world");

Note that you can even define and use full-featured macroses inside of your JavaScript - just #define them and ready to go!

P.S. Yes this is a crazy hack (as most of other stuff in my blog), and there are more appropriate tools for transforming JavaScript, but why not to try if we can? :)

UPD [17.08.2015]: Turns out it's not as crazy experiment as I initially thought. Ryan Grove on Twitter just mentioned that they actually used this technique at Yahoo Search in 2007: