export和import的书写方式

一、导出模块(export)

1. 命名导出(Named Exports)
// math.js
export const PI = 3.14159;                   // 导出单个常量
export function sum(a, b) { return a + b; }  // 导出单个函数
export class Calculator { /* ... */ }        // 导出单个类// 或集中导出(推荐)
const PI = 3.14159;
function sum(a, b) { /* ... */ }
class Calculator { /* ... */ }export { PI, sum, Calculator };              // 统一导出多个成员
2. 默认导出(Default Export)
// config.js
const API_KEY = '123-xyz';
export default API_KEY;                       // 默认导出一个值// 或导出匿名函数/类
export default function(a, b) { return a + b; }
export default class { /* ... */ }
3. 混合导出
// utils.js
export const VERSION = '1.0';                // 命名导出
export default function log(msg) {            // 默认导出console.log(msg);
}

二、导入模块(import)

1. 导入命名导出
// 按名称导入(推荐明确导入)
import { PI, sum } from './math.js';          // 导入指定成员
console.log(PI);                              // 3.14159// 别名解决命名冲突
import { sum as add } from './math.js';       // 重命名为 add// 整体导入命名空间
import * as MathUtils from './math.js';       // 全部导入为对象
console.log(MathUtils.PI);                    // 3.14159
2. 导入默认导出
// 直接导入默认值(无需大括号)
import API_KEY from './config.js';            // 默认导出的变量
import logger from './utils.js';              // 默认导出的函数// 同时导入默认和命名
import API_KEY, { VERSION } from './utils.js'; 
3. 动态导入(按需加载)
// 异步加载模块(返回Promise)
const module = await import('./math.js');
console.log(module.PI);                       // 3.14159

三、特殊场景与技巧

1. 重新导出(Re-export)
// index.js(聚合多个模块)
export { PI } from './math.js';               // 重新导出命名成员
export { default as Logger } from './utils.js'; // 重新导出默认成员
2. 空导入(仅执行模块)
// 加载模块但不导入任何内容(用于初始化)
import './init.js';                           // 执行模块代码
3. 循环依赖处理
// a.js
import { bFunc } from './b.js';
export function aFunc() { bFunc(); }// b.js
import { aFunc } from './a.js';
export function bFunc() { aFunc(); }

四、代码示例

模块拆分示例:
// 📁 src/
//   ├── utils/
//   │   ├── math.js       (命名导出)
//   │   └── logger.js     (默认导出)
//   └── app.js            (主文件)// math.js
export const PI = 3.14159;
export function circleArea(r) { return PI * r ** 2; }// logger.js
export default function (msg) { console.log(`[LOG] ${msg}`); }// app.js
import { PI, circleArea } from './utils/math.js';
import log from './utils/logger.js';log(`Area: ${circleArea(5)}`);  // [LOG] Area: 78.53975

五、注意事项

  1. 文件扩展名
    浏览器中需明确写 .js,Node.js 中可省略(需配置 "type": "module")。

  2. 路径规则

    • 相对路径:./ 或 ../

    • 绝对路径:/src/utils/math.js

    • 第三方模块:import _ from 'lodash';

  3. 模块作用域
    每个模块拥有独立作用域,var 声明的变量不会污染全局。

  4. 兼容性
    浏览器需设置 <script type="module">,旧环境需通过 Webpack/Rollup 打包。


六、最佳实践

  • 优先命名导出:明确导出内容,便于代码维护和 Tree Shaking 优化。

  • 默认导出的场景:适用于模块主要功能单一(如 React 组件、工具类)。

  • 路径别名:通过构建工具配置 @/utils/math 简化长路径。

通过合理使用 export 和 import,可显著提升代码的可维护性和复用性。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/bicheng/81918.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

HOW - 结合 AI 进行 Tailwind 样式开发

