export和export defult的区别

文章详细阐述了ES6的import和require在加载时机、对象修改、性能优化以及代码分割方面的差异。import支持静态加载和tree-shaking,而require则是运行时加载。export和exportdefault用于模块导出,exportdefault限制只有一个默认导出,且其值不可更改,但其属性可修改。
摘要由CSDN通过智能技术生成

这里先说说require和import的区别吧

1.import在代码编译时被加载,所以必须放在文件开头,require在代码运行时被加载,所以require理论上可以运用在代码的任何地方,所以import性能更好。
2.import引入的对象被修改时,源对象也会被修改,相当于浅拷贝,require引入的对象被修改时,源对象不会被修改,官网称值拷贝,我们可以理解为深拷贝。
3.import有利于tree-shaking(移除JavaScript上下文中未引用的代码),require对tree-shaking不友好。
4.import会触发代码分割(把代码分离到不同的bundle中,然后可以按需加载或者并行加载这些文件),require不会触发。
5.import是es6的一个语法标准,如果要兼容浏览器的话必须转化成es5的语法,require 是 AMD规范引入方式。

目前所有的引擎都还没有实现import,import最终都会被转码为require,在webpack打包中,import和require都会变为_webpack_require_。

export和export default

  • 他们都可以导出常量,函数,文件,模块等。
  • 你可以在其他模块或者文件中通过import +名称 的方式,将其导入,以便可以对其使用。
  • 在一个文件或者模块中,export ,import可以有很多,export deault只能有一个。
  • 通过export导出时,在导入时需要加{},export default则不需要。

export或export default一个对象时,对象的属性在外部脚本中都是可以修改的。
export default的值在外部脚本中也是不能修改的,只是属性可以被修改

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值