• R
    Use ES module syntax for application.js.tt and docs · 04cbaa14
    Ross Kaffenberger 提交于
    This change swaps the CommonJS require() syntax in the Webpacker
    application.js pack template file and in documentation examples with ES
    module import syntax.
    
    Benefits of this change include:
    
    Provides continuity with the larger frontend community: Arguably, one of
    the main draws in adopting Webpacker is its integration with Babel to
    support ES module syntax. For a fresh Rails install with Webpacker, the
    application.js file will be the first impression most Rails developers
    have with webpack and Webpacker.  Most of the recent documentation and
    examples they will find online for using other libraries will be based
    on ES module syntax.
    
    Reduces confusion: Developers commonly add ES imports to their
    application.js pack, typically by following online examples, which means
    mixing require() and import statements in a single file. This leads to
    confusion and unnecessary friction about differences between require()
    and import.
    
    Embraces browser-friendliness: The ES module syntax forward-looking and
    is meant to be supported in browsers. On the other hand, require()
    syntax is synchronous by design and not browser-supported as CommonJS
    originally was adopted in Node.js for server-side JavaScript. That
    webpack supports require() syntax is merely a convenience.
    
    Encourages best practices regarding optimization: webpack can statically
    analyze ES modules and "tree-shake", i.e., strip out unused exports from
    the final build (given certain conditions are met, including
    `sideEffects: false` designation in package.json).
    04cbaa14
README.md 7.9 KB