Indeed. If you have used Node.js extensively, I am sure you are familiar with 
this paradigm.


________________________________
From: es-discuss <es-discuss-boun...@mozilla.org> on behalf of Mark Volkmann 
<r.mark.volkm...@gmail.com>
Sent: Friday, March 14, 2014 10:50
To: Rick Waldron
Cc: es-discuss@mozilla.org
Subject: Re: module exports

Is the common use case for "export default" when you want to give users of the 
module an easy way to obtain a single function?

So instead of users doing this:

import {someFn} from 'wherever';

they can do this:

import someFn from 'wherever';


On Fri, Mar 14, 2014 at 9:40 AM, Rick Waldron 
<waldron.r...@gmail.com<mailto:waldron.r...@gmail.com>> wrote:



On Fri, Mar 14, 2014 at 10:07 AM, Mark Volkmann 
<r.mark.volkm...@gmail.com<mailto:r.mark.volkm...@gmail.com>> wrote:
On Fri, Mar 14, 2014 at 8:54 AM, Kevin Smith 
<zenpars...@gmail.com<mailto:zenpars...@gmail.com>> wrote:

I'm trying to understand how that compares to ES6 modules. I see how in ES6 I 
can import specific things from a module or I can import everything a module 
exports.

You can't really import all exported bindings.  You can import the module 
instance object itself:

    module M from "wherever";

which will give you access to all of the exports.

That's what I meant by importing all the exports.
I'd prefer it if the syntax for that was

import M from "wherever";

As Kevin said, this already means "import the default export from 'wherever'"


That way I could think of import is doing something like destructuring where 
the other syntax below is just getting some of the exports.

import {foo, bar} from "wherever"';


Am I correct that a "default" export can be somewhere in the middle ... a 
subset of everything that is exported?

Not really.  The default export is literally just an export named "default".  
There is sugar on the import side, where you can leave off the braces:

    import foo from "somewhere";

is equivalent to:

    import { default as foo } from "somewhere";

The specialized default export syntax is just plain confusing and should be 
jettisoned, in my opinion.  It would be less confusing for users to simply 
write:

    export { foo as default };

I fail to see why sugar over this form is necessary.

Because it doesn't allow for the Assignment Expression form (specifically, 
function expressions) that developers expect to be able to write:

  export default function() {}

Rick



--
R. Mark Volkmann
Object Computing, Inc.
_______________________________________________
es-discuss mailing list
es-discuss@mozilla.org
https://mail.mozilla.org/listinfo/es-discuss

Reply via email to