module.md 2.3 KB
Newer Older
Q
qiang 已提交
1
# 模块
D
DCloud_LXH 已提交
2 3 4

uts 支持将程序拆分为可按需导入的单独模块,模块中可以导入和导出各种类型的变量,如函数,字符串,数字,布尔值,类等。

Q
qiang 已提交
5
## 导出
D
DCloud_LXH 已提交
6 7 8 9 10 11 12 13 14 15 16 17 18 19

export 语句可以将一个文件中的函数,类等导出。比如:

```ts
export const name: string = "square";
export function draw() {}
export default class Canvas {} // default 关键词支持默认导出
```

- 导出的函数声明与类声明必须要有名称。
- export 命令可以出现在模块的任何位置,但必需处于模块顶层。
- 在一个文件中,export、import 可以有多个,export default 仅有一个。
- 通过 export 方式导出,在导入时要加{ },export default 则不需要。

Q
qiang 已提交
20
## 导入
D
DCloud_LXH 已提交
21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54

import 语句可以将另一个文件中的函数,类等导入到当前文件。比如:

```ts
import { name as name1, draw } from "./canvas.uts" // 支持 as 语法做别名导入
import * as Utils from "./utils.uts" // Test 包含所有 export 的导出
import Canvas from "./canvas.uts" // 对应 export default 的导出
```

示例

```ts
/*-----export [test.js]-----*/
export const name = 'test'
export function test(){
    console.log('test')
}
export default class Test{
    test(){
        console.log('Test.test')
    }
}
```

```ts
import { name } from './test.uts'
import * as testModule from './test.uts'
import Test from './test.uts'
console.log(name)
testModule.test()
const test = new Test()
test.test()
```

Q
qiang 已提交
55 56 57 58 59 60 61 62 63 64
### 指定别名

使用 `as` 关键字可以为导入的值指定别名

```ts
import { name as testName } from './test.uts'
import * as testModule from './test.uts'
```

## 数据共享和复用
D
DCloud_LXH 已提交
65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92

可以使用 export 语句将变量或函数导出,以便其他模块可以访问和使用它们。导出的变量可以在模块内共享,并在其他模块中导入和复用。

示例

```ts
/*-----export [global.uts]-----*/
// 导出变量
export let count = 1
// 导出函数
export function addCount() {
    count++
}
```

```ts
// module1.uts
import { count, addCount } from './global.uts'
console.log(count) // 1
addCount()
console.log(count) // 2

// module2.uts
import { count, addCount } from './global.uts'
console.log(count) // 2
```

- 如果只想在不同模块中复用变量而不共享其引用,可以使用函数包装变量来创建独立的作用域。