I’m trying to figure out how to best manage Javascript file dependencies and have that drive the packaging of a 100% front-end app. In short, I’m building an application using backbone.js along with some other libraries. I want an organized codebase and would like to be able to declare dependencies within each file. Ideally those declarations would a) drive the order in which files are loaded by the browser (while in development I want the files to load separately) and drive the order in which the packaging scripts load the scripts for concatenation (I’m aiming to serve a single file for the entire app).
I’ve been reading on requirejs and commonjs but I’m not convinced.
I have a simple shell script right now that uses cat <file> <file> <file> <file> > concatenated.file to do what I want but it’s a pain to maintain that list of files up to date and in the right order. It’d be much easier to be able to declare the dependency at the begining of each javascript file and have the packager and loaders be smart about using that information to concatenate/load scripts.
Any suggestions?
Thanks you,
Luis
For complex frontend apps Asynchronous Module Definition (AMD) format is best choice. And it’s alot of great loaders that supports AMD (curl.js, RequireJS).
I recomend this articles to learn about modern approaches in javascript dependecy management:
Writing Modular JavaScript With AMD, CommonJS & ES Harmony
Why AMD?
For packaging take into account CommonJS specifications, there are few implementations and it’s a matter of taste, but in any case I recommend to choose tools, that is compliant with some of that specifications.