这里先说说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的值在外部脚本中也是不能修改的,只是属性可以被修改