people like to use module systems, there are many module systems available now, module systems need to solve the problems of script loading and dependency management
Some use asynchronous way like AMD(requirejs)
some use synchronous way like browserify, duo
howerver both have advantages and disadvantages
use `define`, `require` ?
write `messy configuration file` ?
alaways `build a bundle` ?
besides, dependency injection is above module system actually, it can work well with module system to use `require` to resolve library for example