Top-level namespace for Javascript + Coffeescript
I was exploring various ways of creating a namespace for my application's functions and I wasn't happy with any of the options I found. My requirements were something like:
- The namespace should be a top-level variable. I don't want to have to prefix everything with "window."
- It should be possible to add things to the namespace so that I can organize my functions into files as I see fit.
- I would like my function names to appear at the beginning of the line when I define them so it's easy to visually parse the files.
- I want my solution to work easily with Javascript and Coffeescript
- I'm not concerned with private attributes or functions right now.
Here's what I came up with. This is a Rails 3.2 application, so I'm using the asset pipeline, but this should be easy to adapt to other frameworks.
The main manifest, which shows the proper load order:
Creating the namespace:
Adding plain Javascript functions to the namespace:
Adding Coffeescript functions to the namespace:
Then, you can simply call MyApp.test() from anywhere in your app.