<html>
  <head>
    <meta content="text/html; charset=UTF-8" http-equiv="Content-Type">
  </head>
  <body text="#000000" bgcolor="#FFFFFF">
    <div class="moz-cite-prefix">Le 01/06/2013 23:14, Petter Envall a
      écrit :<br>
    </div>
    <blockquote
cite="mid:CAKK-qOruVHVOgzFx9LzfzwsRSw8c_MYWt60aZKJLrGuqRFMUgA@mail.gmail.com"
      type="cite">
      <div dir="ltr"><br>
        <div class="gmail_extra">
          <div class="gmail_quote">
            <blockquote class="gmail_quote" style="margin:0 0 0
              .8ex;border-left:1px #ccc solid;padding-left:1ex">
              <div text="#000000" bgcolor="#FFFFFF"> <br>
                Re "In this language", I'm not aware of other languages
                where you need to concatenate code. It has become a good
                practice for perf on the web as a workaround of HTTP 1.x
                limitations.<br>
                HTTP 2 promises that with multiplexing, script concats
                won't be necessary anymore (and may even become a bad
                practice); server push will also be possible [2] so that
                we can keep several <script> elements and ES6
                modules as separate files without performance issues.</div>
            </blockquote>
            <div><br>
            </div>
            <div>Yes, but concatenation may not be the only "need"
              (thinking of build systems to produce a single file for a
              widget script or something).</div>
          </div>
        </div>
      </div>
    </blockquote>
    Do you have examples of such systems?<br>
    In a world with multiplexing and server push, what is the benefit of
    a single-file widget?<br>
    <br>
    <blockquote
cite="mid:CAKK-qOruVHVOgzFx9LzfzwsRSw8c_MYWt60aZKJLrGuqRFMUgA@mail.gmail.com"
      type="cite">
      <div dir="ltr">
        <div class="gmail_extra">
          <div class="gmail_quote"><br>
            <blockquote class="gmail_quote" style="margin:0 0 0
              .8ex;border-left:1px #ccc solid;padding-left:1ex">
              <div text="#000000" bgcolor="#FFFFFF">
                <div class="im"> <br>
                  "make it unsafe to concatenate program files like
                  before"<br>
                </div>
                => Heard of what happens when naively concatenating
                files using strict mode inconsistently? [3] :-)<br>
              </div>
            </blockquote>
            <div><br>
              :)<br>
            </div>
            <div>But my impression is "strict" is to be implicit in es6
              anyway, so that problem for concatenation would not be
              present by then? Happy to be corrected here.<br>
            </div>
          </div>
        </div>
      </div>
    </blockquote>
    Only within new syntax IIRC (modules, classes). Outside these new
    syntax constructs, non-strict will remain non-strict.<br>
    <br>
    <blockquote
cite="mid:CAKK-qOruVHVOgzFx9LzfzwsRSw8c_MYWt60aZKJLrGuqRFMUgA@mail.gmail.com"
      type="cite">
      <div dir="ltr">
        <div class="gmail_extra">
          <div class="gmail_quote">
            <div> <br>
            </div>
            <blockquote class="gmail_quote" style="margin:0 0 0
              .8ex;border-left:1px #ccc solid;padding-left:1ex">
              <div text="#000000" bgcolor="#FFFFFF"> Even before strict
                mode, loading JS on one of several <script>
                elements has observable behavior (number of
                <script> elements) and can cause bugs in fragile
                code.<br>
                Also, document.write has a different semantics if run in
                an inline script or a loaded script.<br>
                In any case, it's not new that how JS is packaged and
                loaded can be observed at runtime and lead to bugs if
                the loaded code behavior depends on that. It's been
                fought with conventions and tools. I don't thing that'll
                stop with any version of the language.<br>
              </div>
            </blockquote>
            <div><br>
            </div>
            <div>True, agree. I was just thinking.. a lot of the
              awesomeness of new the features would cause fragility,
              without one even having used any "weird" constructs - just
              the feature and "plain old concatenation".<br>
            </div>
          </div>
        </div>
      </div>
    </blockquote>
    What are you referring to?<br>
    The example that triggered my answer then yours only used "let" as
    new feature. And even hacked around with old features (label+break),
    it wasn't fragile after all.<br>
    What is fragile about new features?<br>
    <br>
    I believe we're having a dogma issue. Concatenation is not an
    unconditionally good idea. It's only become a good practice because
    of HTTP 1.x and the inherent latency of the network. Improve HTTP
    and the good practice is ready to be questioned.<br>
    <br>
    <blockquote
