偷偷摘套内射激情视频,久久精品99国产国产精,中文字幕无线乱码人妻,中文在线中文a,性爽19p

如何使用 templ 在 Go 中編寫 HTML 用戶界面?

開(kāi)發(fā) 前端
現(xiàn)在,我們已經(jīng)介紹了如何使用 templ 在 Go 中編寫 HTML 用戶界面。templ 是一個(gè)成熟的工具,可以幫助我們快速構(gòu)建 web 應(yīng)用。

簡(jiǎn)介

templ[1] 是一個(gè)在 Go 中編寫 HTML 用戶界面的語(yǔ)言。使用 templ,我們可以創(chuàng)建可呈現(xiàn) HTML 片段的組件,并將它們組合起來(lái)創(chuàng)建屏幕、頁(yè)面、文檔或應(yīng)用程序。

安裝

我們可以通過(guò)以下兩種方式來(lái)安裝 templ:

go 安裝

首先,我們需要安裝 Go 1.20 或更高版本。然后,在命令行中運(yùn)行以下命令:

go install github.com/a-h/templ/cmd/templ@latest

二進(jìn)制安裝

我們也可以從 GitHub 的發(fā)布頁(yè)[2] 下載并安裝二進(jìn)制文件。

創(chuàng)建簡(jiǎn)單的模板組件

讓我們來(lái)創(chuàng)建一個(gè)簡(jiǎn)單的 templ 組件。

首先,我們需要?jiǎng)?chuàng)建一個(gè)新的 Go 項(xiàng)目。在命令行中執(zhí)行以下命令:

mkdir templDemo
cd templDemo
go mod init

然后,我們創(chuàng)建一個(gè)包含組件的 hello.templ 文件。組件是一個(gè)函數(shù),它包含 templ 元素、標(biāo)記以及 if、switch 和 for 表達(dá)式。

package main

templ hello(name string) {
 <div>Hello, { name }</div>
}

接下來(lái),我們執(zhí)行 templ generate 命令生成 Go 代碼。命令的輸出如下:

Processing path: templDemo
Generated code for "templDemo\\hello.templ" in 2.2127ms
Generated code for 1 templates with 0 errors in 2.7429ms

templ 會(huì)生成一個(gè)名為 hello_templ.go 的文件,其中包含生成的 Go 代碼。這個(gè)文件中包含一個(gè)名為 hello 的函數(shù),它接受一個(gè)名為 name 的參數(shù),并返回一個(gè)可渲染 HTML 的 templ.Component。

func hello(name string) templ.Component {
  // ...
}

接下來(lái),我們編寫一個(gè)程序?qū)⒔M件渲染到 stdout。創(chuàng)建一個(gè)名為 main.go 的文件。

package main

import (
 "context"
 "os"
)

func main() {
 component := hello("Tim")
 component.Render(context.Background(), os.Stdout)
}

最后,我們執(zhí)行以下命令來(lái)運(yùn)行程序。程序會(huì)將組件的 HTML 輸出到 stdout。

go run main.go

輸出結(jié)果如下:

<div>Hello, Tim</div>

我們可以將任何實(shí)現(xiàn) io.Writer 接口的類型傳遞給組件的渲染函數(shù),而不僅僅是將 os.Stdout 傳遞進(jìn)去。這意味著我們可以將輸出寫入文件、bytes.Buffer 或 HTTP 響應(yīng)中。

通過(guò)這種方式,我們可以使用 templ 生成 HTML 文件,并將其作為靜態(tài)內(nèi)容托管在 S3 存儲(chǔ)桶、Google Cloud Storage 中,或者將其用于生成 HTML 文件,然后通過(guò)轉(zhuǎn)換流程轉(zhuǎn)換為 PDF 或通過(guò)電子郵件發(fā)送。

運(yùn)行第一個(gè)模板應(yīng)用程序

讓我們更新之前的應(yīng)用程序,通過(guò) HTTP 提供 HTML 頁(yè)面,而不是將其寫入終端。

首先,我們需要更新 main.go 文件。我們可以使用 templ.Handler 函數(shù)將 templ 組件作為標(biāo)準(zhǔn)的 HTTP 處理器。

package main

import (
 "fmt"
 "net/http"

 "github.com/a-h/templ"
)

func main() {
 component := hello("Tim")
 
 http.Handle("/", templ.Handler(component))

 fmt.Println("Listening on :3000")
 http.ListenAndServe(":3000", nil)
}

運(yùn)行程序后,我們可以在瀏覽器中訪問(wèn)相應(yīng)的頁(yè)面:

圖片圖片

結(jié)束語(yǔ)

現(xiàn)在,我們已經(jīng)介紹了如何使用 templ 在 Go 中編寫 HTML 用戶界面。templ 是一個(gè)成熟的工具,可以幫助我們快速構(gòu)建 web 應(yīng)用。

參考資料

[1]templ: https://github.com/a-h/templ

[2]GitHub 的發(fā)布頁(yè): https://github.com/a-h/templ/releases/tag/v0.2.476

責(zé)任編輯:武曉燕 來(lái)源: 愛(ài)發(fā)白日夢(mèng)的后端
相關(guān)推薦

2024-02-21 19:02:05

Go模板化方式

2024-03-19 14:15:48

Go程序os.Exit()

2021-09-11 22:32:26

Go 綁定 Host

2012-04-16 17:15:12

iOS 5定制用戶界面

2009-06-19 13:03:31

JavaFX

2022-09-19 11:42:21

Go優(yōu)化CPU

2019-07-29 10:56:32

Linuxuseradd命令創(chuàng)建用戶賬號(hào)

2011-08-02 11:07:00

2022-09-15 07:44:32

Git全局配置本地配置

2019-01-02 13:11:53

GO語(yǔ)言緩存

2014-04-09 09:32:24

Go并發(fā)

2018-02-23 10:50:34

Linuxudev規(guī)則

2011-07-28 17:46:54

IOS Cocoa 用戶界面

2012-05-29 14:42:47

Ubuntu 12.0

2011-05-19 08:49:01

使用片段界面設(shè)計(jì)Android

2022-11-02 18:54:00

2023-11-27 19:39:46

Goprotobuf

2021-09-15 07:56:33

函數(shù)類型Go

2011-08-01 15:27:49

iPhone 界面

2020-05-22 07:00:00

C#用戶注釋編程語(yǔ)言
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)