1、數(shù)據(jù)組裝:將圖層的數(shù)據(jù)和變量參數(shù)合成,得到該圖的圖層數(shù)據(jù)。
專(zhuān)注于為中小企業(yè)提供網(wǎng)站建設(shè)、成都網(wǎng)站設(shè)計(jì)服務(wù),電腦端+手機(jī)端+微信端的三站合一,更高效的管理,為中小企業(yè)阜平免費(fèi)做網(wǎng)站提供優(yōu)質(zhì)的服務(wù)。我們立足成都,凝聚了一批互聯(lián)網(wǎng)行業(yè)人才,有力地推動(dòng)了1000+企業(yè)的穩(wěn)健成長(zhǎng),幫助中小企業(yè)通過(guò)網(wǎng)站建設(shè)實(shí)現(xiàn)規(guī)模擴(kuò)充和轉(zhuǎn)變。
2、圖層生成:目前有三種圖層(后續(xù)會(huì)有更多種類(lèi)),文字圖層:根據(jù)圖層數(shù)據(jù)(字體,字號(hào),自重,顏色)生成文字圖層。圖片圖層:會(huì)對(duì)圖片進(jìn)行本地緩存,如果已有緩存,則從緩存讀取,否則從網(wǎng)絡(luò)獲取。然后根據(jù)圖層數(shù)據(jù)(透明度,圓角)生成圖片圖層。二維碼圖層:使用二維碼生成工具,將url轉(zhuǎn)換成二維碼圖片圖層。
3、圖層合成:將圖片圖層和文字圖層按順序疊加,最后生成一張圖片返回。另外,利用Serverless部署Golang服務(wù),使用Serverless利用它自動(dòng)擴(kuò)縮容的優(yōu)點(diǎn),提高服務(wù)性能,以及優(yōu)化成本。
Go語(yǔ)言。他主要是在一些網(wǎng)頁(yè)版的服務(wù)器中用于系統(tǒng)編程的一種語(yǔ)言。他是谷歌開(kāi)發(fā)的一種編程語(yǔ)言。在一定程度上,谷歌有一定的壟斷作用。不能隨隨便便的在語(yǔ)言當(dāng)中添加其他的語(yǔ)言成分。
前段時(shí)間使用docker搭建了一個(gè)wiki的網(wǎng)站,用于記錄日常學(xué)習(xí)中的筆記,用了一段時(shí)間,功能很強(qiáng)大,但是編輯器不太熟悉,網(wǎng)站使用java開(kāi)發(fā)的,功能很全面,插件多的時(shí)候就感覺(jué)越來(lái)越臃腫。曾經(jīng)有段時(shí)間就不想使用它了,最近偶然發(fā)現(xiàn)一個(gè)靜態(tài)網(wǎng)站的生成工具h(yuǎn)ugo,可以將markdown直接生成網(wǎng)站,部署到站點(diǎn)上作為自己的知識(shí)庫(kù)或者博客,hugo是使用go語(yǔ)言開(kāi)發(fā)的,使用起來(lái)非常方便,生成的網(wǎng)站可直接部署在Nginx、IIS等中間件上面供其他人訪問(wèn),hugo還有很多漂亮的主題,大家可以選擇自己喜歡的進(jìn)行使用,下面介紹下 我安裝使用hugo的經(jīng)歷和方法。
1)使用brew install命令安裝
我的電腦是mac的,所以最方便的是直接用brew install hugo命令安裝最為方便:
執(zhí)行安裝完成后執(zhí)行hugo version 命令查看版本,確保安裝成功
2)官網(wǎng)下載二進(jìn)制包:解壓后將二進(jìn)制文件加入環(huán)境變量的方式安裝。大家可以根據(jù)自己的操作系統(tǒng),下載適合的安裝包。
3)也可以下載源碼 編譯 運(yùn)行,由于我本地的go版本是1.17的,而hugo的最新代碼的最低要求是1.18,暫時(shí)還不想升級(jí),所以源碼編譯的方式這里就不過(guò)多介紹,感興趣的可以下載源碼編譯試試。
進(jìn)入要?jiǎng)?chuàng)建網(wǎng)站的目錄,執(zhí)行一下命令
這樣名稱為test-blog的網(wǎng)站就建好了 ,
下載一個(gè)主題 可以在 官網(wǎng)上找到各種各樣的主題
將主體添加至配置文件
打開(kāi)content/posts目錄下的index.md 文件進(jìn)行編輯,頁(yè)面的配置項(xiàng)說(shuō)明參見(jiàn)官網(wǎng)
執(zhí)行下面命令
成功以后就可以訪問(wèn)就可以訪問(wèn)網(wǎng)站了。
執(zhí)行命令hugo -D 即可生成一個(gè)public的文件夾,其下面的內(nèi)容即為靜態(tài)網(wǎng)站的所有文件
這里使用nginx的docker鏡像 進(jìn)行部署,執(zhí)行以下命令:
執(zhí)行成功后就能通過(guò)http:localhost訪問(wèn)到靜態(tài)網(wǎng)站了。
這個(gè)工具還有很多需要研究的地方,這里只是將簡(jiǎn)單的使用方法記錄了一下,以后怎樣使用才能使網(wǎng)站更加的方便,快捷、美觀,還要花時(shí)間研究。有興趣的小伙伴可以私信我一塊研究。
Java教程
Linux入門(mén)
更多
首頁(yè)
?
Go語(yǔ)言WEB框架(Gin)詳解
在 Go語(yǔ)言開(kāi)發(fā)的 Web 框架中,有兩款著名 Web 框架分別是 Martini 和 Gin,兩款 Web 框架相比較的話,Gin 自己說(shuō)它比 Martini 要強(qiáng)很多。
Gin 是 Go語(yǔ)言寫(xiě)的一個(gè) web 框架,它具有運(yùn)行速度快,分組的路由器,良好的崩潰捕獲和錯(cuò)誤處理,非常好的支持中間件和 json??傊?Go語(yǔ)言開(kāi)發(fā)領(lǐng)域是一款值得好好研究的 Web 框架,開(kāi)源網(wǎng)址:
首先下載安裝 gin 包:
go get -u github.com/gin-gonic/gin
一個(gè)簡(jiǎn)單的例子:
package main
import "github.com/gin-gonic/gin"
func main() {
//Default返回一個(gè)默認(rèn)的路由引擎
r := gin.Default()
r.GET("/ping", func(c *gin.Context) {
//輸出json結(jié)果給調(diào)用方
c.JSON(200, gin.H{
"message": "pong",
})
})
r.Run() // listen and serve on 0.0.0.0:8080
}
編譯運(yùn)行程序,打開(kāi)瀏覽器,訪問(wèn)頁(yè)面顯示:
{"message":"pong"}
gin 的功能不只是簡(jiǎn)單輸出 Json 數(shù)據(jù)。它是一個(gè)輕量級(jí)的 WEB 框架,支持 RestFull 風(fēng)格 API,支持 GET,POST,PUT,PATCH,DELETE,OPTIONS 等 http 方法,支持文件上傳,分組路由,Multipart/Urlencoded FORM,以及支持 JsonP,參數(shù)處理等等功能,這些都和 WEB 緊密相關(guān),通過(guò)提供這些功能,使開(kāi)發(fā)人員更方便地處理 WEB 業(yè)務(wù)。
Gin 實(shí)際應(yīng)用
接下來(lái)使用 Gin 作為框架來(lái)搭建一個(gè)擁有靜態(tài)資源站點(diǎn),動(dòng)態(tài) WEB 站點(diǎn),以及 RESTFull API 接口站點(diǎn)(可專(zhuān)門(mén)作為手機(jī) APP 應(yīng)用提供服務(wù)使用)組成的,亦可根據(jù)情況分拆這套系統(tǒng),每種功能獨(dú)立出來(lái)單獨(dú)提供服務(wù)。
下面按照一套系統(tǒng)但采用分站點(diǎn)來(lái)說(shuō)明,首先是整個(gè)系統(tǒng)的目錄結(jié)構(gòu),website 目錄下面 static 是資源類(lèi)文件,為靜態(tài)資源站點(diǎn)專(zhuān)用;photo 目錄是 UGC 上傳圖片目錄,tpl 是動(dòng)態(tài)站點(diǎn)的模板。
當(dāng)然這個(gè)目錄結(jié)構(gòu)是一種約定,可以根據(jù)情況來(lái)修改。整個(gè)項(xiàng)目已經(jīng)開(kāi)源,可以訪問(wèn)來(lái)詳細(xì)了解:具體每個(gè)站點(diǎn)的功能怎么實(shí)現(xiàn)呢?請(qǐng)看下面有關(guān)每個(gè)功能的講述:
靜態(tài)資源站點(diǎn)
一般網(wǎng)站開(kāi)發(fā)中,我們會(huì)考慮把 js,css,以及資源圖片放在一起,作為靜態(tài)站點(diǎn)部署在 CDN,提升響應(yīng)速度。采用 Gin 實(shí)現(xiàn)起來(lái)非常簡(jiǎn)單,當(dāng)然也可以使用 net/http 包輕松實(shí)現(xiàn),但使用 Gin 會(huì)更方便。
不管怎么樣,使用 Go 開(kāi)發(fā),我們可以不用花太多時(shí)間在 WEB 服務(wù)環(huán)境搭建上,程序啟動(dòng)就直接可以提供 WEB 服務(wù)了。
package main
import (
"net/http"
"github.com/gin-gonic/gin"
)
func main() {
router := gin.Default()
// 靜態(tài)資源加載,本例為css,js以及資源圖片
router.StaticFS("/public", http.Dir("D:/goproject/src/github.com/ffhelicopter/tmm/website/static"))
router.StaticFile("/favicon.ico", "./resources/favicon.ico")
// Listen and serve on 0.0.0.0:80
router.Run(":80")
}
首先需要是生成一個(gè) Engine,這是 gin 的核心,默認(rèn)帶有 Logger 和 Recovery 兩個(gè)中間件。
router := gin.Default()
StaticFile 是加載單個(gè)文件,而 StaticFS 是加載一個(gè)完整的目錄資源:
func (group *RouterGroup) StaticFile(relativePath, filepath string) IRoutes
func (group *RouterGroup) StaticFS(relativePath string, fs http.FileSystem) IRoutes
這些目錄下資源是可以隨時(shí)更新,而不用重新啟動(dòng)程序?,F(xiàn)在編譯運(yùn)行程序,靜態(tài)站點(diǎn)就可以正常訪問(wèn)了。