0

0

什么是javascript模块化开发【教程】

夢幻星辰

夢幻星辰

发布时间:2026-02-02 17:30:39

|

544人浏览过

|

来源于php中文网

原创

JavaScript模块化是解决代码混乱的工程实践,强制功能分文件、限定暴露接口;用export/import而非全局变量可避免覆盖、依赖不清和tree-shaking失效;命名导出需解构导入,默认导出可重命名但每文件仅一个;浏览器ESM需type="module"、带后缀路径、无别名;Node.js中CommonJS与ESM不互通,需注意exports字段和__dirname替代方案;模块边界应按场景拆分而非盲目细化。

什么是javascript模块化开发【教程】

JavaScript模块化开发不是一种新语法糖,而是解决“代码越写越乱、改一处崩一片”的工程实践——它强制你把功能切分成有边界的文件,每个文件只暴露别人真正需要的东西。

为什么必须用 exportimport,而不是直接挂全局变量?

window.utils = {...} 看似简单,但会立刻引发三类问题:
• 其他脚本可能意外覆盖同名变量,比如两个库都定义了 log
• 无法知道谁依赖了谁,重构时不敢删函数;
• 打包工具没法做 tree-shaking(自动剔除没用的代码),最终 JS 包体积虚胖。

export 的两种写法,选错就埋坑

命名导出和默认导出行为完全不同,混用极易导致导入失败:

  • 命名导出(适合导出多个工具):export const add = (a, b) => a + b; → 必须用 import { add } from './math.js',名字错一个就 undefined
  • 默认导出(适合导出模块主入口):export default class ApiClient { ... } → 可用任意名导入:import Client from './api.js',但一个文件只能有一个 export default
  • 禁止这样写:export default function(){}; export const PI = 3.14; 虽然合法,但会让团队成员不确定该用哪种方式导入,TypeScript 类型推断也会变弱

浏览器里跑 import,三个硬性条件缺一不可

不是写了 import 就能运行,浏览器原生 ESM 有严格限制:

去日租网站系统
去日租网站系统

去日租程序是一款具有强大的功能的基于.NET+SQL2000+AJAX构架的房屋出租管理系统。 日租网站管理系统,采用ASP.NET2.0语言开发,它集成租房模块、文章模块、订单模块、邮箱短信模块、用户模板、SEO优化模块、房间模块、支付模块等多项强大功能。系统有多年经验的高级工程师采用三层架构开发,页面代码全部采用DIV+CSS,完全符合SEO标准,有利于搜索引擎关键排名优化。日租网站

下载
  • :HTML 中引入入口脚本时必须加这个属性,否则报 Cannot use import statement outside a module
  • 路径必须带后缀:import { foo } from './utils.js'(不能写成 ./utils
  • 不能用相对路径别名:import { bar } from '@lib/config' 在浏览器中直接报 404,需靠 Vite/Webpack 等工具转译

Node.js 中模块系统更复杂,别想当然混用

Node.js 同时支持 CommonJSrequire/module.exports)和 ESMimport/export),但二者不完全互通:

立即学习Java免费学习笔记(深入)”;

  • type: "module" 的项目里,require('./x') 直接报错;反过来,在 CommonJS 里 import 也不行
  • __dirname__filename 在 ESM 中不存在,要用 import.meta.url 配合 fileURLToPath()
  • 第三方包若同时提供 exports 字段(如 "exports": { ".": { "import": "./dist/index.mjs" } }),Node.js 才能正确选择 ESM 版本;否则可能加载到 CommonJS 版本导致 default 导入为 undefined
实际项目中,最常被忽略的是模块边界意识——不是“能拆就拆”,而是“谁该知道什么”。一个 utils 模块导出 20 个函数,远不如按场景拆成 dateUtils.jsstringUtils.js 并各自控制导出粒度来得可靠。

热门AI工具

更多
DeepSeek
DeepSeek

幻方量化公司旗下的开源大模型平台

豆包大模型
豆包大模型

字节跳动自主研发的一系列大型语言模型

通义千问
通义千问

阿里巴巴推出的全能AI助手

腾讯元宝
腾讯元宝

腾讯混元平台推出的AI助手

文心一言
文心一言

文心一言是百度开发的AI聊天机器人,通过对话可以生成各种形式的内容。

讯飞写作
讯飞写作

基于讯飞星火大模型的AI写作工具,可以快速生成新闻稿件、品宣文案、工作总结、心得体会等各种文文稿

即梦AI
即梦AI

一站式AI创作平台,免费AI图片和视频生成。

ChatGPT
ChatGPT

最最强大的AI聊天机器人程序,ChatGPT不单是聊天机器人,还能进行撰写邮件、视频脚本、文案、翻译、代码等任务。

相关专题

更多
require的用法
require的用法

require的用法有引入模块、导入类或方法、执行特定任务。想了解更多require的相关内容,可以阅读本专题下面的文章。

467

2023.11.27

c语言const用法
c语言const用法

const是关键字,可以用于声明常量、函数参数中的const修饰符、const修饰函数返回值、const修饰指针。详细介绍:1、声明常量,const关键字可用于声明常量,常量的值在程序运行期间不可修改,常量可以是基本数据类型,如整数、浮点数、字符等,也可是自定义的数据类型;2、函数参数中的const修饰符,const关键字可用于函数的参数中,表示该参数在函数内部不可修改等等。

532

2023.09.20

全局变量怎么定义
全局变量怎么定义

本专题整合了全局变量相关内容,阅读专题下面的文章了解更多详细内容。

82

2025.09.18

python 全局变量
python 全局变量

本专题整合了python中全局变量定义相关教程,阅读专题下面的文章了解更多详细内容。

96

2025.09.18

硬盘接口类型介绍
硬盘接口类型介绍

硬盘接口类型有IDE、SATA、SCSI、Fibre Channel、USB、eSATA、mSATA、PCIe等等。详细介绍:1、IDE接口是一种并行接口,主要用于连接硬盘和光驱等设备,它主要有两种类型:ATA和ATAPI,IDE接口已经逐渐被SATA接口;2、SATA接口是一种串行接口,相较于IDE接口,它具有更高的传输速度、更低的功耗和更小的体积;3、SCSI接口等等。

1207

2023.10.19

PHP接口编写教程
PHP接口编写教程

本专题整合了PHP接口编写教程,阅读专题下面的文章了解更多详细内容。

235

2025.10.17

php8.4实现接口限流的教程
php8.4实现接口限流的教程

PHP8.4本身不内置限流功能,需借助Redis(令牌桶)或Swoole(漏桶)实现;文件锁因I/O瓶颈、无跨机共享、秒级精度等缺陷不适用高并发场景。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

2181

2025.12.29

java接口相关教程
java接口相关教程

本专题整合了java接口相关内容,阅读专题下面的文章了解更多详细内容。

29

2026.01.19

AO3官网入口与中文阅读设置 AO3网页版使用与访问
AO3官网入口与中文阅读设置 AO3网页版使用与访问

本专题围绕 Archive of Our Own(AO3)官网入口展开,系统整理 AO3 最新可用官网地址、网页版访问方式、正确打开链接的方法,并详细讲解 AO3 中文界面设置、阅读语言切换及基础使用流程,帮助用户稳定访问 AO3 官网,高效完成中文阅读与作品浏览。

53

2026.02.02

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
React 教程
React 教程

共58课时 | 4.5万人学习

TypeScript 教程
TypeScript 教程

共19课时 | 2.6万人学习

Bootstrap 5教程
Bootstrap 5教程

共46课时 | 3.2万人学习

关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号