文章目录 情况 1&#xff1a;使用 Tailwind CSS 与手写传统 CSS 的开发效率对比情况 2&#xff1a;AI Tailwind 自动生成 UI 的效率如何&#xff1f;总结 在 WHAT - Tailwind 样式方案&#xff08;不写任何自定义样式&#xff09; 中我们已经简单介绍过 Tailwind。今天主要认识…

java面试每日一背 day1

1.什么是缓存穿透 缓存穿透是指查询一个数据库中根本不存在的数据&#xff0c;导致这个查询请求绕过缓存直接访问数据库的情况。这种情况如果频繁发生&#xff0c;会对数据库造成不必要的压力。 典型特征&#xff1a; &#xff08;1&#xff09;查询的数据在数据库和缓存中都…

ngx_http_realip_module 模块概述

一、使用场景 日志记录 记录真实客户端 IP 而非反向代理的 IP&#xff0c;有助于流量分析和安全审计。访问控制 基于真实 IP 实现防火墙规则&#xff08;allow/deny&#xff09;或限流&#xff0c;而非误将上游 IP 视为客户端。GeoIP、WAF、限速等功能 模块化的上游真实 IP 支…

实战5:个性化数字艺术生成与销售

盈利思路 数字艺术销售&#xff1a; 平台销售&#xff1a;将生成的数字艺术作品上传到像OpenSea、Foundation等NFT平台进行售卖。每一件独特的艺术品可以通过NFT技术保证其唯一性&#xff0c;吸引收藏家和投资者。 定价策略&#xff1a;根据作品的复杂度、创意性以及市场需求来…

游戏引擎学习第303天:尝试分开对Y轴和Z轴进行排序

成为我们自己的代码精灵α 所以现在应该可以正常使用了。不过&#xff0c;这两周我们没办法继续处理代码里的问题&#xff0c;而之前留在代码里的那个问题依然存在&#xff0c;没有人神奇地帮我们修复&#xff0c;这让人挺无奈的。其实我们都希望有个神奇的“代码仙子”&#…

InetAddress 类详解

InetAddress 类详解 一、核心作用 封装 IP 地址&#xff1a;同时支持 IPv4 和 IPv6 地址域名解析&#xff1a;将域名转换为 IP 地址&#xff08;DNS 查询&#xff09;地址验证&#xff1a;检查网络地址的有效性无构造方法&#xff1a;通过静态工厂方法获取实例 二、核心方法 …

spring cloud alibaba-Geteway详解

spring cloud alibaba-Gateway详解 Gateway介绍 在 Spring Cloud Alibaba 生态系统中&#xff0c;Gateway 是一个非常重要的组件&#xff0c;用于构建微服务架构中的网关服务。它基于 Spring Cloud Gateway 进行扩展和优化&#xff0c;提供了更强大的功能和更好的性能。 Gat…

iOS 直播技术及优化

iOS直播技术的实现和优化涉及多个技术环节&#xff0c;需结合协议选择、编解码方案、播放器技术及性能调优等多方面。 一、核心技术实现 协议选择与传输优化 HLS&#xff08;HTTP Live Streaming&#xff09;&#xff1a;苹果官方推荐&#xff0c;基于HTTP分片传输&#xff0c…

目标检测135个前沿算法模型汇总(附源码)!

目标检测是计算机视觉核心方向之一&#xff0c;也是发论文的热门领域&#xff01; 近来不仅YOLO算法迎来了新突破&#xff0c;迭代出YOLOv12&#xff01;Mamba、大模型等新技术的发展&#xff0c;也给该领域注入了全新的力量&#xff0c;取得了诸多显著成果。比如性能飙升82.3…

期刊采编系统安装升级错误

我们以ojs系统为例&#xff1a; PHP Fatal error: Uncaught Error: Call to a member function getId() on null in /esci/data/html/classes/install/Upgrade.inc.php:1019 Stacktrace: #0 /esci/data/html/lib/pkp/classes/install/Installer.inc.php(415): Upgrade->con…

浅谈无服务器WebSocket的优势

