Ranked in these QuestionsQuestion Ranking

Pros

Pro

Works with basically every desktop browser, even IE6

RequireJS supports IE6+, FF2+, Safari3.2+, Chrome3+ & Opera 10+.

Pro

Has a RequireJS optimizer

After building all the modules to be loaded, the built files can be optimized as well (minified and concatenated), even though this is a completely optional step, but doing so could be a lot beneficial for your site's performance.

Pro

Supports nested dependencies

If your project has nested dependencies, you won't have to worry about resolving them at all. Because RequireJS will do that for you.

Pro

Well tested

Since the RequireJS is quite popular among the dev community, that automatically means that problems get sorted out very quickly and most of the core code has already been tested.

Pro

Well documented

The RequireJS module loader is extremely well documented. So no matter whether you're a pro at JS based web development or just a newbie, you will find the documentation very helpful whenever you're stuck or just starting out. Everything is well-defined and logically placed in proper sections in a manner such that it is very easy to understand.

Pro

AMD & CJS support

While RequireJS is mainly an AMD implementation, it can, with rare exceptions, implement CJS as well.

Pro

You don't need a server to get started

One of the best advantages of RequireJS over Browserify is that you don't need a nodejs environment to get started. Just "require" your dependencies and it takes care of loading them. By contrast, Browserify requires a running NodeJS implementation so you can build your one monolithic file, then you can push the file to your static web server.

Pro

Always running site unbundled

With other loaders, aka browserify, it isn't possible to run your site without first bundling. Require.js can load everything async which is pretty powerful.

Pro

Simple

Because of its easy to understand documentation, the RequireJS module loader is super simple to use; module definitions are as easy as defining just a key/value pair.

Pro

Can load new modules without being recompiled

It's the one of the few modules in this category that can handle IOC-style dependency injection. The others work well for apps that have knowable dependency lists at compile time, but this is the only one that can load new modules without being recompiled.

Pro

Lazily-loaded JS can access already loaded modules by name

Yet its run-time is still competitive if not better than Webpack's at higher density levels of modules.