node.js学习日记:使用import引入文件

04/10 11:33
阅读数 58

我在刚学习nodejs的时候,大部分都是看着API写的代码,在引入模块的时候都是用的require()

我一直都是用这个方法加载模块,直到遇到ES6模块的时候,我就不知道该怎么办了,使用import引入的时候竟然报错了:

于是好好研究了一番阮一峰大佬的文章才明白,原来JavaScript的模块竟然有两种格式,一种是ES6模块,简称ESM;另外还有一种是node.js专用的CommonJS模块,而两种模块是互不兼容的。

一、两种模块的差异

ES6 模块和 CommonJS 模块有很大的差异。 语法上面,CommonJS 模块使用require()加载和module.exports输出,ES6 模块使用import和export。 用法上面,require()是同步加载,而后面的代码必须等待这个命令执行完,才会执行。import命令则是异步加载,或者更准确地说,ES6 模块有一个独立的静态解析阶段,依赖关系的分析是在那个阶段完成的,最底层的模块第一个执行。

二、Node.js 的区分

Node.js 要求 ES6 模块采用.mjs后缀文件名。也就是说,只要脚本文件里面使用import或者export命令,那么就必须采用.mjs后缀名。Node.js 遇到.mjs文件,就认为它是 ES6 模块,默认启用严格模式,不必在每个模块文件顶部指定"use strict"。

如果不希望将后缀名改成.mjs,可以在项目的package.json文件中,指定type字段为module。

一旦设置了以后,该目录里面的 JS 脚本,就被解释用 ES6 模块。

展开阅读全文
打赏
0
0 收藏
分享
加载中
打赏
0 评论
0 收藏
0
分享
返回顶部
顶部