In JS, if when import a file as a whole, the syntax is
import XXX from './xxx'
But I think this is semantically wrong, because the word from
indicates that the thing you are importing is a part of the file, not the file itself.
For example, if A takes a candy from B, then the candy is just a part of B's belongings, not B himself.
So it should be just import './xxx'
, and it is like this in other languages such as Java.
If we need to give it an alias, it is import './xxx' as xxx
.
If it is like this, then when importing parts from a file, we can omit the dereference curly brackets, so it is import XXX from './xxx'
instead of import { XXX } from './xxx'
.
In the latter, {}
and from
are redundant and confusing.
Top comments (4)
The syntax to just import the file as a whole (without plucking default or individual exports) is:
This will import the file for its side-effects only. All variations of the import syntax will import the whole file.
The syntax you show is importing the
default
export - for which you need to specify a variable name in which to store the import.You can read more about using
import
in JS at MDNI see. I didn't know what is "side effects", thanks for teaching me.
But I still think this syntax is wrong in 2 ways:
Firstly, as you said "...you need a name in which to store it", when importing the
default
export, it is just a renaming operation.But it semantically doesn't have any meaning of renaming. The English words
as
indicates an alias, but it is not used here.Its syntax
import a thing from a place
means thisthing
must exist in theplace
.For example, "I imported some cattle from Mongolia", meaning there must be cattle in
Mongolia; but if I say "I imported some warships from Mongolia", it will be weird, because Mongolia doesn't have any warships.
So I think this syntax shouldn't allow renaming at all.
Secondly, the dereferencing curly brackets are unnecessary. The English word "import" already indicates a process of selection.
So by "I import cattle from Mongolia", the nation has lots of resources, but I only select cattle to ship to me.
But if I have to dereference like
I import { Cattle } from Mongolia
, that sound like the whole country of Mongolia is shipped to me, then I select some cattle and ship the rest of the country back to where it is located.Anyway, will
import XXX, YYY, ZZZ from SomeModule
cause any confusion?It's just a shortcut to simply import the
default
export as your required name. Otherwise you would need to do:Instead of just:
Which is much less verbose, and is the most common use case. It's shorthand, nothing more.
A variety of different syntaxes are offered to cover different use cases.
it had to be the same as python from rest_framework import serializers, I think it's semantically intuitive