0

0

JavaScript 的模块化发展历程中,AMD、CMD、CommonJS 和 ES Module 有何根本区别?

betcha

betcha

发布时间:2025-10-11 21:50:01

|

295人浏览过

|

来源于php中文网

原创

javascript模块化历经commonjs、amd、cmd到es module的演进,解决代码组织与依赖管理问题;2. commonjs为node.js服务端设计,采用同步加载和值拷贝,适合服务器环境;3. amd由requirejs提出,支持异步加载与预定义依赖,适用于浏览器中并行加载模块;4. cmd由seajs倡导,强调依赖就近与懒执行,语法贴近commonjs但运行于浏览器;5. es module为es6标准,支持静态分析与动态绑定,具备编译时优化和跨平台能力,现已成为主流规范。整体发展体现从运行时到编译时、从服务端向全场景统一的进程,当前以esm为主,理解各阶段差异有助于维护旧项目及掌握构建工具原理。

javascript 的模块化发展历程中,amd、cmd、commonjs 和 es module 有何根本区别?

JavaScript 模块化的发展是为了应对代码组织混乱、依赖管理困难的问题。随着前端工程化演进,不同规范在不同时期解决了特定场景下的需求。

CommonJS:服务端模块的奠基者

CommonJS 是早期为 Node.js 设计的模块规范,采用同步加载方式,适合服务器环境。

  • 运行时加载:模块在执行时才被引入,require 可出现在代码任意位置
  • 值拷贝导出:module.exports 输出的是值的拷贝,后续修改不影响已导出内容
  • 同步加载:依赖本地文件系统,通过 require 同步读取模块,不适合浏览器
典型写法:const fs = require('fs'); module.exports = {};

AMD:浏览器异步加载的先行者

为解决浏览器中模块异步加载问题,RequireJS 提出了 AMD 规范。

  • 预定义依赖:define 函数第一个参数明确列出所有依赖项
  • 异步加载:依赖按需并行加载,不阻塞 UI 渲染
  • 浏览器友好:无需编译即可在浏览器运行,支持动态加载
典型写法:define(['jquery'], function($) { return {}; });

CMD:推崇就近依赖的轻量方案

SeaJS 提出的 CMD 规范更强调“按需加载、延迟执行”。

AskAI
AskAI

无代码AI模型构建器,可以快速微调GPT-3模型,创建聊天机器人

下载

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

  • 依赖就近:require 写在逻辑内部,只有执行到才加载模块
  • 懒执行:模块定义时不立即执行,等到真正 require 才运行
  • 与 CommonJS 更接近:语法风格类似,但运行在浏览器中
典型写法:define(function(require, exports, module) { const $ = require('./jquery'); });

ES Module:语言原生的标准统一者

ES6 引入的 ESM 是官方标准,现已成为现代 JS 的主流模块系统。

  • 静态分析:import 必须在顶层且不能动态使用,便于编译优化
  • 动态绑定:导入的是对原始值的只读引用,源模块更新会反映到导入方
  • 跨平台支持:Node.js 和浏览器都原生支持,逐步取代其他规范
典型写法:import React from 'react'; export default App;

基本上就这些。从 CommonJS 到 ESM,本质是从运行时到编译时、从服务端到全场景的演进。现在开发基本都用 ESM,但理解历史差异有助于维护老项目和构建工具原理。不复杂但容易忽略细节。

热门AI工具

更多
DeepSeek
DeepSeek

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

豆包大模型
豆包大模型

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

通义千问
通义千问

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

腾讯元宝
腾讯元宝

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

文心一言
文心一言

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

讯飞写作
讯飞写作

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

即梦AI
即梦AI

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

ChatGPT
ChatGPT

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

相关专题

更多
jquery插件有哪些
jquery插件有哪些

jquery插件有jQuery UI、jQuery Validate、jQuery DataTables、jQuery Slick、jQuery LazyLoad、jQuery Countdown、jQuery Lightbox、jQuery FullCalendar、jQuery Chosen和jQuery EasyUI等。本专题为大家提供jquery插件相关的文章、下载、课程内容,供大家免费下载体验。

156

2023.09.12

jquery怎么操作json
jquery怎么操作json

操作的方法有:1、“$.parseJSON(jsonString)”2、“$.getJSON(url, data, success)”;3、“$.each(obj, callback)”;4、“$.ajax()”。更多jquery怎么操作json的详细内容,可以访问本专题下面的文章。

329

2023.10.13

jquery删除元素的方法
jquery删除元素的方法

jquery可以通过.remove() 方法、 .detach() 方法、.empty() 方法、.unwrap() 方法、.replaceWith() 方法、.html('') 方法和.hide() 方法来删除元素。更多关于jquery相关的问题,详情请看本专题下面的文章。php中文网欢迎大家前来学习。

405

2023.11.10

jQuery hover()方法的使用
jQuery hover()方法的使用

hover()是jQuery中一个常用的方法,它用于绑定两个事件处理函数,这两个函数将在鼠标指针进入和离开匹配的元素时执行。想了解更多hover()的相关内容,可以阅读本专题下面的文章。

515

2023.12.04

jquery实现分页方法
jquery实现分页方法

在jQuery中实现分页可以使用插件或者自定义实现。想了解更多jquery分页的相关内容,可以阅读本专题下面的文章。

311

2023.12.06

jquery中隐藏元素是什么
jquery中隐藏元素是什么

jquery中隐藏元素是非常重要的一个概念,在使用jquery隐藏元素之前,需要先了解css样式中关于元素隐藏的属性,比如display、visibility、opacity等属性。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

126

2024.02.23

jquery中什么是高亮显示
jquery中什么是高亮显示

jquery中高亮显示是指对页面搜索关键词时进行高亮显示,其实现办法:1、先获取要高亮显示的行,获取搜索的内容,再遍历整行内容,最后添加高亮颜色;2、使用“jquery highlight”高亮插件。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

180

2024.02.23

jQuery 正则表达式相关教程
jQuery 正则表达式相关教程

本专题整合了jQuery正则表达式相关教程大全,阅读专题下面的文章了解更多详细内容。

50

2026.01.13

PHP高性能API设计与Laravel服务架构实践
PHP高性能API设计与Laravel服务架构实践

本专题围绕 PHP 在现代 Web 后端开发中的高性能实践展开,重点讲解基于 Laravel 框架构建可扩展 API 服务的核心方法。内容涵盖路由与中间件机制、服务容器与依赖注入、接口版本管理、缓存策略设计以及队列异步处理方案。同时结合高并发场景,深入分析性能瓶颈定位与优化思路,帮助开发者构建稳定、高效、易维护的 PHP 后端服务体系。

4

2026.03.04

热门下载

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

精品课程

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

共58课时 | 5.7万人学习

国外Web开发全栈课程全集
国外Web开发全栈课程全集

共12课时 | 1万人学习

React核心原理新老生命周期精讲
React核心原理新老生命周期精讲

共12课时 | 1.1万人学习

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

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