V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX 提问指南
zeyexe
V2EX  ›  问与答

JavaScript 为什么是 import ... from ...

  •  1
     
  •   zeyexe · 2019-04-25 09:47:42 +08:00 · 4693 次点击
    这是一个创建于 2043 天前的主题,其中的信息可能已经有所发展或是发生改变。

    JavaScript 为什么是 import ... from ...,而不是 from ... import ... 呢?

    如果是 from ... import ... 语法,到 import 部分的时候 IDE 就可以提示允许 import 的 module 了,基本只需要输入几个字母或者选择一下就可以了,而 import ... from ... 需要自己先知道想 import 的 module 的全名,每次写起来都要先去看一下定义。我为了利用 IDE 的提示功能,经常先写成 import * from 'SomeModule' ,再利用 IDE 提示把 * 改成真正的名字,感觉略别扭。

    到底这种设计是基于什么考虑的呢,和 Java、Python、Go 那些语言一样不好吗?

    28 条回复    2019-04-25 20:18:05 +08:00
    dog
        1
    dog  
       2019-04-25 09:51:34 +08:00 via iPhone   ❤️ 8
    毕竟有个 select x,x,x from xxx 的前辈…
    wxsm
        2
    wxsm  
       2019-04-25 09:57:55 +08:00 via iPhone
    我觉得你说的很有道理,我也很苦恼这个。
    InternetExplorer
        3
    InternetExplorer  
       2019-04-25 09:59:35 +08:00
    我们不一样~
    cutpictureboyxx
        4
    cutpictureboyxx  
       2019-04-25 10:01:14 +08:00
    我也感觉此处 es 设计的一个瑕疵,感觉设计得有点蠢
    ryougifujino
        5
    ryougifujino  
       2019-04-25 10:03:11 +08:00
    为了读起来更自然点吧??确实不方便。不过我现在很多时候靠先写 something,然后靠 webstorm 自动补全 `import {something} from xxx`
    CallMeReznov
        6
    CallMeReznov  
       2019-04-25 10:03:21 +08:00
    我请你们吃饭 和 请你们吃饭我
    意思区别不大吧?????

    而且 import 可以直接后面跟模块 而省略起 from 你也了解他的意思是要导入这个包 模块
    你如果 from 开头你写的是啥呢?
    deepdark
        7
    deepdark  
       2019-04-25 10:03:43 +08:00 via Android
    感觉是跟 const xx = require('xxx')保持一致的
    binaryify
        8
    binaryify  
       2019-04-25 10:07:52 +08:00   ❤️ 1
    @CallMeReznov
    差别很大,from 开头编辑器才知道有什么可以导出的,不然就得先写 import {} from 'xxxModule' ,再补充里面内容否则都没有提示
    python 是同时支持 import xxxModule 和 from yyy import XXX 的
    Cyron
        9
    Cyron  
       2019-04-25 10:10:26 +08:00   ❤️ 1
    @CallMeReznov #6 是想要自动补全,不是语法
    otakustay
        10
    otakustay  
       2019-04-25 10:12:51 +08:00
    要自动补全的搞个编辑器 snippet,主流编辑器肯定全部是有支持的
    grewer
        11
    grewer  
       2019-04-25 10:15:35 +08:00
    我用 ts 的时候 import , 99%情况下不用写 , ide 自动补全就完事了
    FakeLeung
        12
    FakeLeung  
       2019-04-25 10:20:27 +08:00
    1. ts 直接敲函数,变量啥,就会自动导入了。
    2. vscode 有 import 的插件,先填写 module,再填写导出的东西。

    ZhLTE
        13
    ZhLTE  
       2019-04-25 10:20:33 +08:00
    英语就是这么读的吧 介词短语后置
    lzvezr
        14
    lzvezr  
       2019-04-25 10:20:49 +08:00 via iPhone
    你这么一说,确实是有点别扭,回想一下我也比较喜欢直接 import *这样写
    Justin13
        15
    Justin13  
       2019-04-25 10:27:36 +08:00 via Android
    确实,这点很烦。
    至于说可以自动导入的,那玩意很蠢,各种乱导入没遇到过么?
    zqx
        16
    zqx  
       2019-04-25 10:34:13 +08:00 via Android
    从来不手写 import 语句,都是实例化的时候自动填充好,vs code
    zeyexe
        17
    zeyexe  
    OP
       2019-04-25 10:34:29 +08:00
    @ZhLTE #13 直接 import 也行,java 那样 improt package.module 也挺好的,但就是 JS 目前这种情况就没法自动补全。
    crackhopper
        18
    crackhopper  
       2019-04-25 10:35:46 +08:00
    我一般都 import {} from ‘ xxx ’, 然后填写大括号里面内容。我觉得这个 snippet 展开一下,不费什么事儿。
    Sapp
        19
    Sapp  
       2019-04-25 10:35:50 +08:00
    你们的编辑器,都不会自动引入的吗? 我都很久没手写过这个玩意了
    vampuke
        20
    vampuke  
       2019-04-25 10:36:20 +08:00
    @Justin13 可以选从什么文件导入阿,基本没有手写过导入
    zeyexe
        21
    zeyexe  
    OP
       2019-04-25 10:41:13 +08:00
    @Sapp #19 你是怎么自动引入的,IntelliJ 的自动引入做得很好,WebStorm 就不行。
    Lothar
        22
    Lothar  
       2019-04-25 10:48:43 +08:00
    18 楼 + 1
    mooncakejs
        23
    mooncakejs  
       2019-04-25 11:12:41 +08:00
    import {} from 'xxx'
    再去补全 xxx
    cozof
        24
    cozof  
       2019-04-25 12:33:41 +08:00 via iPhone
    LINQ 为了解决这个问题就采用了 from 开头
    sharkrice
        25
    sharkrice  
       2019-04-25 15:31:37 +08:00
    呵呵,我刚刚才在脑内吐槽,上来就又看到一个
    binux
        26
    binux  
       2019-04-25 15:41:38 +08:00 via Android
    自动引入早关了,tab 经常瞎匹配,手快就引入了,还得跳转删除
    wly19960911
        27
    wly19960911  
       2019-04-25 15:51:52 +08:00
    @binux #25 ctrl + z 不就好了,然后重新导入下。
    Sparetire
        28
    Sparetire  
       2019-04-25 20:18:05 +08:00 via Android
    snippets 就完了,读起来自然一点,当然 from import 也没啥问题,取舍而已
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   5795 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 27ms · UTC 01:44 · PVG 09:44 · LAX 17:44 · JFK 20:44
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.