JS中ESModule和commonjs的使用区别是什么


今天小编给大家分享一下JS中ESModule和commonjs的使用区别是什么的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。named exports: 命名导出,每次可以导出一个或者多个。default exports: 默认导出,每次只能存在一个。以上两者可以混合导出:更多示例可以直接去看mdn算是一个导入再导出的一个语法糖吧。然而这种语法是会报错的:正确的语法应该是:我猜是因为export 本身支持的export xxx这种语法必须是要导出一个对象,然而import xxx可能是任意类型,两者冲突了,所以从编译层面就不让这种语法生效会更好。嵌入式脚本不可以使用export。import all exports:import * as allVar,所有导出内容,包含命名导出及默认导出。allVar会是一个对象,默认导出会作为allVar的key名为default对应的值。import named exports:import {var1, var2},引入命名导出的部分。没找到,对应的值就为undefined。个人觉得可以看做是”import all exports”的解构语法。import default exports:import defaultVar,引入默认导出的部分。import side effects:import "xxx./js",仅运行这个js,可能是为了获取其副作用。一个之前老记错的case嵌入式脚本引入modules时,需要在script上增加 type=”module”。live bindings:通过export在mdn上的解释,export导出的是live bindings,再根据其他文章综合判断,应该是引用的意思。即export导出的是引用。模块内的值更新了之后,所有使用export导出值的地方都能使用最新值。read-only:通过import在mdn上的解释,import使用的是通过export导出的不可修改的引用strict-mode:被引入的模块都会以严格模式运行。静态引入、动态引入import x from这种语法有syntactic rigid,需要编译时置于顶部且无法做到动态引入加载。如果需要动态引入,则需要import ()语法。有趣的是,在mdn上,前者分类到了Statements & declarations, 后者分类到了Expressions & operators。这俩是根据什么分类的呢?示例:在 Node.js 模块系统中,每个文件都被视为独立的模块。模块导入导出实际是由n免费云主机域名odejs的模块封装器实现,通过为module.exports分配新的值来实现导出具体内容。module.exports有个简写变量exports,其实就是个引用复制。exports作用域只限于模块文件内部。 原理类似于:注意:nodejs实际导出的是module.exports,以下几种经典case单独看一下:case1:case2:通过require语法引入:原理伪代码:语法:exportsmodule.exportsrequireNode.js模块系统关键字。exportexport defaultimport则是ES6模块系统的关键字:原理:exportsmodule.exports导出的模块为值复制。exportexport default为引用复制。时机:ES Module静态加载是编译时确定,ES Module动态加载是运行时确定。CommonJS是运行时确定。以上就是“JS中ESModule和commonjs的使用区别是什么”这篇文章的所有内容,感谢各位的阅读!相信大家阅读完这篇文章都有很大的收获,小编每天都会为大家更新不同的知识,如果还想学习更多的知识,请关注百云主机行业资讯频道。

相关推荐: php如何实现两个数组合并并且求和

今天小编给大家分享一下php如何实现两个数组合并并且求和的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。 实现方法:1、使用array_merge…

免责声明:本站发布的图片视频文字,以转载和分享为主,文章观点不代表本站立场,本站不承担相关法律责任;如果涉及侵权请联系邮箱:360163164@qq.com举报,并提供相关证据,经查实将立刻删除涉嫌侵权内容。

(0)
打赏 微信扫一扫 微信扫一扫
上一篇 03/24 21:09
下一篇 03/24 21:09

相关推荐