names for Loader constructor and default loader · Issue #34 · whatwg/loader (original) (raw)
Summary
Decide on names for two things: the Loader constructor and the default loader instance.
Background
Originally we had global System
and Loader
but that was when we expected System.get()
to be a common use case. Once we worked out dynamic relative import, the default loader became a much more low-level API: it's meant for frameworks and loader customization logic, not for everyday use cases. So IMO giving it an attractive global name like System
is inappropriate. Also, it was kind of competing with window
, navigator
, and process
as Yet Another representation of the top level application state.
IMO Reflect.Loader
is good for the constructor, but this still leaves open the question of where the default loader should live. Suggestions:
- another name in
Reflect
:Reflect.System
Reflect.LOADER
- a static property or method of
Reflect.Loader
:Reflect.Loader.DEFAULT
Reflect.Loader.current
Reflect.Loader.current()
Reflect.Loader
itself is both the constructor and the instance
My preference is a Reflect.Loader.current
getter. ALLCAPS feels more appropriate for immutable constants like Math.PI
rather than a mutable object, and a current()
method feels like overkill for just accessing a singleton object. But I like the idea that it's conceptually associated with the Loader
type but it's a static singleton instance.
Drawbacks
Systemjs already has named itself after System. But it's still a pretty cool name for the project, and this just gives it a more fun historical etymology. :)