From 8805396dd36f35aabd1f401668069e542b381a64 Mon Sep 17 00:00:00 2001 From: Charles7c Date: Sun, 31 Jul 2022 10:14:31 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BC=98=E5=8C=96=EF=BC=9A=E6=96=87=E7=AB=A0?= =?UTF-8?q?=E5=85=83=E6=95=B0=E6=8D=AE=E4=BF=A1=E6=81=AF=E5=A2=9E=E5=8A=A0?= =?UTF-8?q?=E6=96=87=E7=AB=A0=E9=98=85=E8=AF=BB=E6=95=B0=E4=BF=A1=E6=81=AF?= =?UTF-8?q?=EF=BC=8C=E9=9C=80=E8=A6=81=E5=8D=95=E7=8B=AC=E6=8F=90=E4=BE=9B?= =?UTF-8?q?=E5=90=8E=E7=AB=AFapi=E6=9C=8D=E5=8A=A1?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- package.json | 1 + repos/.vitepress/theme/api/config.js | 24 +++++++++++++++++++ repos/.vitepress/theme/api/index.js | 3 +++ repos/.vitepress/theme/api/interface.js | 17 +++++++++++++ .../theme/components/ArticleMetadata.vue | 16 ++++++++++++- repos/.vitepress/theme/index.ts | 7 +++++- repos/.vitepress/theme/styles/vars.css | 8 +++---- 7 files changed, 70 insertions(+), 6 deletions(-) create mode 100644 repos/.vitepress/theme/api/config.js create mode 100644 repos/.vitepress/theme/api/index.js create mode 100644 repos/.vitepress/theme/api/interface.js diff --git a/package.json b/package.json index 9de8ed6c0..4cb329899 100644 --- a/package.json +++ b/package.json @@ -15,6 +15,7 @@ }, "dependencies": { "@element-plus/icons-vue": "^2.0.6", + "blueimp-md5": "^2.19.0", "dayjs": "^1.11.4", "element-plus": "^2.2.9", "fast-glob": "^3.2.11", diff --git a/repos/.vitepress/theme/api/config.js b/repos/.vitepress/theme/api/config.js new file mode 100644 index 000000000..3471de2a1 --- /dev/null +++ b/repos/.vitepress/theme/api/config.js @@ -0,0 +1,24 @@ +import axios from 'axios' + +const createBaseInstance = () => { + const instance = axios.create({ + baseURL: 'http://62.234.119.173/blog', + timeout: 3000 + }) + instance.interceptors.request.use(handleRequest, handleError) + instance.interceptors.response.use(handleResponse, handleError) + return instance +} +export const request = createBaseInstance() + +function handleError(e) { + throw e +} + +function handleRequest(request) { + return request; +} + +function handleResponse(response) { + return response.data +} \ No newline at end of file diff --git a/repos/.vitepress/theme/api/index.js b/repos/.vitepress/theme/api/index.js new file mode 100644 index 000000000..ec92786e9 --- /dev/null +++ b/repos/.vitepress/theme/api/index.js @@ -0,0 +1,3 @@ +export * from './interface' + +export { default } from './interface' \ No newline at end of file diff --git a/repos/.vitepress/theme/api/interface.js b/repos/.vitepress/theme/api/interface.js new file mode 100644 index 000000000..ef67a5b91 --- /dev/null +++ b/repos/.vitepress/theme/api/interface.js @@ -0,0 +1,17 @@ +import { request } from './config' + +export const getPv = (id, call) => { + request.get(`/pv/${id}`, {}).then(result => { + call(process(result)) + }) +} + +function process(result) { + if (result.code === 1) { + return result.data + } else { + console.log("系统异常:", result) + } +} + +export default { getPv } \ No newline at end of file diff --git a/repos/.vitepress/theme/components/ArticleMetadata.vue b/repos/.vitepress/theme/components/ArticleMetadata.vue index 1b9b5254d..32c5260e7 100644 --- a/repos/.vitepress/theme/components/ArticleMetadata.vue +++ b/repos/.vitepress/theme/components/ArticleMetadata.vue @@ -14,6 +14,12 @@ +
+ + 阅读数 + + +
@@ -23,9 +29,10 @@ import { useData } from 'vitepress' import dayjs from 'dayjs' import 'dayjs/locale/zh-cn' import relativeTime from 'dayjs/plugin/relativeTime' +import md5 from 'blueimp-md5' // 获取发布时间 -const { theme, frontmatter } = useData() +const { page, theme, frontmatter } = useData() const date = computed(() => new Date(frontmatter.value.date)) const isoDatetime = computed(() => date.value.toISOString()) const datetime = date.value.toLocaleString('zh', {year: 'numeric', month: 'numeric', day: 'numeric', hour: 'numeric', minute: 'numeric'}) @@ -34,6 +41,13 @@ const datetime = date.value.toLocaleString('zh', {year: 'numeric', month: 'numer dayjs.extend(relativeTime) dayjs.locale('zh-cn') const toDate = dayjs().to(dayjs(frontmatter.value.date)) + +onMounted(() => { + // 记录并获取文章阅读数 + $api.getPv(md5(page.value.relativePath), function(data) { + document.getElementById("pv").innerText = data + }) +})