nodejs对import的支持

概述

随着ES6/ES7语法越来越普及,更多方便的语法特性被众人所熟知,其中就有import/export语法。

操作流程

在nodejs6的版本,就可以使用import/export语法了。

// file1.mjs
export default () => {
    console.log('hello world');
};

// main.mjs
ipmort fun from './file1'
fun();
// hello world

最后在执行脚本的时候,需要使用--experimental-modules参数。这里可能是对import/export功能的一个测试支持。

在nodejs12版本里,对import/export的支持做了明确要求:

  1. package.json文件中,必须写明{"type":"module"}
  2. 模块的引用必须包含扩展名
import fun from './file1.mjs'
  1. 需要使用--experimental-modules参数执行node命令
    关于nodejs12的介绍还可以参考网上的文章

在nodejs13版本中,去掉了--experimental-modules参数

以下引用一段stackoverflow里回复的内容:

Since Node 13, you can use either the .mjs extension, or set “type”: “module” in your package.json. You don’t need to use the --experimental-modules flag.
Since Node 12, you can use either the .mjs extension, or set “type”: “module” in your package.json. And you need to run node with the --experimental-modules flag.
In Node 9, it is enabled behind a flag, and uses the .mjs extension.
node --experimental-modules my-app.mjs

其实不管是ES module 还是 CommonJS Module都是一种模块加载方法,短时间内必然会同时存在,这点从nodejs API官网的介绍中就可以看到。

参考链接

stackoverflow
nodejs API