国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

如何利用GitHub GraphQL API開發(fā)個(gè)人博客?

fireflow / 3000人閱讀

摘要:獲取標(biāo)簽及相關(guān)通常,我們會(huì)在博客首頁(yè)設(shè)計(jì)一個(gè)有分類的文章列表,這就要求在發(fā)布時(shí)需要選擇對(duì)應(yīng)的。這里我用的是的和的庫(kù),核心代碼如下結(jié)合開發(fā)個(gè)人博客的核心內(nèi)容基本就這么多了,具體代碼歡迎查看,一起踩坑。

作為一個(gè)程序員,搭建一個(gè)個(gè)人博客幾乎是所有人的需求,一來比較酷,二來也可以記錄自己的學(xué)習(xí)和生活總結(jié)。但如果你不是全棧工程師,實(shí)現(xiàn)這個(gè)需求還是有點(diǎn)麻煩。后端搭建一套現(xiàn)有的前端框架及前端寫API都還是有一定門檻的,當(dāng)然,如果你是大牛當(dāng)我沒說,哈哈哈!

下面,我將介紹一個(gè)特別簡(jiǎn)單的方法,甚至不用寫代碼,執(zhí)行幾個(gè)命令就可以搭建一個(gè)博客,就算你不是程序員,也是So easy。那就是:fork我的博客。為什么說fork我的博客就可以搭建一個(gè)博客呢?博客重要的是有內(nèi)容,并且可以隨時(shí)更新,而不是一個(gè)靜態(tài)頁(yè)。這就要用到本文的核心:GitHub GraphQL API,這是github提供的一個(gè)開放式的API。我們只需要將文章用Markdown寫好后,放到博客項(xiàng)目Issues里面,然后通過這個(gè)api,獲取我們的寫的文章,再前端渲染,就可以啦!!是不是特別棒,都不要寫API,也不用考慮文章存哪。下面我來介紹如何實(shí)現(xiàn):

獲取access token

請(qǐng)求GitHub GraphQL API,首先需要按照以下步驟在github申請(qǐng)一個(gè)access token:

右上角個(gè)人頭像 > Settings > Developer settings > Personal access tokens > Generate new token

然后在Token description 寫好關(guān)于這個(gè)token的描述,在Select scopes選擇相應(yīng)的權(quán)限,這里只需要user > read:user 就可以,點(diǎn)擊Generate token按鈕后會(huì)跳轉(zhuǎn)到token列表頁(yè),這時(shí)需要馬上把這個(gè)token記錄下來,因?yàn)檫@是敏感數(shù)據(jù),刷新后就沒有了,不然得重新申請(qǐng)。

項(xiàng)目搭建

建議大家直接Fork我的項(xiàng)目 simbawus/blog,再修改相應(yīng)配置,這樣可以免去開發(fā)的成本,并且這個(gè)項(xiàng)目會(huì)持續(xù)更新,配置修改及啟動(dòng)可查看我項(xiàng)目的README。當(dāng)然也可以fork后進(jìn)行二次開發(fā)。也十分鼓勵(lì)大家從零開始開發(fā),也順便練練手。

獲取GraphQL API數(shù)據(jù)

關(guān)于GraphQL的介紹,可查看我些的這篇文章前端應(yīng)該知道的GraphQL。

GitHub GraphQL API的文檔并沒有使用示例,如果之前沒用過GraphQL API,還是有點(diǎn)懵的,下面我舉三個(gè)常見的例子說明下,具體可以看我博客代碼,別忘了Star噢~。

獲取標(biāo)簽及相關(guān)issues

通常,我們會(huì)在博客首頁(yè)設(shè)計(jì)一個(gè)有分類的文章列表,這就要求在發(fā)布Issue時(shí)需要選擇對(duì)應(yīng)的label。先看官方label文檔:

Connections 里面有issues,所以在查詢labels的同時(shí),還可以查詢issues。先列出要傳輸?shù)臄?shù)據(jù)data,核心也在這:

data = {
  query: `query {
    repository(owner:"simbawus", name: "blog") {
      issues(orderBy:{field: UPDATED_AT, direction: DESC} , labels: null, first: 10, after: ${page}) {
        edges{
          cursor
          node{
            title
            updatedAt
            bodyText
            number
          }
        }
      }
      labels(first: 100){
        nodes{
          name
        }
      }
    }
  }`
};

repository代表查詢指定的倉(cāng)庫(kù),括號(hào)里的參數(shù)owner代表這個(gè)倉(cāng)庫(kù)的所有者,name代表倉(cāng)庫(kù)名稱。issues表示要查詢的issue列表,里面的參數(shù)表示這個(gè)列表的條件:orderBy為排序方式,根據(jù)更新時(shí)間UPDATED_AT和倒序DESC來,labels為null,說明查詢的是所有issues,first表示一次查詢返回的issues數(shù)量,after傳上一個(gè)issue的id,可用來分頁(yè),最終這次請(qǐng)求拿到的數(shù)據(jù)結(jié)構(gòu)如下,完整的請(qǐng)瀏覽器查看:

{
  "data": {
    "repository": {
      "issues": {
        "edges": {
          "0": {
            "cursor": "Y3Vyc29yOnYyOpK5MjAxOC0wNC0yNlQxMDoyNjoxNiswODowMM4S8hYL",
            "node": {
              "bodyText": "作為一個(gè)程序員...",
              "number": "11",
              "title": "如何利用GitHub GraphQL API開發(fā)個(gè)人博客?",
              "updatedAt": "2018-04-22T03:46:34Z",
            }
          }
        }
      },
      "labels": {
        "nodes": {
          "0": {
            "name": "JavaScript"
          }
        }
      }
    }
  }
}
搜索

