你提到的这种 **使用 `export` / `import` 实现模块化编程** 的方式,在 **JavaScript 中叫做模块系统(module system)**,它在 Java 和 Python 中也有对应的等价写法。
下面我们来类比一下这段 JS 代码在 **Java 和 Python** 中的等价写法。
---
## 🟡 JavaScript 模块化代码
```js
// file.js
export const MY_VALUE = 10;
export function add(num1, num2) {
return num1 + num2;
}
// file.spec.js
import { MY_VALUE, add } from './file';
add(MY_VALUE, 5); // => 15
```
---
## 🔵 Java 中的等价写法
```java
// File.java
public class File {
public static final int MY_VALUE = 10;
public static int add(int num1, int num2) {
return num1 + num2;
}
}
```
```java
// FileTest.java
public class FileTest {
public static void main(String[] args) {
int result = File.add(File.MY_VALUE, 5);
System.out.println(result); // 输出 15
}
}
```
### ✅ 对应关系说明
- `export` 相当于 `public`(可在其他类访问)
- `const` 相当于 `final`(不可变)
- JS 的模块文件 `file.js` 相当于 Java 的类文件 `File.java`
---
## 🟢 Python 中的等价写法
```python
# file.py
MY_VALUE = 10
def add(num1, num2):
return num1 + num2
```
```python
# file_test.py
from file import MY_VALUE, add
result = add(MY_VALUE, 5)
print(result) # 输出 15
```
### ✅ 对应关系说明
- `export` 是显式写出来的,而 Python 默认所有定义的函数和变量都可以被导入(相当于默认 export)
- `import` 使用 `from... import...` 或 `import file`
---
## 🧠 总结类比表
|概念|JavaScript|Java|Python|
|---|---|---|---|
|定义常量|`export const MY_VALUE = 10`|`public static final int MY_VALUE = 10`|`MY_VALUE = 10`(约定为常量)|
|定义函数|`export function add()`|`public static int add()`|`def add()`|
|导出|`export`|`public`(类或方法)|默认导出(可用 `__all__` 限制)|
|导入|`import { a } from './file'`|`import otherClass.method()` 或 `ClassName.METHOD`|`from file import a` 或 `import file`|
---
如果你想深入学习 JavaScript 模块系统的实现方式(比如 ESM vs CommonJS),也可以继续聊~或者我们可以对比模块的运行机制。需要我继续吗?