相同点
都可以作为模块来使用。划分作用域,不同模块(不同作用域)的相同相同变量不冲突。
不使用模块的情况
没有使用模块,全局作用域下存在同名变量,出现命名冲突
使用esmodule
只要使用了import/export 文件就会变成一个模块,全局作用域下没有同名变量,不会出现命名冲突。
使用namespace
全局作用域下没有同名变量,不会出现命名冲突
模块(esmodule)与命名空间(namesapce)不同点
- 前者一个文件就是一个模块;后者一个文件可以有多个namespace(模块),不同的文件可以有同名的namespace(模块)。
- 查找方式不同:esmodule按路径查找,而namespace直接在全局下找。namespace始终编译到全局。
namespace暴露在全局