You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

为何同时使用export与export default?模块导出语法疑问解析

关于ES模块导出的两个问题解答

一、同时使用export default和export的原因

这种写法本质上是同时提供默认导出和命名导出,目的是给模块的使用者提供更灵活的导入选择:

  • 默认导出:使用者可以用任意名称导入整个聚合对象,比如:

    import myModule from './your-module'
    console.log(myModule.something1)
    

    这种方式适合需要一次性使用多个导出内容的场景,写法更简洁。

  • 命名导出:使用者可以按需导入特定的内容,无需加载整个模块(现代打包工具也能基于此做tree-shaking优化),比如:

    import { something1 } from './your-module'
    console.log(something1)
    

    这种方式更贴合"按需引入"的理念,导入的变量名也能直接对应模块内的原始命名,可读性更强。

简单来说,这是一种兼顾不同使用习惯和场景的设计——既支持便捷的整体导入,也支持精准的按需导入。

二、为什么不能使用export something这种写法

ES模块的export语法有严格规则,直接写export something不符合语法规范:

  • 命名导出的正确写法只有两种:
    1. 声明时直接导出:在定义变量/函数/类的同时加上export,比如:
      export const something = 'value'
      export function doSomething() {}
      
    2. 导出已声明的标识符:用export { 标识符列表 }的形式,把已经定义好的变量/函数导出,比如:
      const something = 'value'
      export { something }
      

而export something这种写法,JS引擎无法识别它的意图——它既不是一个完整的声明(比如export const something),也不是一个合法的导出列表(export { something }),所以会直接抛出语法错误。

另外补充:export default something是合法的,因为default是ES模块专门为默认导出预留的关键字,它允许你直接导出一个值(变量、对象、函数都可以),本质上是把这个值绑定到模块的"默认"导出入口。


内容的提问来源于stack exchange,提问作者FXux

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.29 07:12:55