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 + }) +})