Node 加载模块过程

本文介绍了Node.js加载模块的过程,包括对ES6模块和CommonJS的处理方式。Node.js要求ES6模块使用.mjs后缀,而CommonJS通过require命令加载。ES6模块不支持require,import命令则能加载.mjs文件。Node.js的import命令支持本地模块,但不支持远程模块,且会根据特定规则查找文件。此外,import命令是异步的。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Node 加载模块过程

概述

Node 对 ES6 模块的处理比较麻烦,因为它有自己的 CommonJS 模块格式,与 ES6 模块格式是不兼容的。目前的解决方案是,将两者分开,ES6 模块和 CommonJS 采用各自的加载方案。

Node 要求 ES6 模块采用.mjs 后缀文件名。也就是说,只要脚本文件里面使用 import 或者 export 命令,那么就必须采用.mjs 后缀名。require 命令不能加载.mjs 文件,会报错,只有 import 命令才可以加载.mjs 文件。反过来,.mjs 文件里面也不能使用 require 命令,必须使用 import。

目前,这项功能还在试验阶段。安装 Node v8.5.0 或以上版本,要用–experimental-modules 参数才能打开该功能。

$ node --experimental-modules my-app.mjs

为了与浏览器的 import 加载规则相同,Node 的.mjs 文件支持 URL 路径。

import ‘./foo?query=1’; // 加载 ./foo 传入参数 ?query=1
上面代码中,脚本路径带有参数?query=1,Node 会按 URL 规则解读。同一个脚本只要参数不同,就会被加载多次,并且保存成不同的缓存。由于这个原因,只要文件名中含有:、%、#、?等特殊字符,最好对这些字符进行转义。

目前,Node 的 import 命令只支持加载本地模块(file:协议),不支持加载远程模块。

如果模块名不含路径,那么 import 命令会去 node_modules 目录寻找这个模块。

import "baz"
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值