默认导入index.js文件

时间:2020-10-03 17:37:19

标签: node.js vue.js

嗨,我在.js文件中(使用Webpack的vue.js项目中)具有以下ES6语句

import my_value from 'path_to_folder1/folder2';  //after `from` keyword, I don't include index.js.

以上语句将在前两个步骤中运行:

步骤1) webpack编译ES6导入语法以要求语法,

例如:

import my_value from 'path_to_folder1/folder2';

将被翻译为:

var my_value = require('path_to_folder1/folder2'); 

第2步) node.js将在folder2文件夹中搜索并加载(默认情况下)index.js文件。

第3步) 是node.js的一项功能,用于默认搜索并在require语句中从文件夹中加载index.js文件?有任何官方文件吗?

您能告诉我前两个步骤是否正确吗?

然后,我想为第3步提供答案。

这很重要。谢谢

1 个答案:

答案 0 :(得分:0)

Node.js将首先检查require的参数是目录还是文件。 如果:

  • 这是一个目录->加载index.js

  • 如果是文件:

    • 如果指定的文件存在->加载文件
    • 如果指定的文件不存在,请向其添加扩展名.js并尝试加载。通常,这是您实际上想使用的方法。由于您可能有一些TS文件,然后将它们编译为js ...,编译器会为您解决这个问题

现在,不,这不一定是编译导入的方式。这取决于编译器的配置。但是,默认情况下,您正在寻找模块的默认导出。因此,默认情况下,如果您的导入看起来像这样:

import my_value from 'path_to_folder1/folder2';

然后它实际上被解释为

const {default: my_value} = require('path_to_folder1/folder2');

现在,如果您的path_to_folder1/folder2/index.js指定了export default blabla,那么您已经准备就绪。如果不是这样,则取决于您的编译器的配置,您可能会遇到错误。如果您的编译器允许默认导入,而您的模块没有任何默认导出,它将导入包含所有导出的对象。

相关问题