Freigeben über


Importieren in Bicep

In diesem Artikel wird die Syntax beschrieben, mit der Sie freigegebene Funktionen und Namespaces für Bicep-Erweiterungen exportieren und importieren. Durch die Verwendung von Importen zur Kompilierzeit wird automatisch die Codegenerierung mit der Sprachversion 2.0 aktiviert.

Exportieren von Variablen, Typen und Funktionen

Der @export()-Decorator gibt an, dass eine andere Datei eine bestimmte Anweisung importieren kann. Dieses Decorator-Element ist nur für type-, var- und func-Anweisungen gültig. Variable Anweisungen, die mit @export() gekennzeichnet sind, müssen Kompilierzeitkonstanten sein.

Die Syntax für den Export von Funktionen für die Verwendung in anderen Bicep-Dateien ist:

@export()
<statement_to_export>

Importieren von Variablen, Typen und Funktionen

Die Syntax für den Import von Funktionen aus einer anderen Bicep-Datei ist:

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

Mit optionalem Aliasing zum Umbenennen von Symbolen:

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

Verwenden der Syntax für den Wildcardimport:

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

Sie können die vorhergehenden Syntaxen beliebig kombinieren. Um mit der Platzhaltersyntax auf importierte Symbole zuzugreifen, müssen Sie den .-Operator verwenden: <alias_name>.<exported_symbol>.

Nur Anweisungen, die in die verwiesene Datei exportiert wurden, sind für den Import verfügbar.

Sie können Funktionen, die aus einer anderen Datei importiert wurden, ohne Einschränkungen verwenden. Sie können beispielsweise importierte Variablen an einer beliebigen Stelle verwenden, an der eine in der Datei deklarierte Variable normalerweise gültig wäre.

Beispiel

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

Importieren von Namespaces und Erweiterungen (Vorschau)

Hinweis

Sie müssen das experimentelle Feature extensibility über die Bicep-Konfigurationsdatei aktivieren, damit Sie diese Funktion verwenden können.

Die Syntax für das Importieren von Namespaces lautet:

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

Sowohl az als auch sys sind integrierte Bicep-Namespaces. Sie werden standardmäßig importiert. Weitere Informationen zu den Datentypen und den in az und sys definierten Funktionen finden Sie unter Datentypen und Bicep-Funktionen.

Die Syntax für das Importieren von Bicep-Erweiterungen lautet:

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

Die Syntax für das Importieren von Bicep-Erweiterungen, die konfiguriert werden müssen, lautet:

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

Ein Beispiel finden Sie unter Bicep Kubernetes-Erweiterung.