Hugo游樂場內(nèi)容初始化示例詳解_第1頁
Hugo游樂場內(nèi)容初始化示例詳解_第2頁
Hugo游樂場內(nèi)容初始化示例詳解_第3頁
Hugo游樂場內(nèi)容初始化示例詳解_第4頁
Hugo游樂場內(nèi)容初始化示例詳解_第5頁
已閱讀5頁,還剩1頁未讀 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)

文檔簡介

第Hugo游樂場內(nèi)容初始化示例詳解目錄正文Hugo游樂場ShowMeTheCode

正文

使用Hugo構(gòu)建站點的體驗很棒。首先是構(gòu)建速度快,其次是使用起來簡單,一個hugo命令,我們的站點就已經(jīng)就緒。

在構(gòu)建過程中,Hugo提供了豐富的內(nèi)置功能函數(shù),可以在構(gòu)建過程中向你提供所需要的幾乎任何站點相關(guān)的信息。通過可重用模板,讓主題來幫助處理所有展示和布局相關(guān)的問題。讓作者更專注在內(nèi)容的創(chuàng)作上。

Hugo游樂場

站點構(gòu)建的就將寫好的內(nèi)容,轉(zhuǎn)化成Web服務器能理解的網(wǎng)站資源。比如我們寫作的時候用的是Markdown格式,生成的網(wǎng)站資源通常是HTML格式。

下面是一個簡單的初始化博客內(nèi)容:

--config.toml--

theme="mytheme"

contentDir="mycontent"

--myproject.txt--

Helloproject!

--themes/mytheme/mytheme.txt--

Hellotheme!

--mycontent/blog/post.md--

title:"PostTitle"

###firstblog

HelloBlog

--layouts/index.html--

{{$entries:=(readDir".")}}

START:|{{range$entry:=$entries}}{{ifnot$entry.IsDir}}{{$entry.Name}}|{{end}}{{end}}:END:

--layouts/_default/single.html--

{{.Content}}

StaticContent

可以看到我們自定義了一個主題mytheme,只有一個mytheme.txt文件,并沒有實際的模板文件。這將會在下面的構(gòu)建流程講解中,幫助我們理解到主題是如何嵌套和加載的。

我們的內(nèi)容文件夾是mycontent,在blog目錄下有一篇簡單博文/blog/post.md。如果想要獨立訪問這篇博文,就需要為她生成一個HTML文件,這樣我們就可以在瀏覽器中訪問了。

在樣例中,為了生成首頁和博客,我們還在layouts下創(chuàng)建了兩個模板。一個是首頁模板index.html,另一個則是單篇文章會用到的模板_default/single.html。

通過golangtoolstxtar解析上述文本,方便我們轉(zhuǎn)換成如下結(jié)構(gòu)的磁盤文件:

.

├──config.toml

├──layouts

│├──_default

││└──single.html

│└──index.html

├──mycontent

│└──blog

│└──post.md

├──myproject.txt

└──themes

└──mytheme

└──mytheme.txt

通過Hugo命令進行構(gòu)建,就能生成如下站點資源:

?publictree

├──blog

│└──index.html

├──index.html

└──robots.txt

并包含了我們想要的信息:

站點首頁

?publiccatindex.html

START:|config.toml|myproject.txt|:END:%

博客頁面

?publiccatblog/index.html

h3id="first-blog"firstblog/h3

pHelloBlog/p

StaticContent

那Hugo的這個魔術(shù)到底是怎么變出來的呢?

為了了解Hugo構(gòu)建的核心原理,通過對Hugo最新源碼進行裁剪,移除當前階段不必要的噪音。結(jié)合我們上面的實例,手動生成了一個最小可工作源碼庫-hugo游樂場。以保證我們在這個游樂場可以盡情地玩耍,專注于核心原理,享受整個源碼的學習過程。

通過命令:

gitls-files|grep'.go'|xargswc-l

分別統(tǒng)計gohugoio/hugo和hugoplayground的代碼行數(shù)。我們得到的數(shù)據(jù)分別是163075和33990行。

整整縮減了近四倍!

相信各位看官也會虎軀一震,信心倍增!看源碼原來也可以這么開心。請準備好瓜子飲料小板凳,各位看官你細聽分說。

ShowMeTheCode

packagemain

import(

"bytes"

"fmt"

"path/filepath"

"/x/tools/txtar"

//文件結(jié)構(gòu)

//文件名:config.toml

//文件內(nèi)容:theme='mytheme'

varfiles="--config.toml--\n"+

"theme='mytheme'"

funcmain(){

//解析上面的文件結(jié)構(gòu)

data:=txtar.Parse([]byte(files))

fmt.Println("Filestart:")

//遍歷解析生成的所有文件,通過File結(jié)構(gòu)體獲取文件名和文件數(shù)據(jù)

//f.Name獲取文件名

//f.Data獲取文件數(shù)據(jù)

for_,f:=rangedata.Files{

filename:=filepath.Join("workingDir",f.Name)

data:=bytes.TrimSuffix(f.Data,[]byte("\n"))

fmt.Println(filename)

fmt.Println(string(data))

fmt.Println("Fileend.")

Output:

#解析后得到文件config.toml,以及下面的文件內(nèi)容

#workingDir就是我們的工作目錄,通常是要寫入的文件目錄

Fi

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
  • 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論