有人能帮我了解一下es6导入的工作原理吗?
据我所知,要导入节点模块,我可以写下模块的名称,而不需要提到路径ex:
import React from 'react';
然而,要导入任何自定义组件,我必须提供如下路径:
import Header from "./components/Header";
或导入scss
import "../../scss/components/Header.scss";
谁能告诉我它是如何工作的,为什么在结节模块的情况下我不需要给出路径?
发布于 2020-05-09 13:45:39
当你没有给出路径时,它会直接在node_modules
目录中查找所提供的模块。
所以,
import React from 'react';
它将查看node_modules/react
并从index.js
导入React
,因为我们没有在react
目录之后显式定义任何路径。因此,它类似于react/index.js
。如果您必须导入其他文件而不是index.js
,那么我们还需要指定文件路径。例如。module/somefile.js
。
现在,当您指定以/
、./
或../
开头的路径时,它不会查找node_modules
,但会查找目录。你可以查看我的another post,了解更多链接路径的工作原理。
在链接的帖子中,它没有描述./
路径。所以让我告诉你,它会找到当前的项目目录。例如。您的项目文件夹是app
,并且您指定了./mydir/myfile
,然后它将查找app/mydir/myfile.js
。如果必须导入javascript文件,则不需要指定.js
扩展名。它将自动匹配.js
扩展名。但是,如果您必须导入其他文件,例如。.css
,那么您还必须指定扩展名。
https://stackoverflow.com/questions/61692213
复制相似问题