首页 > web前端 > js教程 > 正文

javascript中的模块化是什么_CommonJS和ES模块有何区别?

夢幻星辰
发布: 2025-12-23 19:30:46
原创
525人浏览过
模块化是将代码拆分为独立、可复用、有明确输入输出的小单元;CommonJS 同步加载、支持运行时动态引入但导出值拷贝且不支持 tree-shaking;ESM 是官方标准,静态声明、导出引用、支持异步加载和编译期优化。

javascript中的模块化是什么_commonjs和es模块有何区别?

模块化就是把代码拆成独立、可复用、有明确输入输出的小单元,每个文件管好自己的事,不互相污染。

CommonJS 是 Node.js 早期的模块方案

它用 同步加载,靠 require() 引入,module.exports 导出。模块第一次加载后会缓存,后续再 require 直接返回缓存结果。

  • 可以在 if、函数里随时 require,运行时决定要不要加载
  • 导出的是值的拷贝,改了原始值,已导入的地方看不到变化
  • 路径可以是变量或拼接字符串,比如 require('./' + name)
  • 不支持编译期优化,像 tree-shaking 这类静态分析做不了

ES 模块(ESM)是 JavaScript 官方标准

它用 静态声明,靠 importexport,必须写在文件顶层,不能放在条件或函数里。

  • 浏览器和现代 Node.js 都原生支持,需加 .js 后缀(如 import './util.js'
  • 导出的是值的引用,原始值变了,所有导入处都能看到更新
  • 依赖关系在代码运行前就确定了,能做 tree-shaking、自动代码分割等优化
  • 支持异步加载import('./module.js') 返回 Promise,适合懒加载

实际开发中怎么选

新项目统一用 ESM —— 语法更清晰、工具链支持好、是语言标准。Node.js 从 v14 开始稳定支持 ESM,只需加 "type": "module" 或用 .mjs 后缀。

PHP轻论坛
PHP轻论坛

简介PHP轻论坛是一个简单易用的PHP论坛程序,适合小型社区和个人网站使用。v3.0版本是完全重构的版本,解决了之前版本中的所有已知问题,特别是MySQL保留字冲突问题。主要特点• 简单易用:简洁的界面,易于安装和使用• 响应式设计:适配各种设备,包括手机和平板• 安全可靠:避免使用MySQL保留字,防止SQL注入• 功能完善:支持分类、主题、回复、用户管理等基本功能• 易于扩展:模块化设计,便于

PHP轻论坛 26
查看详情 PHP轻论坛

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

  • 混用要注意:CommonJS 里 require 一个 ESM 文件会报错;ESM 中也不能直接 import CommonJS 的 module.exports 对象(但 Node.js 有兼容层,通常能转成命名空间对象)
  • 动态导入统一用 import(),它在两种环境都可用,返回 Promise
  • 打包工具如 Vite、Webpack 默认按 ESM 处理,遇到 require 会尝试兼容,但建议逐步迁出

基本上就这些。

以上就是javascript中的模块化是什么_CommonJS和ES模块有何区别?的详细内容,更多请关注php中文网其它相关文章!

java速学教程(入门到精通)
java速学教程(入门到精通)

java怎么学习?java怎么入门?java在哪学?java怎么学才快?不用担心,这里为大家提供了java速学教程(入门到精通),有需要的小伙伴保存下载就能学习啦!

下载
来源:php中文网
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
最新问题
开源免费商场系统广告
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

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