Bicep 中的导入

本文介绍用于导出和导入共享功能的语法,以及 Bicep 扩展的命名空间。 使用编译时导入时会自动启用语言版本 2.0 代码生成。

导出变量、类型和函数

@export() 修饰器指明另一个文件可以导入特定语句。 此修饰器仅对 typevarfunc 语句有效。 标记为 @export() 的变量语句必须是编译时常数。

导出在其他 Bicep 文件中使用的功能的语法如下:

@export()
<statement_to_export>

导入变量、类型和函数

从另一个 Bicep 文件导入功能的语法为:

import {<symbol_name>, <symbol_name>, ...} from '<bicep_file_name>'

使用可选别名重命名符号:

import {<symbol_name> as <alias_name>, ...} from '<bicep_file_name>'

使用通配符导入语法:

import * as <alias_name> from '<bicep_file_name>'

可以混合和匹配上述语法。 要使用通配符语法访问导入的符号,则必须使用 . 操作符:<alias_name>.<exported_symbol>

只有被引用文件中已导出的语句才能导入。

可以不受限制地使用从其他文件导入的功能。 例如,在文件中声明的变量通常有效的地方,都可以使用导入的变量。

示例

exports.bicep

@export()
type myObjectType = {
  foo: string
  bar: int
}

@export()
var myConstant = 'This is a constant value'

@export()
func sayHello(name string) string => 'Hello ${name}!'

main.bicep

import * as myImports from 'exports.bicep'
import {myObjectType, sayHello} from 'exports.bicep'

param exampleObject myObjectType = {
  foo: myImports.myConstant
  bar: 0
}

output greeting string = sayHello('Bicep user')
output exampleObject myImports.myObjectType = exampleObject

导入命名空间和扩展(预览版)

注意

必须从 Bicep 配置文件启用试验功能 extensibility,才能使用此功能。

导入命名空间的语法为:

import 'az@1.0.0'
import 'sys@1.0.0'

azsys都是 Bicep 内置命名空间。 默认情况下会导入它们。 有关azsys中定义的数据类型和函数的详细信息,请参阅数据类型Bicep 函数

导入 Bicep 扩展的语法为:

import '<extension-name>@<extension-version>'

导入需要配置的 Bicep 扩展的语法为:

import '<extension-name>@<extension-version>' with {
  <extension-properties>
}

有关示例,请参阅 Bicep Kubernetes 扩展