JS中的export关键字使用场景

 更新时间:2026年01月21日 11:22:44   作者:Hi_kenyon  
export关键字在JavaScript中用于导出变量、函数或组件,使其在其他文件中可用,在Vue3中,主要有默认导出和具名导出两种方式,本文给大家介绍JS中的export关键字使用场景,感兴趣的朋友跟随小编一起看看吧

Motivation

经常在js的代码中看到export关键字,但是不懂这个关键字是什么意思,借助LLM整理了一下对这个概念的理解,这里作为笔记记录一下。

Concept

在 Vue(以及整个 JavaScript 生态)中,export 关键字的意思是 “导出”

如果把一个 .js.vue 文件比作一个独立的房间,那么默认情况下,房间里的变量、函数或组件都是被“锁”在里面的,外面的人看不见也用不了。export 关键字就像是给这个房间开了一扇窗或一扇门,允许其他文件访问这些内容。

在 Vue 3 开发中,我们主要会遇到两种导出方式:具名导出默认导出

1. 默认导出 (Export Default)

这是你在 Vue 组件(.vue 文件)中见得最多的方式。它表示:“如果你引用这个文件,我默认就给你这个东西”。

  • 案例说明: > 场景: 你写了一个名为 PostView.vue 的发帖页面。

代码:

export default {
  name: 'PostPage'
}

特点: 一个文件只能有一个 export default。就像一个家只能有一个“大门”。
导入时: 你可以随便给它起名字。import MyPostPage from './PostView.vue'

2. 具名导出 (Named Export)

当你想要在一个文件里导出多个东西(比如一堆工具函数)时,就需要给它们起名字。

  • 案例说明:

场景: 你写了一个 format.js,专门用来处理论坛的时间显示。
代码:

export const formatTime = (time) => { ... }
export const formatUserName = (name) => { ... }

特点: 一个文件可以有无数个具名导出。
导入时: 必须带上花括号,且名字要对上。import { formatTime } from './format.js'

3. 在 Vue 3<script setup>中的特殊情况

你可能会发现,在我们之前写的 PostView.vue 里,根本没有写 export 关键字,但路由依然能引用它。这是为什么?

<script setup>
// 这里没有任何 export 关键字
</script>
  • 背后的原理: 这是 Vue 3 的语法糖。当你使用 <script setup> 时,Vite 和 Vue 编译器会自动帮你把这个组件 “默认导出”
  • 编译器的工作: 它在后台默默地帮你补齐了代码,效果等同于 export default { ... }。这正是 Vue 3 让代码变简洁的高明之处。

4. 总结对比:export与import

它们是成对出现的“进出口贸易”:

动作关键字类比
提供方export仓库发货,把东西摆上货架。
使用方import商店进货,把东西买回来用。

为什么要用它?

如果没有 export,你的整个论坛项目就必须写在一个巨大的 .html 文件里(就像几万行代码挤在一起)。有了 export,你才能实现:

  1. 模块化: 把首页、发帖页、个人中心拆成不同的文件。
  2. 复用性: 写一个漂亮的按钮组件,通过 export 导出后,在全站任何地方都能 import 使用。

VUE3中的steup语法糖与export

这里这个概念需要着重提一下:上面两种写法并不是 Vue 2 和 Vue 3 的区别,而是**“传统写法”**与 “Vue 3 语法糖(<script setup>)” 的区别。

在 Vue 3 中,如果你使用全新的 <script setup> 模式,Vue 的编译器确实在后台帮你做了很多“体力活”。

  • 在 Vue 2(或 Vue 3 的传统写法)中:
    你必须写 export default { ... },明确地告诉系统:“我要把这个组件对象导出去”。
  • 在 Vue 3 <script setup> 中:
    你不需要写 export default。因为编译器知道,既然你写了这个 .vue 文件,你肯定是要用它的。它会自动帮你把整个组件包装成一个默认导出。

案例说明:
场景: 你写了一个名为 ForumCard.vue 的小卡片组件。
Vue 3 代码:

<script setup>
const title = "我是帖子标题"
// 注意:这里不需要写 export,外面也能用这个组件
</script>

真相: 虽然你没写,但 Vite 在处理这个文件时,会自动把它翻译成一个带有 export default 的 JavaScript 模块。

1. 依然需要显式export的场景

虽然组件本身不需要你手动导出了,但在 Vue 3 的某些地方,你依然需要用到 export。最典型的就是比如 Pinia(仓库)工具类文件

