摘要:說明是一個(gè)基于和開發(fā)的評(píng)論插件。默認(rèn)值類型布爾值,選填,類似評(píng)論框的全屏遮罩效果。默認(rèn)值類型布爾值,選填,如果當(dāng)前頁面沒有相應(yīng)的且登錄的用戶屬于,則會(huì)自動(dòng)創(chuàng)建。參考類型布爾值,選填,啟用快捷鍵提交評(píng)論。
1. 說明
Gitalk 是一個(gè)基于 GitHub Issue 和 Preact 開發(fā)的評(píng)論插件。
Gitalk 的特性:
1、使用 GitHub 登錄
2、支持多語言 [en, zh-CN, zh-TW, es-ES, fr, ru]
3、支持個(gè)人或組織
4、無干擾模式(設(shè)置 distractionFreeMode 為 true 開啟)
5、快捷鍵提交評(píng)論 (cmd|ctrl + enter)
使用Gitalk需要你做一些提前準(zhǔn)備:
1、在github上創(chuàng)建一個(gè)倉庫,Gitalk會(huì)把評(píng)論放在這個(gè)倉庫的issues里面。
2、在github上申請(qǐng)一個(gè)GitHub OAuth application,來讓Gitalk有權(quán)限操作github上的倉庫。
兩種方式引入:
1、直接在HTML文件中引入
建議直接把文件下載后放在項(xiàng)目目錄中,這樣就可以不再依賴第三方網(wǎng)絡(luò)了。
注意:如果連接失效了,請(qǐng)?jiān)趆ttps://www.bootcdn.cn/上搜索gitalk然后找到對(duì)應(yīng)資源鏈接復(fù)制過來。
2、通過npm安裝
npm i --save gitalk
import "gitalk/dist/gitalk.css" import Gitalk from "gitalk"2.2 使用
1、首先需要在html文件中添加一個(gè)容器,Gitalk組件會(huì)在此處顯示
2、使用下面的JavaScript代碼來生成Gitalk評(píng)論:
var gitalk = new Gitalk({ clientID: "2eb19afceda708b27e64", // GitHub Application Client ID clientSecret: "36aedb5a30321626a8631689fee5fafd5929f612", // GitHub Application Client Secret repo: "gitalk-comment" // 存放評(píng)論的倉庫 owner: "yulilong", // 倉庫的創(chuàng)建者, admin: ["yulilong"], // 如果倉庫有多個(gè)人可以操作,那么在這里以數(shù)組形式寫出 id: location.pathname, // 用于標(biāo)記評(píng)論是哪個(gè)頁面的,確保唯一,并且長(zhǎng)度小于50 }) gitalk.render("gitalk-container"); // 渲染Gitalk評(píng)論組件
里面參數(shù)下面會(huì)講解。
配置好后,頁面最終效果(https://gitalk.github.io/):
注意:
1、第一次Gitalk需要初始化評(píng)論,需要你先點(diǎn)擊使用GitHub登陸,然后刷新頁面才會(huì)初始化,或者自己去倉庫里手動(dòng)創(chuàng)建一個(gè)issues,并添加issues的labels值為Gitalk的labels參數(shù)和id參數(shù)的值。
new Gitalk的參數(shù)中有g(shù)ithub的倉庫信息和GitHub Application信息,所以首先我們創(chuàng)建這兩個(gè)。
在github上創(chuàng)建一個(gè)倉庫比較簡(jiǎn)單這里就不講解了。
下面講一下如何申請(qǐng)一個(gè)GitHub OAuth application
注意:如果你打算在自己網(wǎng)站使用Gitalk,并且這個(gè)網(wǎng)站的源碼在github的倉庫上,那么你也可以直接使用這個(gè)倉庫,Gitalk只使用倉庫的Issues。
3. 申請(qǐng)一個(gè)OAuth applicationGitHub OAuth application允許程序來操作你的github賬戶,可以對(duì)github中倉庫讀寫。
詳情介紹:https://developer.github.com/...
申請(qǐng)GitHub OAuth application流程:
1、打開github網(wǎng)站登陸后,點(diǎn)擊右上角的用戶圖標(biāo),選擇Settings
2、 在Settings頁面選擇Developer settings選項(xiàng)。
3、在Developer settings選擇OAuth Apps,然后會(huì)在頁面右邊有一個(gè)New OAuth App按鈕,點(diǎn)擊這個(gè)按鈕就進(jìn)入到新建OAuth application頁面
4、也可以直接代開這個(gè)鏈接:https://github.com/settings/a... 進(jìn)入新建頁面
在注冊(cè)OAuth應(yīng)用頁面有如下幾個(gè)參數(shù)需要填寫:
Application name:必填,OAuth的名字
Homepage URL:必填,你應(yīng)用的網(wǎng)址,哪個(gè)網(wǎng)站用了Gitalk組件,就填寫這個(gè)網(wǎng)址
Application description:選填,該OAuth的說明
Authorization callback URL:必填,授權(quán)成功后回調(diào)網(wǎng)址,跟Homepage URL參數(shù)保持一致就好
這些參數(shù)在注冊(cè)成功后是可以修改。
參數(shù)填好后,點(diǎn)Register application按鈕即可完成注冊(cè)。
注冊(cè)成功后會(huì)自動(dòng)跳轉(zhuǎn)到這個(gè)OAuth應(yīng)用的頁面,或者在Developer settings選擇OAuth Apps后就能看見你創(chuàng)建的OAuth應(yīng)用名字,點(diǎn)擊它進(jìn)入這個(gè)OAuth應(yīng)用的頁面:
在新創(chuàng)建的OAuth應(yīng)用里面的Client ID和Client Secret就是我們需要的參數(shù)。
在上面使用Gitalk的JavaScript代碼中有一些參數(shù):
var gitalk = new Gitalk({ clientID: "2eb19afceda708b27e64", // GitHub Application Client ID clientSecret: "36aedb5a30321626a8631689fee5fafd5929f612", repo: "gitalk-comment" // 存放評(píng)論的倉庫 owner: "yulilong", // 倉庫的創(chuàng)建者, admin: ["yulilong"], // 如果倉庫有多個(gè)人可以操作,那么在這里以數(shù)組形式寫出 id: location.pathname, // 用于標(biāo)記評(píng)論是哪個(gè)頁面的 })
主要的參數(shù):
clientID
類型:字符串,必填,申請(qǐng)的OAuth App的Client ID
clientSecret
類型:字符串,必填,申請(qǐng)的OAuth App的Client Secret
repo
類型:字符串,必填,github上的倉庫名字,用于存放Gitalk評(píng)論
owner
類型:字符串,必填,github倉庫的所有者的名字
admin
類型:數(shù)組(元素是字符串),必填,github倉庫的所有者和合作者 (對(duì)這個(gè) repository 有寫權(quán)限的用戶)
id
類型:字符串,選填,頁面的唯一標(biāo)識(shí)。長(zhǎng)度必須小于50。此參數(shù)用于評(píng)論和頁面對(duì)應(yīng)的標(biāo)識(shí),如果想讓兩個(gè)頁面用一個(gè)評(píng)論,可設(shè)置兩個(gè)頁面的id一樣。默認(rèn)值:location.href(頁面URL)
title
類型:字符串,選填,GitHub issue 的標(biāo)題,默認(rèn)值:document.title(HTML中title標(biāo)簽中的值)
注意:
雖然id和title參數(shù)是不是必填的選項(xiàng),但是這個(gè)兩個(gè)參數(shù)很重要建議填上:
1、id參數(shù)用于評(píng)論記錄和頁面對(duì)應(yīng)的唯一標(biāo)記,有的時(shí)候發(fā)現(xiàn)好幾個(gè)頁面評(píng)論是一樣的,就是由于配置id參數(shù)的時(shí)候,這幾個(gè)頁面的id是一樣導(dǎo)致。由于id參數(shù)默認(rèn)值是location.href頁面URL,而有的時(shí)候URL中帶著頁面標(biāo)題的鏈接,導(dǎo)致URL長(zhǎng)度超過了50個(gè)字符長(zhǎng)度,會(huì)導(dǎo)致創(chuàng)建評(píng)論issues失敗(長(zhǎng)度超過50個(gè)會(huì)創(chuàng)建失敗),這點(diǎn)要注意。
2、title用于在github倉庫issues的標(biāo)題,如果你想管理評(píng)論可以設(shè)置一下這個(gè)參數(shù),來區(qū)分該評(píng)論是來自于那個(gè)文章。
其他參數(shù):
number: 類型:數(shù)字,選填,頁面的 issue ID 標(biāo)識(shí),若未定義number屬性則會(huì)使用id進(jìn)行定位。默認(rèn)值:-15. Gitalk實(shí)際使用例子 5.1 在docsify中使用
labels:類型:數(shù)組,選填,GitHub issue 的標(biāo)簽,默認(rèn)值:["Gitalk"]
body:類型:字符串,選填, GitHub issue 的內(nèi)容,默認(rèn)值:URL + HTML中meta標(biāo)簽中description的值
language:類型:字符串,選填,設(shè)置語言,支持 [en, zh-CN, zh-TW]。默認(rèn)值:navigator.language 或者 navigator.userLanguage
perPage:類型:數(shù)字,選填,每次加載的數(shù)據(jù)大小,最多 100。默認(rèn)值:10
distractionFreeMode:類型:布爾值,選填,類似Facebook評(píng)論框的全屏遮罩效果。默認(rèn)值:false
pagerDirection:類型:字符串,選填,評(píng)論排序方式,last為按評(píng)論創(chuàng)建時(shí)間倒敘,first為按創(chuàng)建時(shí)間正序。默認(rèn)值:last
createIssueManually:類型:布爾值,選填,如果當(dāng)前頁面沒有相應(yīng)的 isssue 且登錄的用戶屬于 admin,則會(huì)自動(dòng)創(chuàng)建 issue。如果設(shè)置為 true,則顯示一個(gè)初始化頁面,創(chuàng)建 issue 需要點(diǎn)擊 init 按鈕。 默認(rèn)值:false
proxy:類型:字符串,選填,GitHub oauth 請(qǐng)求到反向代理,為了支持 CORS。默認(rèn)值:https://cors-anywhere.herokuapp.com/https://github.com/login/oauth/access_token
flipMoveOptions:類型:對(duì)象,選填,評(píng)論列表的動(dòng)畫。參考
enableHotKey:類型:布爾值,選填,啟用快捷鍵(cmd/ctrl + enter)提交評(píng)論。默認(rèn)值:true
docsify是一個(gè)神奇的文檔網(wǎng)站生成工具。詳情介紹請(qǐng)看官網(wǎng):https://docsify.js.org/#/zh-cn/
使用docsify教程請(qǐng)查看:https://segmentfault.com/a/11...
docsify支持Gitalk評(píng)論插件,需要引入一個(gè)JavaScript腳本文件:
https://unpkg.com/docsify@4.8.6/lib/plugins/gitalk.min.js
一個(gè)實(shí)際使用例子:
說明:
1、由于docsify的鏈接URL使用的是hash的方式,導(dǎo)致切換頁面的時(shí)候不會(huì)刷新頁面,導(dǎo)致整個(gè)網(wǎng)站的Gitalk評(píng)論使用的是一個(gè)評(píng)論,因此做了監(jiān)聽hash事件,來刷新頁面,這樣就能每次切換頁面刷新,然后加載對(duì)應(yīng)的評(píng)論。5.2 在VuePress中使用
2、關(guān)于Gitalk參數(shù)id的值,由于點(diǎn)擊二級(jí)標(biāo)題后,二級(jí)標(biāo)題會(huì)以參數(shù)的形式出現(xiàn)在url上,導(dǎo)致長(zhǎng)度有事超過了50,所以過濾掉URL中的參數(shù),此外還能解決評(píng)論定位不到問題(二級(jí)標(biāo)題會(huì)在URL上)。
關(guān)于VuePress,請(qǐng)參考:https://vuepress.vuejs.org/zh/
我們需要?jiǎng)?chuàng)建.vuepress/enhanceApp.js文件,內(nèi)容如下:
function integrateGitalk (router) { const linkGitalk = document.createElement("link"); linkGitalk.; linkGitalk.rel = "stylesheet"; document.body.appendChild(linkGitalk); const scriptGitalk = document.createElement("script"); scriptGitalk.src = "https://cdn.jsdelivr.net/npm/gitalk@1/dist/gitalk.min.js"; document.body.appendChild(scriptGitalk); var path = ""; router.afterEach((to) => { if (scriptGitalk.onload) { setTimeout(loadGitalk, 5, to) } else { scriptGitalk.onload = () => { loadGitalk(to.fullPath); } } }); function loadGitalk (to) { if (to.path !== path) { path = to.path; let commentsContainer = document.getElementById("gitalk-container"); const $page = document.querySelector(".page"); if (commentsContainer && $page) { $page.removeChild(commentsContainer) } commentsContainer = document.createElement("div"); commentsContainer.id = "gitalk-container"; commentsContainer.classList.add("content"); if ($page) { $page.appendChild(commentsContainer); if (typeof Gitalk !== "undefined" && Gitalk instanceof Function) { renderGitalk(); } } } } function renderGitalk () { const gitalk = new Gitalk({ clientID: "2eb19afceda708b27e64", clientSecret: "36aedb5a30321626a8631689fee5fafd5929f612", repo: "gitalk-comment", owner: "yulilong", admin: ["yulilong"], title: location.pathname, id: location.pathname, // Ensure uniqueness and length less than 50 language: "zh-CN", }); gitalk.render("gitalk-container"); } window.loadGitalk = loadGitalk; } export default ({ Vue, options, router }) => { try { document && integrateGitalk(router) } catch (e) { console.error(e.message) } }
保存文件后,重啟vuePress服務(wù)即可。
效果如下圖:
Gitalk 官網(wǎng)
Gitalk中文文檔
文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請(qǐng)注明本文地址:http://specialneedsforspecialkids.com/yun/101463.html
很多人想要搭建自己的博客網(wǎng)站,但是又苦于沒有什么代碼基礎(chǔ),部分同學(xué)可能覺得申請(qǐng)?zhí)摂M主機(jī)管理空間等操作繁瑣,于是苦苦尋找那種單純的寫作平臺(tái),例如早期的新浪博客,現(xiàn)在的簡(jiǎn)書、國外的WP等也就成為了不少人的選擇。但是使用第三方的博客平臺(tái)有一個(gè)最大的問題:不穩(wěn)定。可能有的人會(huì)說大廠商不怕倒閉,縱觀互聯(lián)網(wǎng)這十幾年的發(fā)展,再大的大牌服務(wù)如果沒有贏利支撐,該倒閉的倒閉,該關(guān)停的關(guān)停。用戶的利益對(duì)于商家來說不是高...
摘要:那么我們?nèi)绾卧诓┛椭袑?shí)現(xiàn)這個(gè)功能呢,其實(shí)很簡(jiǎn)單,首先修改我們的文件介紹正在使用的構(gòu)造函數(shù)附加到根實(shí)例的一些選項(xiàng)當(dāng)前應(yīng)用的路由實(shí)例站點(diǎn)元數(shù)據(jù)對(duì)的判斷是防止編譯的時(shí)候報(bào)錯(cuò)然后新建一個(gè)的文件取消默認(rèn)的復(fù)制事件作者靜水深流原文著作權(quán)歸作者所有。 原文博客 閑扯 很久以前,自己擁有一個(gè)用hexo搭建的靜態(tài)博客網(wǎng)站,記得當(dāng)時(shí)為了把它搞出來,廢了不少勁,然后后來又?jǐn)鄶嗬m(xù)續(xù)更改過一些配置和樣式,但是因...
原文博客 閑扯 很久以前,自己擁有一個(gè)用hexo搭建的靜態(tài)博客網(wǎng)站:ox:,記得當(dāng)時(shí)為了把它搞出來,廢了不少勁:anger:,然后后來又?jǐn)鄶嗬m(xù)續(xù)更改過一些配置和樣式,但是因?yàn)楦杏X各種麻煩,所以就放在github上積累和很多的塵土:cupid:,到現(xiàn)在也懶得在打掃了(其實(shí)是好久不用,有點(diǎn)忘了怎么用了:-1::poop:),前段時(shí)間在百度統(tǒng)計(jì)上看了看那個(gè)靜態(tài)網(wǎng)站的訪問人數(shù),發(fā)現(xiàn)已經(jīng)很久很久沒人訪問過了...
摘要:專為極客設(shè)計(jì)的上手簡(jiǎn)單酷炫,基于的博客平臺(tái)。生成之后,打開瀏覽器地址欄輸入即可。主題你可以使用來查看最新官方主題即將到來。貢獻(xiàn)如有任何的意見或建議,歡迎通過創(chuàng)建或的方式告知倉庫管理員,請(qǐng)先閱讀貢獻(xiàn)指南。 showImg(http://ojiq40lzd.bkt.clouddn.com/logo-144.png); showImg(http://forthebadge.com/image...
閱讀 1830·2021-11-11 16:54
閱讀 2057·2019-08-30 15:56
閱讀 2365·2019-08-30 15:44
閱讀 1282·2019-08-30 15:43
閱讀 1856·2019-08-30 11:07
閱讀 812·2019-08-29 17:11
閱讀 1464·2019-08-29 15:23
閱讀 3007·2019-08-29 13:01