1-3 Node模块化的细节
模块的查找
- 绝对路径
· 根据绝对路径直接加载模块 - 相对路径.
/
或../
· 相对于当前模块
· 转换为绝对路径
· 加载模块 - 相对路径
· 两种写法相当于在node_modules
中导入模块是不需要加./ ../
的
· 检查是否有内置模块, 如fs pash
· 检查当前目录中的node_modules
· 检查上级目录中的node_modules
· 转换为绝对路径
· 加载模块 - 关于后缀
· 如果不提供后缀名自动补全
· js json node mjs - 关于文件名
· 如果仅提供目录,不提供文件名,则自动寻找该目录中的index.js
·package.json
中的main
字段
表示包的默认入口
导入或执行包时仅提供目录,则使用main
补全入口
默认值为index.js
module对象
用于导入,记录当前模块的信息
require函数
用于导出的
当执行模块或使用requir
时,会将模块放置在一个函数环境中
1-4
- 目前Node中的ES模块化仍然处于实验阶段
- 模块要不是
commonjs
,要么是ES
·commonjs
默认情况下都是commonjs
因此Node比较推荐用commonjs
· ES
文件名后缀名为.mjs
最近的package.json
中的type
的值是module
- 当使用ES模块化运行时,必须添加 –
experimental-modoules