场景 A:全局数据仓库 (Pinia)

你要让全站都能访问“用户信息”,你必须手动导出它。

// src/stores/user.js
import { defineStore } from 'pinia'
// 你必须写这个 export,否则 main.js 和其他页面找不到这个仓库
export const useUserStore = defineStore('user', {
  state: () => ({ name: '新手小萌' })
})

场景 B:公共函数库

如果你写了一个专门处理“论坛日期格式化”的函数,你也需要导出它。

// src/utils/time.js
// 必须导出,其他页面才能 import 它
export function formatDate(date) { ... }

2. 深度对比:Vue 2 vs Vue 3 导出逻辑

特性Vue 2 (Options API)Vue 3 (<script setup>)
组件对象导出必须显式写 export default自动完成,不需要写
变量/函数导出datamethods 中返回自动暴露给模板使用,但导出给外部仍需 export
外部 JS 文件必须写 export必须写 export

3. 总结:什么时候该写export?

作为新手,要记住这条简单的准则:

  1. 如果你是在写 .vue 文件: 只要用了 <script setup>,你就不需要写 export 导出组件自己。
  2. 如果你是在写 .js 文件:(比如路由配置、数据仓库、工具函数),你依然需要写 export,否则其他文件找不到它们。

到此这篇关于JS中的export关键字的文章就介绍到这了,更多相关JS中的export关键字内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • 如何利用Three.js实现web端显示点云数据

    如何利用Three.js实现web端显示点云数据

    这篇文章主要给大家介绍了关于如何利用Three.js实现web端显示点云数据的相关资料,最近在项目中遇到需求,需要在web端显示点云数据,将我的实现步骤介绍在这里供大家参考,需要的朋友可以参考下
    2023-11-11
  • JavaScript中Object基础内部方法图

    JavaScript中Object基础内部方法图

    本篇文章通过一张详细的JavaScript中Object基础内部方法图介绍了其基本用法,需要的朋友参考下。
    2018-02-02
  • JS动态图片的实现方法完整示例

    JS动态图片的实现方法完整示例

    这篇文章主要介绍了JS动态图片的实现方法,结合完整实例形式分析了JavaScript鼠标响应与页面元素属性动态变换相关操作技巧,需要的朋友可以参考下
    2020-01-01
  • 使用JS实现抖音上很火的圣诞树的示例代码

    使用JS实现抖音上很火的圣诞树的示例代码

    圣诞节快到了,经常会在抖音上刷到圣诞树的视频,所以本文小编给大家介绍了如何使用JS实现圣诞树,文章通过代码示例给大家介绍的非常详细,感兴趣的小伙伴跟着小编一起来看看吧
    2023-12-12
  • JS 限时限次数点击按钮的实现思路

    JS 限时限次数点击按钮的实现思路

    这篇文章主要介绍了JS 限时限次数点击按钮,实现方法很简单需要用一个变量作为计数,点击一次,计数加一点击函数内判断计数变量设置定时恢复,对实例代码感兴趣的朋友一起看看吧
    2022-03-03
  • Javascript的表单验证-揭开正则表达式的面纱

    Javascript的表单验证-揭开正则表达式的面纱

    Javascript的表单验证-揭开正则表达式的面纱在本文重点介绍,感兴趣的朋友一起学习吧
    2016-03-03
  • 详解webpack自定义loader初探

    详解webpack自定义loader初探

    这篇文章主要介绍了webpack自定义loader初探,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2018-08-08
  • 关于RxJS Subject的学习笔记

    关于RxJS Subject的学习笔记

    这篇文章主要介绍了关于RxJS Subject的学习笔记,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2018-12-12
  • JavaScript在web自动化测试中的作用示例详解

    JavaScript在web自动化测试中的作用示例详解

    这篇文章主要给大家介绍了关于JavaScript在web自动化测试中的作用的相关资料,文中通过示例代码介绍的非常详细,对大家学习或者使用JavaScript具有一定的参考学习价值,需要的朋友们下面来一起学习学习吧
    2019-08-08
  • JavaScript新增的两个原始数据类型详解(Record和Tuple)

    JavaScript新增的两个原始数据类型详解(Record和Tuple)

    js中原始数据类型有Number、String、Boolean、Null、Undefined、Symbol (ES6引入的数据类型),引用的数据类型有Object,Array,Function,下面这篇文章主要给大家介绍了关于JavaScript新增两个原始数据类型(Record和Tuple)的相关资料,需要的朋友可以参考下
    2022-03-03

最新评论