文由Zoomla!逐浪CMS官方發(fā)行,提升每一個開發(fā)者技能,并提供豐富的幫助信息。
在動力場景中,可以自由引用全場背景音樂。
但是,在一些特殊場合,比如要做一個音樂相冊,如何自由定義相應(yīng)音樂?
其實方法很簡單,我們只要采用圖文按鈕,在“html”模式下粘貼代碼就能自由上傳、定義音樂:
首先我們選擇左上角的添加新組件,
然后選擇圖文按鈕,如下圖:
在編輯器錄入框中,輸入相應(yīng)代碼:
插入視頻的方法是:
<video width="300px" height="200px" style="border: 1px solid rgb(154, 199, 254); border-image: none;" src=" https://www.z01.com/The_Sea.mp4 " controls="" poster=" https://www.z01.com/skin/2010/images/mp3.jpg"></video >
其效果如下:
插入音頻的方法是:
<audio src=" https://www.z01.com/The_Sea.mp3 " controls="controls" autoplay />
其中autoplay是用于自動播放,如果放入此字符,則會自動播放,否則不會自動播放,如下圖所示:
而controls是顯示播放器按鈕,如果不想顯示播放器,則放入背景,不顯示即可。
如果要插入優(yōu)酷等第三方視頻,則應(yīng)使用通用代碼,進(jìn)行插入:
<iframe height=498 width=510 src='http://player.youku.com/embed/XNzEzNTkyMTAw' frameborder=0 'allowfullscreen'></iframe>
體驗預(yù)覽:http://v.z01.com/h5/1318
*需要注意的是,在HTML代碼模式編輯好代碼后,要再點此代碼,回到可視化編輯,再保存,否則代碼不會生效。
提案:https://www.open-std.org/jtc1/sc22/wg21/docs/papers/2023/p1967r10.html
通過預(yù)處理器嵌入資源,例如嵌入圖片 #embed "art.png",嵌入當(dāng)前代碼 #embed __FILE__
#include <string_view>
#include <iostream>
static constexpr char self[]={
#embed __FILE__
};
int main()
{
std::cout << std::string_view{std::cbegin(self), std::cend(self)} <<std::endl;
}
ASM generation compiler returned: 0
Execution build compiler returned: 0
Program returned: 0
#include <string_view>
#include <iostream>
static constexpr char self[]={
#embed __FILE__
};
int main()
{
std::cout << std::string_view{std::cbegin(self), std::cend(self)} <<std::endl;
}
在線測試
https://godbolt.org/z/zEz3GP6qW
在Golang 1.16版本中,引入了一個新特性://go:embed。這個特性允許你在編譯時將文件或目錄直接嵌入到你的Go程序中。想象一下,你的靜態(tài)文件、配置文件甚至圖片都可以無縫地集成到你的二進(jìn)制文件中,再也不需要擔(dān)心文件丟失或者路徑問題了!
假設(shè)你有一個靜態(tài)HTML文件,名為index.html。你可以使用//go:embed將它嵌入到你的Go代碼中。
package main
import (
_ "embed"
"fmt"
)
//go:embed index.html
var indexHTML string
func main() {
fmt.Println(indexHTML)
}
html的內(nèi)容為:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>embed_sample.go</title>
</head>
<body>
測試嵌入外部文件!
</body>
</html>
在上面的代碼中,我們使用//go:embed將index.html文件的內(nèi)容嵌入到indexHTML變量中。然后,你就可以在代碼中隨意使用這個變量了。運行代碼,得到以下輸出:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>embed_sample.go</title>
</head>
<body>
測試嵌入外部文件!
</body>
</html>
當(dāng)然,有時候你可能需要嵌入多個文件。這也難不倒//go:embed!
//go:embed static/*.html
var staticFiles embed.FS
data, _ :=staticFiles.ReadFile("static/page1.html")
fmt.Println(string(data))
在這個例子中,我們使用通配符將static目錄下的所有HTML文件嵌入到staticFiles變量中。然后,我們可以通過ReadFile方法讀取這些文件。
有時候,你可能想要嵌入整個目錄,而不僅僅是文件。
// 嵌入目錄
//go:embed static/*
var assets embed.FS
// 嵌入目錄
fs.WalkDir(assets, ".", func(path string, d fs.DirEntry, err error) error {
if err !=nil {
return err
}
fmt.Println(path)
return nil
})
在這個例子中,我們將static目錄及其子目錄中的所有文件嵌入到了assets變量中。然后,我們使用fs.WalkDir遍歷并打印出所有嵌入的文件路徑。
//go:embed不僅可以嵌入文本文件,還可以嵌入二進(jìn)制文件。
//go:embed logo.png
var logo []byte
// 嵌入二進(jìn)制數(shù)據(jù)
fmt.Printf("Logo size: %d bytes\n", len(logo))
在這個例子中,我們將一個logo.png文件嵌入到了logo變量中。這個變量是一個字節(jié)切片,可以用來處理二進(jìn)制數(shù)據(jù)。
為了幫助大家更好地理解//go:embed的用法,下面我們用表格的形式來總結(jié)一下:
用法類型 | 示例代碼 | 說明 |
單個文件 | //go:embed index.html <br> var indexHTML string | 將單個文件的內(nèi)容嵌入到字符串變量中 |
多個文件 | //go:embed static/*.html <br> var staticFiles embed.FS | 使用通配符將多個文件嵌入到文件系統(tǒng)變量中 |
嵌入目錄 | //go:embed assets/* <br> var assets embed.FS | 將整個目錄及其子目錄中的所有文件嵌入到文件系統(tǒng)變量中 |
二進(jìn)制文件 | //go:embed logo.png <br> var logo []byte | 將二進(jìn)制文件嵌入到字節(jié)切片中 |
那么,//go:embed到底有哪些實際的使用場景呢?下面列出了一些常見的應(yīng)用場景,供大家參考:
package main
import (
"embed"
_ "embed"
"fmt"
"io/fs"
)
// 嵌入單個文件
//
//go:embed index.html
var indexHTML string
// 嵌入多個文件按
//
//go:embed static/*.html
var staticFiles embed.FS
// 嵌入目錄
//
//go:embed static/*
var assets embed.FS
//go:embed logo.png
var logo []byte
func main() {
fmt.Println(indexHTML)
data, _ :=staticFiles.ReadFile("static/page1.html")
fmt.Println(string(data))
// 嵌入目錄
fs.WalkDir(assets, ".", func(path string, d fs.DirEntry, err error) error {
if err !=nil {
return err
}
fmt.Println(path)
return nil
})
// 嵌入二進(jìn)制數(shù)據(jù)
fmt.Printf("Logo size: %d bytes\n", len(logo))
}
好了,小伙伴們,我們今天的Golang Embed Directive之旅就到這里了。希望通過這篇文章,你能夠?qū)?/go:embed有一個全面的了解,并能夠在實際項目中靈活運用這個特性。
如果你覺得這篇文章對你有所幫助,別忘了點贊、評論和關(guān)注哦!你的支持是我們不斷創(chuàng)作優(yōu)質(zhì)內(nèi)容的動力!
*請認(rèn)真填寫需求信息,我們會在24小時內(nèi)與您取得聯(lián)系。