I don’t find the arrow function version of (1) cleaner than the anonymous function version. Is it cleaner because you can fit it on one line?<p>I don’t find the import version of (2) cleaner than the require() version. Having a boring old function that’s consistent with the rest of the language actually seems better than dedicated syntax, especially when that dedicated syntax is unnecessarily verbose. Copying Python’s might have been okay:<p><pre><code>  &#x2F;&#x2F; I have to repeat “fs” =(
  var fs = require(&#x27;fs&#x27;);

  &#x2F;&#x2F; Wait, I still have to repeat “fs” *and* it’s longer
  &#x2F;&#x2F; *and* it looks more confusing? There’s no precedent
  &#x2F;&#x2F; for this use of * in JavaScript.
  import * as fs from &#x27;fs&#x27;;

  &#x2F;&#x2F; Nice.
  import fs;
</code></pre>
I don’t find the `export default` version of (3) cleaner or more streamlined than the one that assigns to `module.exports`. It just seems like another waste of dedicated syntax.