# 模块

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

# 导出

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

export const name: string = "square";
export function draw() {}
export default class Canvas {} // default 关键词支持默认导出
  • 导出的函数声明与类声明必须要有名称。
  • export 命令可以出现在模块的任何位置,但必需处于模块顶层。
  • 在一个文件中,export、import 可以有多个,export default 仅有一个。
  • 通过 export 方式导出,在导入时要加{ },export default 则不需要。

# 导入

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

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

示例

/*-----export [test.js]-----*/
export const name = 'test'
export function test(){
    console.log('test')
}
export default class Test{
    test(){
        console.log('Test.test')
    }
}
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()

# 指定别名

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

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

# 数据共享和复用

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

示例

/*-----export [global.uts]-----*/
// 导出变量
export let count = 1
// 导出函数
export function addCount() {
    count++
}
// 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
  • 如果只想在不同模块中复用变量而不共享其引用,可以使用函数包装变量来创建独立的作用域。