search這個(gè)connections的文檔寫的讓我一臉懵逼,摸索了好久才寫出來,大家可以試著按官網(wǎng)文檔寫一下。

let data = {
  query: `query {
      search(query:"${keyWords} repo:simbawus/blog", type: ISSUE, first: 10) {
        issueCount
        edges{
          cursor
          node{
            ... on Issue {
              title
              number
              bodyText
              updatedAt
            }
          }
        }
      }
    }`
};

search的query參數(shù)類型為String!,表示一個(gè)非空的字符串,怎么也想不到要這么寫才行吧?query:"${keyWords} repo:simbawus/blog"。node 這個(gè)fields的文檔,看的也是二臉懵逼,還好想到es6的擴(kuò)展符。

詳情

最重要的是文章內(nèi)容這部分了,傳輸數(shù)據(jù)比較簡(jiǎn)單:

let data = {
  query: `query {
    repository(owner:"simbawus", name: "blog") {
      issue(number: ${articleId}) {
        title
        updatedAt
        bodyHTML
      }
    }
  }`
};

請(qǐng)求直接返回一段HTML,問題是如何處理這段HTML,格式化并且高亮文章里面的代碼。這里我用的是React的dangerouslySetInnerHTML和github的css庫(kù)github-markdown-css,核心代碼如下:

import "github-markdown-css";
class ArticlePage extends React.Component {
  _renderHTML() {
    return { __html: this.state.bodyHTML };
  }
  render() {
    return ( 
      
); } }

結(jié)合GitHub GraphQL API開發(fā)個(gè)人博客的核心內(nèi)容基本就這么多了,具體代碼歡迎查看github:simbawus/blog,一起踩坑。

歡迎討論,點(diǎn)個(gè)贊再走吧~

文章同步于以下社區(qū),可以選一個(gè)關(guān)注我噢 ?????

simbawu | github | segmentfault | 知乎 | 簡(jiǎn)書 | 掘金

文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請(qǐng)注明本文地址:http://specialneedsforspecialkids.com/yun/94624.html

相關(guān)文章

  • 前端應(yīng)該知道的GraphQL

    摘要:什么是先貼官網(wǎng)英文中文。所有的操作必須指明到最底層的,并且返回值為標(biāo)量,以確保響應(yīng)結(jié)果的結(jié)構(gòu)明白無誤。對(duì)于前端來說,在查詢的時(shí)候基本都要了解上面說的這幾個(gè)概念,具體應(yīng)用可參見我的這篇文章如何利用開發(fā)個(gè)人博客。 本文主要結(jié)合GitHub GraphQL API,從前端使用者的角度來談GraphQL,沒有GraphQL項(xiàng)目的同學(xué)可以拿GitHub GraphQL API練手,具體代碼可參見...

    lansheng228 評(píng)論0 收藏0
  • 為什么我選擇用 Github issues 來寫博客

    摘要:為什么不選擇其他方案在文章的開頭我有提到,我曾經(jīng)嘗試過用,,自行搭建服務(wù)等途徑去嘗試維護(hù)博客。但這些嘗試的結(jié)果均不合我意,最后無疾而終。我們使用作為博客平臺(tái),也就是相當(dāng)于管理后端。showImg(https://user-gold-cdn.xitu.io/2019/5/22/16adf79473dbdf59); 對(duì)于愛寫東西的人來說,挑一個(gè)合適的博客平臺(tái)是非常重要的。而作為一個(gè) Web 開發(fā)...

    gnehc 評(píng)論0 收藏0
  • 為什么我選擇用 Github issues 來寫博客

    摘要:為什么不選擇其他方案在文章的開頭我有提到,我曾經(jīng)嘗試過用,,自行搭建服務(wù)等途徑去嘗試維護(hù)博客。但這些嘗試的結(jié)果均不合我意,最后無疾而終。我們使用作為博客平臺(tái),也就是相當(dāng)于管理后端。 showImg(https://segmentfault.com/img/remote/1460000019265125?w=700&h=420); 對(duì)于愛寫東西的人來說,挑一個(gè)合適的博客平臺(tái)是非常重要的。...

    Scliang 評(píng)論0 收藏0
  • 框架的游戲:2019 年 JavaScript 流行趨勢(shì)

    摘要:年新星調(diào)查中顯示,越來越流行,其熱度已經(jīng)逐漸超過了。及其框架位于全球最受歡迎使用最廣泛的技術(shù)榜榜首。本文轉(zhuǎn)載自框架的游戲年流行趨勢(shì)英文原文JavaScript 生態(tài)系統(tǒng)復(fù)雜多變,各種框架讓人眼花繚亂。究竟孰優(yōu)孰劣,如今的發(fā)展趨勢(shì)是怎樣的,用人單位又需要怎樣的人才?本文站在一個(gè)中立者的角度,客觀分析了當(dāng)前這場(chǎng)框架的游戲中,JavaScript 的流行趨勢(shì)。 Javascript 的生態(tài)環(huán)境讓我...

    mrcode 評(píng)論0 收藏0
  • 專治前端焦慮的學(xué)習(xí)方案

    摘要:不過今天我希望能夠更進(jìn)一步,不僅僅再抱怨現(xiàn)狀,而是從我個(gè)人的角度來給出一個(gè)逐步深入學(xué)習(xí)生態(tài)圈的方案。最后,我還是想提到下對(duì)于的好的學(xué)習(xí)方法就是回顧參照各種各樣的代碼庫(kù),學(xué)習(xí)人家的用法與實(shí)踐。 本文翻譯自A-Study-Plan-To-Cure-JavaScript-Fatigue。筆者看到里面的幾張配圖著實(shí)漂亮,順手翻譯了一波。本文從屬于筆者的Web Frontend Introduc...

    codeGoogle 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

最新活動(dòng)
閱讀需要支付1元查看
<