cite="mid:CAKK-qOruVHVOgzFx9LzfzwsRSw8c_MYWt60aZKJLrGuqRFMUgA@mail.gmail.com"
      type="cite">
      <div dir="ltr">
        <div class="gmail_extra">
          <div class="gmail_quote">
            <div>
               <br>
            </div>
            <blockquote class="gmail_quote" style="margin:0 0 0
              .8ex;border-left:1px #ccc solid;padding-left:1ex">
              <div text="#000000" bgcolor="#FFFFFF"> Maybe that'll stop
                when the majority of servers and clients support HTTP 2.
                20 years from now? 30? The problem is concatenation, not
                the language.<br>
              </div>
            </blockquote>
            <div><br>
            </div>
            <div>Yeah concatenation may be costly in the way that it can
              cause conflicts under various circumstances.</div>
          </div>
        </div>
      </div>
    </blockquote>
    There is also a granularity problem. If you concat all the files
    together, it takes time to parse/run. If you can send all the files
    at once (server push), but have them run only when needed, you're
    saving a bit of CPU time.<br>
    <br>
    <blockquote
cite="mid:CAKK-qOruVHVOgzFx9LzfzwsRSw8c_MYWt60aZKJLrGuqRFMUgA@mail.gmail.com"
      type="cite">
      <div dir="ltr">
        <div class="gmail_extra">
          <div class="gmail_quote">
            <div>Though, it has been part of the trade for quite a
              while, and "breaking" (which probably is too strong a
              word) what worked with it would be a little disappointing.<br>
            </div>
          </div>
        </div>
      </div>
    </blockquote>
    I don't get it. If by "it", you're referring to "concatenation", I
    highly recommend reading Ilya Grigorik talk (Slides 42-43 this time)<br>
    <a class="moz-txt-link-freetext" href="http://www.igvita.com/slides/2013/fluent-perfcourse.pdf">http://www.igvita.com/slides/2013/fluent-perfcourse.pdf</a><br>
    <br>
    HTTP 2 enables web devs to get rid of all the dirty hacks we've been
    forced to do because of HTTP 1.x limitations (like concatenation,
    sprites, asset sharding in multiple domains...). Having the
    opportunity to undo all of that is the opposite of disappointing.<br>
    <br>
    <blockquote
cite="mid:CAKK-qOruVHVOgzFx9LzfzwsRSw8c_MYWt60aZKJLrGuqRFMUgA@mail.gmail.com"
      type="cite">
      <div dir="ltr">
        <div class="gmail_extra">
          <div class="gmail_quote">
            <div>
              <br>
            </div>
            <blockquote class="gmail_quote" style="margin:0 0 0
              .8ex;border-left:1px #ccc solid;padding-left:1ex">
              <div text="#000000" bgcolor="#FFFFFF"> <br>
                Regardless, compile-to-JS tools are the future for large
                scale applications. Look at the current trend.
                CoffeeScript, Dart, TypeScript, etc. This isn't an
                isolated effort. HTML is generated from HTML template
                languages (handlebar, moustache, jade, etc.). CSS is
                generated from other languages (SASS, LESS, etc.).<br>
                These preprocessor tools are necessary to abstract away
                what I call "regrets" [4], that is cruft and annoyances
                due to the course of history. Also you don't necessarily
                deploy your code to the browser the same way your
                organize it for maintainability purposes.
                <div class="im"><br>
                  <br>
                  <blockquote type="cite">
                    <div dir="ltr">
                      <div class="gmail_extra">
                        <div class="gmail_quote">
                          <div> Otherwise it seems tom me like IIFEs
                            still would do the best job defining
                            "modules" (in the sense "parts of a
                            program") in the outermost scope.<br>
                          </div>
                        </div>
                      </div>
                    </div>
                  </blockquote>
                </div>
                I feel this thread was more exploratory than trying to
                define a good practice.<br>
                I believe ES6 modules are the way forward to replace
                top-level IIFEs.<br>
              </div>
            </blockquote>
            <div><br>
            </div>
            <div>I'm sure they are. I just thought the concatenation
              problem that arose with ES5/"use strict"; would be gone by
              ES6</div>
          </div>
        </div>
      </div>
    </blockquote>
    I am under the impression that you don't fully understand how web
    standards work. The ES5/"use strict" problem will never go away. The
    very first rule of evolving something on the web platform is to
    break no website.<br>
    ES6 only brings new feature and the *hope* is that people will use
    these new features which are safe by default and incidentally stop
    using unsafe features.<br>
    Again, concatenation is a hack to work around an HTTP limitation;
    not an inherently good idea. I don't think "plain concatenation" is
    a worthwhile consideration for how the language works.<br>
    <br>
    <blockquote
cite="mid:CAKK-qOruVHVOgzFx9LzfzwsRSw8c_MYWt60aZKJLrGuqRFMUgA@mail.gmail.com"
      type="cite">
      <div dir="ltr">
        <div class="gmail_extra">
          <div class="gmail_quote">
            <div>and that it would not be replaced by another quirk
              regarding this practice.<br>
            </div>
          </div>
        </div>
      </div>
    </blockquote>
    It is not... Modules will replace top-level IIFEs.<br>
    <br>
    Hmm... All your answers are shaped as "yes, but..."<br>
    <br>
    David<br>
  </body>
</html>