实际上&#xff0c;一个实用的解决方案是将构建业务关键型实时平台的复杂性卸载到专门的云服务中。 完全托管的无服务器 WebSocket 解决方案为事件驱动的消息传递提供了基础结构;它使底层基础设施成为一种商品。客户端使用提供程序服务发送/接收低延迟消息&#xff0c;并专注于…

Python数据可视化高级实战之二——热力图绘制探究

目录 一、热力图的作用 二、热力图反映的信息类型 三、热力图的典型应用场景 1. 地球信息系统 (GIS) 2. 城市交通分析 3. 市场分析 4. 用户行为分析 5. 网络流量分析 6. 传染病传播分析 7. 社交媒体舆情分析 四、Python 绘制热力图的关键技术要点 1. 数据预处理 2. 颜色选择与渐…

配电网运行状态综合评估方法研究

1评估指标体系的构建 [1]冷华,童莹,李欣然,等.配电网运行状态综合评估方法研究[J].电力系统保护与控制,2017,45(01):53-59. 1.1评估范围 图1为配电系统组成示意图&#xff0c;其中A、B、C分别表示高、中、低压配电系统。高压配变(也称主变)将35kV或110kV的电压降到10kV&#…

Docker安装MinIO对象存储中间件

MinIO 是一个高性能、分布式的对象存储系统&#xff0c;兼容 Amazon S3 云存储服务协议&#xff0c;广泛应用于企业存储、大数据、机器学习和容器化应用等领域。以下是详细介绍&#xff1a; 核心特点 兼容 S3 API &#xff1a;全面兼容 Amazon S3 API&#xff0c;这意味着使用…

HTML回顾

html全称:HyperText Markup Language(超文本标记语言) 注重标签语义,而不是默认效果 规则 块级元素包括: marquee、div等 行内元素包括: span、input等 规则1:块级元素中能写:行内元素、块级元素(几乎什么都能写) 规则2:行级元素中能写:行内元素,但不能写:块…

JAVA Spring MVC+Mybatis Spring MVC的工作流程*,多表连查

目录 注解总结 将传送到客户端的数据转成json数据 **描述一下Spring MVC的工作流程** 1。属性赋值 BeanUtils.copyProperties(addUserDTO,user); 添加依赖&#xff1a; spring web、mybatis framework、mysql driver Controller和ResponseBody优化 直接改成RestControl…

H2数据库中一条insert语句到生成java对象到数据写入磁盘的完整步骤

H2 数据库将 SQL 语句转换为磁盘存储的全过程可以分为以下 8 个关键步骤&#xff0c;我们以 INSERT INTO users (id, name) VALUES (1, Alice) 为例详细说明&#xff1a; 1. SQL 解析与语法树生成 词法分析&#xff1a;拆分语句为 INSERT、INTO、users 等 Token语法分析&#…

重磅升级!Google Play商店改版上线

5 月 21 日消息&#xff0c;Android Headline 今天&#xff08;5 月 21 日&#xff09;发布博文&#xff0c;报道称在 2025 年 I/O 开发者大会上&#xff0c;谷歌宣布更新 Google Play 应用商店&#xff0c;在优化用户体验的同时&#xff0c;提升开发者收益。 本次更新中&…

Docker面试题(1)

什么是Docker 一个容器化平台 形式是容器 将你的应用程序及所有依赖项打包在一起 确保应用程序在任何环境中无缝运行 什么是Docker镜像 Docker镜像是Docker容器的源代码 用于创建容器 使用build命令创建镜像 什么是 Docker容器 包括应用程序及所有的依赖项 作为操作系统的独立进…

Ulisses Braga-Neto《模式识别和机器学习基础》

模式识别和机器学习基础 [专著] Fundamentals of pattern recognition and machine learning / (美)乌利塞斯布拉加&#xff0d;内托(Ulisses Braga-Neto)著 ; 潘巍[等]译 推荐这本书&#xff0c;作者有自己的见解&#xff0c;而且提供代码。问题是难度高&#xff0c;对于初学…