转到 HTML 模板

我创建了一个简单的抓取工具,它从网站获取前 10 条新闻并返回包含标题和分数的 JSON。我想将标题和乐谱作为 HTML 模板传递,以便生成网页。我不熟悉模板化 Go 语言,也不知道如何为每个链接传递值。这是我现在应该使用的 HTML 代码和我的实现:


<!DOCTYPE html>

<html>

   <head><linkrel="stylesheet" href="https://unpkg.com/mvp.css"

      />

   </head>

   <body>

      <h1>{{.PageTitle}}</h1>

      <ul>

         {{range .Links}}

         <li>{{.Title}}: {{.Score}}</li>

         {{end}}

      </ul>

   </body>

</html>

我的代码:


package main

    

    import (

        "encoding/json"

        "html/template"

        "log"

        "net/http"

        "strconv"

    )

    

    type TopStories struct {

        Title string `json:"title"`

        Score int    `json:"score"`

    }

    

    type TopStoriesPayload struct {

        TopStories []TopStories

    }

    

    type NewsScraper struct {

        url  string

        Data []TopStories

    }

    

    type templateData struct {

        PageTitle string

        Data      []TopStories

    

    }

    

    func NewNewsScraper(url string) *NewsScraper {

        return &NewsScraper{url: url}

    }

    

    func Top10Stories() []string {

        req, err := http.NewRequest("GET", "https://hacker-news.firebaseio.com/v0/topstories.json", nil)

        if err != nil {

            log.Fatal(err)

        }

        resp, err := http.DefaultClient.Do(req)

        if err != nil {

            log.Fatal(err)

        }

        var IDs []int

        json.NewDecoder(resp.Body).Decode(&IDs)

        IDs = IDs[:10]

        var IDsString []string

        for _, id := range IDs {

            IDsString = append(IDsString, strconv.Itoa(id))

        }

        return IDsString

    }

    

    func (n *NewsScraper) GetTopStories() {

        req, err := http.NewRequest("GET", n.url, nil)

        if err != nil {

            log.Fatal(err)

        }


呼啦一阵风
浏览 107回答 1
1回答

慕盖茨4494581

我发现您的代码存在三个问题:a) template.html 文件应该在 link & rel 之间有空格<linkrel="stylesheet" href="https://unpkg.com/mvp.css"/>至<link rel="stylesheet" href="https://unpkg.com/mvp.css"/>b) template.html 文件应该包含.Data而不是.Links.c)go代码应该从下面替换Data :[]TopStories{&nbsp;&nbsp; //what should I put here?},至Data : scraper.Data,
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Go