-
Notifications
You must be signed in to change notification settings - Fork 45
Description
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.SystemReflect.LOADER
- a static property or method of
Reflect.Loader:Reflect.Loader.DEFAULTReflect.Loader.currentReflect.Loader.current()
Reflect.Loaderitself 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. :)