如何正确使用 index.js 文件

2025-06-05

如何正确使用 index.js 文件

Index.js 文件与 index.html 文件类似,如果没有提供任何说明,则目录指向其索引文件。索引文件与 JavaScript 或 TypeScript 等价。
为了方便起见,我们将index.js在本文中使用它作为示例。
这意味着,如果你有一个目录

📦demo  
 ┣ 📜file1.js  
 ┣ 📜file2.js  
 ┣ 📜file3.js  
 ┗ 📜index.js
Enter fullscreen mode Exit fullscreen mode

如果你指向demo目录,它将指向demo/index.js

看起来很简洁,
如果使用得当,它可以帮助保持代码库清洁,
但如果在任何地方都随意使用,它将损害可读性和可访问性。

“好事太多也可能变成坏事。”
——威廉·达德利

这些是 index.js 文件的一些常见错误实现及其解决方案,

  • #### 如果你的目录只有索引文件
 ┣ 📂demo  
 ┃ ┗ 📜index.js  
 ┣ 📂demo1  
 ┃ ┗ 📜index.js  
 ┣ 📂demo2  
 ┃ ┗ 📜index.js  
 ┗ 📂demo3  
 ┃ ┗ 📜index.js
Enter fullscreen mode Exit fullscreen mode

演示/index.js

export const num = 100;
Enter fullscreen mode Exit fullscreen mode

您想通过指向演示目录来访问 index.js 文件的内容,这将起作用。

import num from './demo';
Enter fullscreen mode Exit fullscreen mode

这是 index.js 文件最糟糕的实现。
它有什么问题?

  1. 多个同名文件
  2. 通过查看 index.js 文件的名称,很难说出哪个 index.js 文件做什么
  3. 无法直接访问文件,因为demo它是一个目录,demo/index.js并且demo指向同一个目标,人们可能会在整个项目中搜索演示文件,但它不会显示,因为逻辑在demo/index.js文件中

如果文件夹只包含一个文件,则无需使用目录,直接使用文件即可。
这种情况的解决方案是:

 ┣ 📜demo.js  
 ┣ 📜demo1.js  
 ┣ 📜demo2.js  
 ┗ 📜demo3.js
Enter fullscreen mode Exit fullscreen mode

演示.js

export const num = 100;
Enter fullscreen mode Exit fullscreen mode

上述导入仍然有效,现在您可以直接搜索文件。

  • #### 在索引文件中写入组件是另一个不好的用例,
📦demo  
 ┣ 📜file1.js  
 ┣ 📜file2.js  
 ┣ 📜file3.js  
 ┗ 📜index.js
Enter fullscreen mode Exit fullscreen mode

演示/index.js

import React from 'react';

const SomeComponent = () => {
  return <div>some Component</div>;
};

export default SomeComponent;
Enter fullscreen mode Exit fullscreen mode

现在,由于该组件是默认导出的,我可以用任何名称导入该组件,在这个组件中我将其导入为Demo

现在,我可以像这样导入组件。

import Demo from './demo';
Enter fullscreen mode Exit fullscreen mode

Demo 组件是一个有效的组件,但是如果我在我的项目中搜索 Demo 组件,我将找不到任何组件,如果我搜索演示文件,也将找不到任何演示文件。

这个问题可以通过仅使用 index.js 文件导出来解决。
例如:

📦demo  
 ┣ 📜Demo.jsx  
 ┣ 📜file1.js  
 ┣ 📜file2.js  
 ┣ 📜file3.js  
 ┗ 📜index.js
Enter fullscreen mode Exit fullscreen mode

演示/Demo.jsx

import React from 'react';

const SomeComponent = () => {
  return <div>some Component</div>;
};

export default SomeComponent;
Enter fullscreen mode Exit fullscreen mode

PS:这仅用于示例目的,请保持文件名和组件名称相同以避免混淆。

现在上述导入仍然有效

import Demo from './demo';
Enter fullscreen mode Exit fullscreen mode

在这种情况下,按组件名称搜索仍然不起作用,但我们至少可以通过文件名搜索。

您可以使用 index.js 文件进行导出和默认导出。

📦demo  
 ┣ 📜Demo.jsx  
 ┣ 📜file1.js  
 ┣ 📜file2.js  
 ┣ 📜file3.js  
 ┗ 📜index.js
Enter fullscreen mode Exit fullscreen mode

演示/file1.js

export const str1 = 'file1';
Enter fullscreen mode Exit fullscreen mode

demo/file2.js

export const str2 = 'file2';
Enter fullscreen mode Exit fullscreen mode

演示/file3.js

export const str3 = 'file3';
Enter fullscreen mode Exit fullscreen mode

演示/Demo.js

import React from 'react';

const SomeComponent = () => {
  return <div>some Component</div>;
};

export default SomeComponent;
Enter fullscreen mode Exit fullscreen mode

最后是 index.js 文件

index.js

export { str1 } from './file1';
export { str2 } from './file2';
export { str3 as customExport } from './file3';
export { default } from './Demo';
Enter fullscreen mode Exit fullscreen mode

前三个示例正在执行导出,
第三个示例在导出时为导出设置别名,
第四个示例将默认导出导出为 Demo 组件,这也是此 index.js 文件的默认值

您还可以将其他文件的默认导出导出为普通文件,如下所示

export { default as NormalExport } from './Demo';
Enter fullscreen mode Exit fullscreen mode

您也可以像这样进行默认导出

export default str = 'inexFileName';
Enter fullscreen mode Exit fullscreen mode

'./demo'现在我们可以从位置导入所有这些出口

import str, { str1, str2, customExport, NormalExport } from './demo';
Enter fullscreen mode Exit fullscreen mode
文章来源:https://dev.to/fahadaminshovon/-how-to-use-indexjs-fileproperly-302f
PREV
3个月编程面试训练营 三个月——真的吗?第0周——你应该使用哪种编程语言?第1周——复习你最喜欢的编程语言的基础知识 第2周和第3周——数据结构和算法 第4周和第5周——练习简单的数据结构和算法问题 第6、7、8周——练习更复杂的编程面试问题 第9周和第10周——系统设计面试 第11周——操作系统和并发概念:第12周——面向对象设计面试:文化契合度面试 结论 资源
NEXT
如何创建自定义文件上传按钮