import和require的区别

import是ES6标准中的模块化解决方案,require是node中遵循CommonJS规范的模块化解决方案。

后者支持动态引入,也就是require(${path}/xx.js),前者目前不支持,但是已有提案。

前者是关键词,后者不是。

前者是编译时加载,必须放在模块顶部,在性能上比后者好一些;后者是运行时加载,理论来说放在哪里都可以。

前者采用的是实时绑定方式,即导入和导出的值都指向同一个内存地址,所以导入的值会随着导出值变化;而后者在导出时是指拷贝,就算导出的值变化了,导入的值也不会变化,如果想要更新导入的值,就要重新导入。

前者会编译成require/exports来执行。

相关推荐
文滨9 分钟前
10分钟搞定!Mac 配置 GitHub SSH 完全指南(小白也能看懂)
前端·macos·ssh·github
fenglllle9 分钟前
JDK8升级JDK17使用CompletableFuture在线程中classloader的变化
java·开发语言·jvm
froginwe1110 分钟前
Scala 正则表达式
开发语言
时寒的笔记11 分钟前
11期_js逆向核心案例解析(sichuan&某理财网)
开发语言·javascript·ecmascript
2601_9584925512 分钟前
7 WordPress Tools I Trust for Building a High-Traffic Magazine Site
前端·word
csbysj202014 分钟前
PHP 文件:深入解析与最佳实践
开发语言
JAVA面经实录91718 分钟前
Java+SpringAI企业级实战项目完整官方文档(生产终版)
java·开发语言·spring·ai编程
梵得儿SHI18 分钟前
Java IO 流进阶:Buffer 与 Channel 核心概念解析及与传统 IO 的本质区别
java·开发语言·高并发·nio·channel·buffer·提升io效率
j_xxx404_21 分钟前
Linux线程:从内存分页机制(Page Table/TLB/Page Fault)彻底读懂 Linux 线程本质
linux·运维·服务器·开发语言·c++·人工智能·ai
IT_陈寒23 分钟前
Java的finally块竟然不是你想的那个finally!
前端·人工智能·后端