<html><body><div style="color:#000; background-color:#fff; font-family:Courier New, courier, monaco, monospace, sans-serif;font-size:10pt"><blockquote style="border: none; padding: 0px;"><div class="qtdSeparateBR"><br><br></div><div class="yahoo_quoted" style="display: block;"><div style="font-family: Courier New, courier, monaco, monospace, sans-serif; font-size: 10pt;" class="yui_3_16_0_1_1401367799387_13446"><div style="font-family: HelveticaNeue, Helvetica Neue, Helvetica, Arial, Lucida Grande, sans-serif; font-size: 12pt;" class="yui_3_16_0_1_1401367799387_13447"><div dir="ltr"><font size="2" face="Arial">On Wednesday, May 28, 2014 7:27 PM, Ian Hickson <ian@hixie.ch> wrote:</font></div></div></div></div></blockquote><blockquote style="border: none; padding: 0px;"><div class="yahoo_quoted" style="display: block;"><div style="font-family: Courier New, courier, monaco, monospace, sans-serif; font-size: 10pt;"
 class="yui_3_16_0_1_1401367799387_13446"><div style="font-family: HelveticaNeue, Helvetica Neue, Helvetica, Arial, Lucida Grande, sans-serif; font-size: 12pt;" class="yui_3_16_0_1_1401367799387_13447"><div class="y_msg_container">One thing I don't see in the hooks above is anything to do with actually </div></div></div></div><div class="yahoo_quoted" style="display: block;"><div style="font-family: Courier New, courier, monaco, monospace, sans-serif; font-size: 10pt;" class="yui_3_16_0_1_1401367799387_13446"><div style="font-family: HelveticaNeue, Helvetica Neue, Helvetica, Arial, Lucida Grande, sans-serif; font-size: 12pt;" class="yui_3_16_0_1_1401367799387_13447"><div class="y_msg_container">processing dependencies. How would I (at the spec level) tell the ES6 </div></div></div></div><div class="yahoo_quoted" style="display: block;"><div style="font-family: Courier New, courier, monaco, monospace, sans-serif; font-size: 10pt;"
 class="yui_3_16_0_1_1401367799387_13446"><div style="font-family: HelveticaNeue, Helvetica Neue, Helvetica, Arial, Lucida Grande, sans-serif; font-size: 12pt;" class="yui_3_16_0_1_1401367799387_13447"><div class="y_msg_container">module system that it should not evaluate a particular module until some </div></div></div></div><div class="yahoo_quoted" style="display: block;"><div style="font-family: Courier New, courier, monaco, monospace, sans-serif; font-size: 10pt;" class="yui_3_16_0_1_1401367799387_13446"><div style="font-family: HelveticaNeue, Helvetica Neue, Helvetica, Arial, Lucida Grande, sans-serif; font-size: 12pt;" class="yui_3_16_0_1_1401367799387_13447"><div class="y_msg_container">non-script resource, e.g. a style sheet, is available?</div></div></div></div></blockquote><div class="yahoo_quoted" style="display: block;"><div style="font-size: 10pt;" class="yui_3_16_0_1_1401367799387_13446"><div style="font-size: 12pt;"
 class="yui_3_16_0_1_1401367799387_13447"><div class="y_msg_container" style="font-family: HelveticaNeue, 'Helvetica Neue', Helvetica, Arial, 'Lucida Grande', sans-serif;">When you create a dynamic module in the instantiate hook you can specify a list of dependencies like this:</div><div class="y_msg_container" style="font-family: HelveticaNeue, 'Helvetica Neue', Helvetica, Arial, 'Lucida Grande', sans-serif;"><br></div><div class="y_msg_container"><span style="font-family: 'Courier New', courier, monaco, monospace, sans-serif;">System.instantiate = function (loadRecord) {</span></div><div class="y_msg_container"><span style="font-family: 'Courier New', courier, monaco, monospace, sans-serif;">  return {</span></div><div class="y_msg_container"><span style="font-family: 'Courier New', courier, monaco, monospace, sans-serif;">    deps: ['some', 'list', 'of', 'dependencies'],</span></div><div class="y_msg_container"><span style="font-family:
 'Courier New', courier, monaco, monospace, sans-serif;">    execute: function () {</span></div><div class="y_msg_container"><span style="font-family: 'Courier New', courier, monaco, monospace, sans-serif;">      // return a new Module instance</span></div><div class="y_msg_container"><span style="font-family: 'Courier New', courier, monaco, monospace, sans-serif;">    }</span></div><div class="y_msg_container"><span style="font-family: 'Courier New', courier, monaco, monospace, sans-serif;">  };</span></div><div class="y_msg_container"><span style="font-family: 'Courier New', courier, monaco, monospace, sans-serif;">};</span><br clear="none"><br>The Loader will know to wait for those dependencies.<br><br clear="none"></div></div></div></div><blockquote style="border: none; padding: 0px;"><div class="yahoo_quoted" style="display: block;"><div style="font-family: Courier New, courier, monaco, monospace, sans-serif;
 font-size: 10pt;" class="yui_3_16_0_1_1401367799387_13446"><div style="font-family: HelveticaNeue, Helvetica Neue, Helvetica, Arial, Lucida Grande, sans-serif; font-size: 12pt;" class="yui_3_16_0_1_1401367799387_13447"><div class="y_msg_container">One thing about this is it seems very script-centric. It would be weird if </div></div></div></div><div class="yahoo_quoted" style="display: block;"><div style="font-family: Courier New, courier, monaco, monospace, sans-serif; font-size: 10pt;" class="yui_3_16_0_1_1401367799387_13446"><div style="font-family: HelveticaNeue, Helvetica Neue, Helvetica, Arial, Lucida Grande, sans-serif; font-size: 12pt;" class="yui_3_16_0_1_1401367799387_13447"><div class="y_msg_container">every time there was a <link rel=stylesheet> in the document, we </div></div></div></div><div class="yahoo_quoted" style="display: block;"><div style="font-family: Courier New, courier, monaco, monospace, sans-serif; font-size: 10pt;"
 class="yui_3_16_0_1_1401367799387_13446"><div style="font-family: HelveticaNeue, Helvetica Neue, Helvetica, Arial, Lucida Grande, sans-serif; font-size: 12pt;" class="yui_3_16_0_1_1401367799387_13447"><div class="y_msg_container">implicitly went through an ES6 module's instantiate hook just to fire up </div></div></div></div><div class="yahoo_quoted" style="display: block;"><div style="font-family: Courier New, courier, monaco, monospace, sans-serif; font-size: 10pt;" class="yui_3_16_0_1_1401367799387_13446"><div style="font-family: HelveticaNeue, Helvetica Neue, Helvetica, Arial, Lucida Grande, sans-serif; font-size: 12pt;" class="yui_3_16_0_1_1401367799387_13447"><div class="y_msg_container">the style sheet. Is there some way we can make this more generic?</div></div></div></div></blockquote><div class="yahoo_quoted" style="display: block;"><div style="font-family: Courier New, courier, monaco, monospace, sans-serif; font-size: 10pt;"
 class="yui_3_16_0_1_1401367799387_13446"><div style="font-family: HelveticaNeue, Helvetica Neue, Helvetica, Arial, Lucida Grande, sans-serif; font-size: 12pt;" class="yui_3_16_0_1_1401367799387_13447"><div class="y_msg_container"><br></div><div class="y_msg_container">Yes, the System loader would be an API for imperatively loading stuff from a script. <span style="font-size: 12pt;">The Loader hooks are the way of exposing to the JS environment how the browser loads stuff.</span></div><div class="y_msg_container"><span style="font-size: 12pt;"><br></span></div><div class="y_msg_container"><span style="font-size: 12pt;">This is interesting because users could actually modify the System loader. For example, they could set it up to load modules conditionally according to the browser's features. It could also be interesting to leave that door open for non-script imports also being subject to user rules.</span></div><div class="y_msg_container"><div
 class="yqt9571390089" id="yqtfd74743"><br></div><div class="yqt9571390089" id="yqtfd74743"><br></div></div></div></div></div><div class="yahoo_quoted" style="display: block;"><div style="font-family: 'Courier New', courier, monaco, monospace, sans-serif; font-size: 10pt;"><div style="font-family: HelveticaNeue, 'Helvetica Neue', Helvetica, Arial, 'Lucida Grande', sans-serif; font-size: 12pt;"><div class="y_msg_container">Juan</div>  </div> </div>  </div> </div></body></html>