[Golang] golang plantilla (plantilla) que se utiliza comúnmente gramática básica

plantilla

Al escribir las páginas dinámicas de la página web, a menudo nos convertimos en la parte invariable de la plantilla propuesta, la parte variable para generar páginas web dinámicas de la prestación de servicios de fondo del programa, golang proporcionado html / paquete de la plantilla a la representación plantilla de soporte.

variable

Cuando plantilla prestación golang puede aceptar una variable de tipo de interfaz {}, podemos leer los valores de las variables en el archivo de plantilla y hacer que la plantilla.

Hay dos tipos comunes de argumentos pasados. Es una estructura, se puede leer en el contenido del campo de la plantilla para prestar estructura. Hay un mapa [cadena] interfaz de {}, dentro de la clave de plantilla se puede utilizar para la representación.

El segundo uso general, la eficiencia puede ser débil, pero con la comodidad.

Incrustado dentro de los soportes de sintaxis plantilla de toda necesidad de añadir {{}} para marcar.

En el archivo de plantilla, el representante de la variable actual, es decir, el cuerpo acíclica. En nombre de las variables pasadas. Supongamos que definimos una estructura:

type Article struct {
    ArticleId int
    ArticleContent string
}

Entonces podemos dentro de la plantilla:

<p>{{.ArticleContent}}<span>{{.ArticleId}}</span></p>

Para capturar y procesar el contenido de las variables en la plantilla. Supongamos que el contenido de la estructura descrita anteriormente es articleId: 1 ArticleContent: "Hola", el contenido de los corresponde plantilla prestados a:

<p>hello<span>1</span></p>

No es muy simple.

Por supuesto, a veces es necesario definir una variable, por ejemplo, es necesario definir un artículo variables, mientras que se inicializa a "hola", entonces podemos escribir:

{{$article := "hello"}}

Supongamos que queremos pasar el valor del contenido asignado al objeto, se puede escribir:

{{$article := .ArticleContent}}

Por lo que sólo utilizamos {{}} $ articulo se puede llegar al contenido de esta variable.

función

golang función de plantilla es en realidad muy limitado, muchos lógica compleja no puede utilizar directamente para expresar sintaxis de la plantilla, sólo se puede utilizar la función de plantilla de derivación.

En primer lugar, paquete de la plantilla para crear una nueva plantilla cuando .Funcs forma de apoyo conjunto personalizado de funciones en la plantilla, seguimiento por parte de los archivos de plantilla dictada están soportados directamente llamar a estas funciones.

Este conjunto de funciones define como:

type FuncMap map[string]interface{}

clave es el nombre del método, el valor era una función. Aquí el número de parámetros de la función no está limitado, pero el valor de retorno para las restricciones. Hay dos opciones, una es solamente un valor de retorno, hay un dos valores de retorno, pero el segundo valor de retorno debe ser el tipo de error. Diferencia entre estas dos funciones es la segunda vez que la función se llama en la plantilla, la función de plantilla regresa asumen el segundo parámetro no está vacío, entonces la etapa de representación se interrumpe con un error.

En el archivo de plantilla, llame al método es muy simple:

{{funcname .arg1 .arg2}}

Supongamos que definimos una función:

func add(left int, right int) int

Luego, en el archivo de plantilla, por llamada:

{{add 1 2}}

Usted puede obtener:

3
juez

La plantilla también es compatible con las condiciones golang si el juez, el más simple de tipo bool y la cadena de tipo de juicio soportado actualmente:

{{if .condition}}
{{end}}

Cuando .condition tiempo tipo bool, era cierto para llevar a cabo, cuando .condition para el tipo de cadena, la representación es la ejecución no está vacía.

Por supuesto, también es compatible con los demás, de lo contrario, si anidado:

{{if .condition1}}
{{else if .contition2}}
{{end}}

Supongamos que tenemos la lógica, por ejemplo, con o sin igual tamaño, etc. Cuando se juzga, necesitamos alguna función incorporada de la plantilla para hacer este trabajo, algunas de las funciones más utilizadas son incorporados en las plantillas:

no no

{{if not .condition}}
{{end}}

yy

{{if and .condition1 .condition2}}
{{end}}

o 或

{{if or .condition1 .condition2}}
{{end}}

eq igual

{{if eq .var1 .var2}}
{{end}}

ne no igual

{{if ne .var1 .var2}}
{{end}}

lt menor que (menor que)

{{if lt .var1 .var2}}
{{end}}

Le menor o igual

{{if le .var1 .var2}}
{{end}}

mayor gt de

{{if gt .var1 .var2}}
{{end}}

ge mayor o igual

{{if ge .var1 .var2}}
{{end}}
circulación

gama golang de ciclo de apoyo plantilla al mapa de desplazamiento, el contenido dentro de la porción, la sintaxis es:

{{range $i, $v := .slice}}
{{end}}

Dentro de este rango el ciclo, se puede acceder al valor de atravesar a IV, hay una manera de navegar a:

{{range .slice}}
{{end}}

De esta manera no tener acceso a la clave o el valor del índice, necesidad de acceder al valor correspondiente .:

{{range .slice}}
{{.field}}
{{end}}

Por supuesto, hemos utilizado aquí. Valor de acceso a través, por lo que queremos acceder a las variables externas en las que la forma de hacerlo? (Tales como la representación plantilla de variables de entrada), donde tenemos que utilizar el acceso a $ variables externas:

{{range .slice}}
{{$.ArticleContent}}
{{end}}
plantilla anidada

Al escribir la plantilla, que la integración plantilla de frecuencia común, como cada página tiene una barra de navegación y pie de página, que a menudo escrito como un módulo separado, de manera que todas las páginas se importan, por lo que no hace la repetición preparada.

Cualquier página web tiene una plantilla maestra, entonces podemos estar incrustado dentro de la plantilla principal sub-plantilla para implementar módulos de acción.

Cuando la plantilla se quiere introducir la plantilla hija, utilizamos la siguiente declaración:

{{template "navbar"}}

De esta manera se intentará cargar el nombre de la barra de navegación sub-plantilla, pero también tenemos que definir un sub-plantilla para lograr la "barra de navegación" Este sub-plantilla.

Definido como sub-plantilla:

{{define "navbar"}}
{{end}}

El contenido se define entre la cubierta {{plantilla "barra de navegación"}}

Por supuesto, el niño es separado de la plantilla, entonces el niño puede obtener una plantilla padre variable de plantilla que? Esto es, por supuesto, sólo tenemos que el uso

{{template "navbar" .}}

Las variables se pueden pasar a la corriente sub-plantilla, esto es muy conveniente.

Publicados 349 artículos originales · elogios ganado 14 · Vistas a 90000 +

Supongo que te gusta

Origin blog.csdn.net/LU_ZHAO/article/details/105305057
Recomendado
Clasificación