feat: 重构部分代码,略微完成文章md渲染部分
This commit is contained in:
1 parent
6be2c9a0d7
commit
c2be826bc5
12 files changed
+200
-11
No files matched your search
Vendored
+3
@@ -1,5 +1,8 @@
|
|||||||
{
|
{
|
||||||
"cSpell.words": [
|
"cSpell.words": [
|
||||||
|
"linkify",
|
||||||
|
"Markdownit",
|
||||||
|
"mdit",
|
||||||
"unplugin"
|
"unplugin"
|
||||||
],
|
],
|
||||||
"vue3snippets.enable-compile-vue-file-on-did-save-code": false
|
"vue3snippets.enable-compile-vue-file-on-did-save-code": false
|
||||||
|
|||||||
@@ -0,0 +1,10 @@
|
|||||||
|
export default async function useMarkdownit() {
|
||||||
|
const md = await import('markdown-it');
|
||||||
|
const markdownit = md.default;
|
||||||
|
const mdit = markdownit({
|
||||||
|
html: true,
|
||||||
|
linkify: true,
|
||||||
|
typographer: true
|
||||||
|
});
|
||||||
|
return mdit;
|
||||||
|
}
|
||||||
+6
-2
@@ -33,8 +33,12 @@ export default defineNuxtConfig({
|
|||||||
modules: ["nuxtjs-naive-ui", "@pinia/nuxt"],
|
modules: ["nuxtjs-naive-ui", "@pinia/nuxt"],
|
||||||
compatibilityDate: "2025-01-12",
|
compatibilityDate: "2025-01-12",
|
||||||
build: {
|
build: {
|
||||||
// 开启打包分析
|
analyze: {
|
||||||
analyze: true,
|
filename: "stats.html",
|
||||||
|
},
|
||||||
|
},
|
||||||
|
nitro: {
|
||||||
|
compressPublicAssets: true,
|
||||||
},
|
},
|
||||||
experimental: { appManifest: false },
|
experimental: { appManifest: false },
|
||||||
});
|
});
|
||||||
@@ -12,6 +12,7 @@
|
|||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@pinia/nuxt": "^0.9.0",
|
"@pinia/nuxt": "^0.9.0",
|
||||||
"@vicons/ionicons5": "^0.13.0",
|
"@vicons/ionicons5": "^0.13.0",
|
||||||
|
"markdown-it": "^14.1.0",
|
||||||
"naive-ui": "^2.41.0",
|
"naive-ui": "^2.41.0",
|
||||||
"node-fetch": "^3.3.2",
|
"node-fetch": "^3.3.2",
|
||||||
"nuxt": "^3.10.3",
|
"nuxt": "^3.10.3",
|
||||||
@@ -23,6 +24,7 @@
|
|||||||
"vue-router": "^4.3.0"
|
"vue-router": "^4.3.0"
|
||||||
},
|
},
|
||||||
"devDependencies": {
|
"devDependencies": {
|
||||||
|
"@types/markdown-it": "^14.1.2",
|
||||||
"sass": "^1.83.1"
|
"sass": "^1.83.1"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -1,11 +1,16 @@
|
|||||||
<template>
|
<template>
|
||||||
<div class="iframe-wrapper">
|
<div class="iframe-wrapper">
|
||||||
<iframe src="/iframe-source/genshin-gacha/index.html" frameborder="0"></iframe>
|
<iframe :src="decodeURIComponent(route.params.url as string)" frameborder="0"></iframe>
|
||||||
</div>
|
</div>
|
||||||
</template>
|
</template>
|
||||||
|
|
||||||
<script setup lang="ts">
|
<script setup lang="ts">
|
||||||
|
|
||||||
|
const route = useRoute();
|
||||||
|
|
||||||
|
// onMounted(() => {
|
||||||
|
// console.log(route.params.url);
|
||||||
|
// })
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
<style scoped>
|
<style scoped>
|
||||||
+12
-3
@@ -105,7 +105,17 @@ const PageContent = reactive<PageContent[]>([
|
|||||||
nuxtLinks: [
|
nuxtLinks: [
|
||||||
{
|
{
|
||||||
name: 'demo',
|
name: 'demo',
|
||||||
to: 'tool/genshin-gacha'
|
to: `/iframe/${encodeURIComponent('/iframe-source/genshin-gacha/index.html')}`
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
name: 'miaoTracker',
|
||||||
|
description: '仅仅是个接口而已,用来查询开发者的位置记录',
|
||||||
|
nuxtLinks: [
|
||||||
|
{
|
||||||
|
name: 'demo',
|
||||||
|
to: `/iframe/${encodeURIComponent('https://nj.miaospring.top:17582/api/getAllPositions')}`
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
@@ -115,12 +125,11 @@ const PageContent = reactive<PageContent[]>([
|
|||||||
show: true,
|
show: true,
|
||||||
content: [
|
content: [
|
||||||
{
|
{
|
||||||
name: 'vue3',
|
name: 'VUE',
|
||||||
description: 'vue3官方文档',
|
description: 'vue3官方文档',
|
||||||
links: [
|
links: [
|
||||||
{
|
{
|
||||||
name: 'vue3',
|
name: 'vue3',
|
||||||
|
|
||||||
url: 'https://cn.vuejs.org/'
|
url: 'https://cn.vuejs.org/'
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
|
|||||||
@@ -2,7 +2,7 @@
|
|||||||
<div class="posts-wrapper">
|
<div class="posts-wrapper">
|
||||||
<article class="posts-item" v-for="post in postsData" :key="post.id">
|
<article class="posts-item" v-for="post in postsData" :key="post.id">
|
||||||
<header class="post-title">
|
<header class="post-title">
|
||||||
<a href="">{{ post.title }}</a>
|
<nuxt-link :to="`/posts/post-${post.id}`">{{ post.title }}</nuxt-link>
|
||||||
</header>
|
</header>
|
||||||
<p class="post-summary">{{ post.summary }}...</p>
|
<p class="post-summary">{{ post.summary }}...</p>
|
||||||
<footer class="post-footer">
|
<footer class="post-footer">
|
||||||
@@ -32,10 +32,10 @@ const postsData = ref<postItem[]>([])
|
|||||||
|
|
||||||
onMounted(async () => {
|
onMounted(async () => {
|
||||||
// router.push('/posts/temp')
|
// router.push('/posts/temp')
|
||||||
await sleep(1000)
|
// await sleep(1000)
|
||||||
postsData.value = await $fetch('/api/posts/getPosts')
|
postsData.value = await $fetch('/api/posts/getPostList')
|
||||||
isInit.value = true
|
isInit.value = true
|
||||||
console.log(postsData.value)
|
// console.log(postsData.value)
|
||||||
})
|
})
|
||||||
|
|
||||||
</script>
|
</script>
|
||||||
|
|||||||
@@ -0,0 +1,58 @@
|
|||||||
|
<template>
|
||||||
|
<div class="md-render">
|
||||||
|
<div v-if="isInit" v-html="renderedData"></div>
|
||||||
|
<div v-else class="md-skeleton-item">
|
||||||
|
<n-skeleton text style="height: 40px; width: 60%" />
|
||||||
|
<n-skeleton text :repeat="2" />
|
||||||
|
<n-skeleton text style="height: 40px; width: 60%" />
|
||||||
|
<n-skeleton text :repeat="6" />
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<script setup lang="ts">
|
||||||
|
import useMarkdownit from '~/hooks/useMarkdownit';
|
||||||
|
|
||||||
|
const route = useRoute()
|
||||||
|
|
||||||
|
const isInit = ref(false)
|
||||||
|
|
||||||
|
const renderedData = ref('')
|
||||||
|
|
||||||
|
onMounted(async () => {
|
||||||
|
const id = route.params.id
|
||||||
|
|
||||||
|
const _p = $fetch('/api/posts/getPostContent', {
|
||||||
|
method: 'POST',
|
||||||
|
body: {
|
||||||
|
id
|
||||||
|
}
|
||||||
|
})
|
||||||
|
|
||||||
|
const markdownIt = await useMarkdownit()
|
||||||
|
|
||||||
|
const postsData = await _p
|
||||||
|
|
||||||
|
renderedData.value = markdownIt.render(postsData.data)
|
||||||
|
|
||||||
|
isInit.value = true
|
||||||
|
|
||||||
|
})
|
||||||
|
|
||||||
|
</script>
|
||||||
|
|
||||||
|
<style scoped>
|
||||||
|
.md-render {
|
||||||
|
width: 100%;
|
||||||
|
padding: 10px 20px 30px;
|
||||||
|
|
||||||
|
box-sizing: border-box;
|
||||||
|
}
|
||||||
|
|
||||||
|
.md-skeleton-item {
|
||||||
|
display: flex;
|
||||||
|
flex-direction: column;
|
||||||
|
gap: 30px;
|
||||||
|
padding-top: 30px;
|
||||||
|
}
|
||||||
|
</style>
|
||||||
Generated
+60
@@ -14,6 +14,9 @@ importers:
|
|||||||
'@vicons/ionicons5':
|
'@vicons/ionicons5':
|
||||||
specifier: ^0.13.0
|
specifier: ^0.13.0
|
||||||
version: 0.13.0
|
version: 0.13.0
|
||||||
|
markdown-it:
|
||||||
|
specifier: ^14.1.0
|
||||||
|
version: 14.1.0
|
||||||
naive-ui:
|
naive-ui:
|
||||||
specifier: ^2.41.0
|
specifier: ^2.41.0
|
||||||
version: 2.41.0(vue@3.5.13(typescript@5.7.3))
|
version: 2.41.0(vue@3.5.13(typescript@5.7.3))
|
||||||
@@ -42,6 +45,9 @@ importers:
|
|||||||
specifier: ^4.3.0
|
specifier: ^4.3.0
|
||||||
version: 4.5.0(vue@3.5.13(typescript@5.7.3))
|
version: 4.5.0(vue@3.5.13(typescript@5.7.3))
|
||||||
devDependencies:
|
devDependencies:
|
||||||
|
'@types/markdown-it':
|
||||||
|
specifier: ^14.1.2
|
||||||
|
version: 14.1.2
|
||||||
sass:
|
sass:
|
||||||
specifier: ^1.83.1
|
specifier: ^1.83.1
|
||||||
version: 1.83.1
|
version: 1.83.1
|
||||||
@@ -917,12 +923,21 @@ packages:
|
|||||||
'@types/katex@0.16.7':
|
'@types/katex@0.16.7':
|
||||||
resolution: {integrity: sha512-HMwFiRujE5PjrgwHQ25+bsLJgowjGjm5Z8FVSf0N6PwgJrwxH0QxzHYDcKsTfV3wva0vzrpqMTJS2jXPr5BMEQ==}
|
resolution: {integrity: sha512-HMwFiRujE5PjrgwHQ25+bsLJgowjGjm5Z8FVSf0N6PwgJrwxH0QxzHYDcKsTfV3wva0vzrpqMTJS2jXPr5BMEQ==}
|
||||||
|
|
||||||
|
'@types/linkify-it@5.0.0':
|
||||||
|
resolution: {integrity: sha512-sVDA58zAw4eWAffKOaQH5/5j3XeayukzDk+ewSsnv3p4yJEZHCCzMDiZM8e0OUrRvmpGZ85jf4yDHkHsgBNr9Q==}
|
||||||
|
|
||||||
'@types/lodash-es@4.17.12':
|
'@types/lodash-es@4.17.12':
|
||||||
resolution: {integrity: sha512-0NgftHUcV4v34VhXm8QBSftKVXtbkBG3ViCjs6+eJ5a6y6Mi/jiFGPc1sC7QK+9BFhWrURE3EOggmWaSxL9OzQ==}
|
resolution: {integrity: sha512-0NgftHUcV4v34VhXm8QBSftKVXtbkBG3ViCjs6+eJ5a6y6Mi/jiFGPc1sC7QK+9BFhWrURE3EOggmWaSxL9OzQ==}
|
||||||
|
|
||||||
'@types/lodash@4.17.14':
|
'@types/lodash@4.17.14':
|
||||||
resolution: {integrity: sha512-jsxagdikDiDBeIRaPYtArcT8my4tN1og7MtMRquFT3XNA6axxyHDRUemqDz/taRDdOUn0GnGHRCuff4q48sW9A==}
|
resolution: {integrity: sha512-jsxagdikDiDBeIRaPYtArcT8my4tN1og7MtMRquFT3XNA6axxyHDRUemqDz/taRDdOUn0GnGHRCuff4q48sW9A==}
|
||||||
|
|
||||||
|
'@types/markdown-it@14.1.2':
|
||||||
|
resolution: {integrity: sha512-promo4eFwuiW+TfGxhi+0x3czqTYJkG8qB17ZUJiVF10Xm7NLVRSLUsfRTU/6h1e24VvRnXCx+hG7li58lkzog==}
|
||||||
|
|
||||||
|
'@types/mdurl@2.0.0':
|
||||||
|
resolution: {integrity: sha512-RGdgjQUZba5p6QEFAVx2OGb8rQDL/cPRG7GiedRzMcJ1tYnUANBncjbSB1NRGwbvjcPeikRABz2nshyPk1bhWg==}
|
||||||
|
|
||||||
'@types/node@22.10.5':
|
'@types/node@22.10.5':
|
||||||
resolution: {integrity: sha512-F8Q+SeGimwOo86fiovQh8qiXfFEh2/ocYv7tU5pJ3EXMSSxk1Joj5wefpFK2fHTf/N6HKGSxIDBT9f3gCxXPkQ==}
|
resolution: {integrity: sha512-F8Q+SeGimwOo86fiovQh8qiXfFEh2/ocYv7tU5pJ3EXMSSxk1Joj5wefpFK2fHTf/N6HKGSxIDBT9f3gCxXPkQ==}
|
||||||
|
|
||||||
@@ -1966,6 +1981,9 @@ packages:
|
|||||||
resolution: {integrity: sha512-/vlFKAoH5Cgt3Ie+JLhRbwOsCQePABiU3tJ1egGvyQ+33R/vcwM2Zl2QR/LzjsBeItPt3oSVXapn+m4nQDvpzw==}
|
resolution: {integrity: sha512-/vlFKAoH5Cgt3Ie+JLhRbwOsCQePABiU3tJ1egGvyQ+33R/vcwM2Zl2QR/LzjsBeItPt3oSVXapn+m4nQDvpzw==}
|
||||||
engines: {node: '>=14'}
|
engines: {node: '>=14'}
|
||||||
|
|
||||||
|
linkify-it@5.0.0:
|
||||||
|
resolution: {integrity: sha512-5aHCbzQRADcdP+ATqnDuhhJ/MRIqDkZX5pyjFHRRysS8vZ5AbqGEoFIb6pYHPZ+L/OC2Lc+xT8uHVVR5CAK/wQ==}
|
||||||
|
|
||||||
listhen@1.9.0:
|
listhen@1.9.0:
|
||||||
resolution: {integrity: sha512-I8oW2+QL5KJo8zXNWX046M134WchxsXC7SawLPvRQpogCbkyQIaFxPE89A2HiwR7vAK2Dm2ERBAmyjTYGYEpBg==}
|
resolution: {integrity: sha512-I8oW2+QL5KJo8zXNWX046M134WchxsXC7SawLPvRQpogCbkyQIaFxPE89A2HiwR7vAK2Dm2ERBAmyjTYGYEpBg==}
|
||||||
hasBin: true
|
hasBin: true
|
||||||
@@ -2008,12 +2026,19 @@ packages:
|
|||||||
magicast@0.3.5:
|
magicast@0.3.5:
|
||||||
resolution: {integrity: sha512-L0WhttDl+2BOsybvEOLK7fW3UA0OQ0IQ2d6Zl2x/a6vVRs3bAY0ECOSHHeL5jD+SbOpOCUEi0y1DgHEn9Qn1AQ==}
|
resolution: {integrity: sha512-L0WhttDl+2BOsybvEOLK7fW3UA0OQ0IQ2d6Zl2x/a6vVRs3bAY0ECOSHHeL5jD+SbOpOCUEi0y1DgHEn9Qn1AQ==}
|
||||||
|
|
||||||
|
markdown-it@14.1.0:
|
||||||
|
resolution: {integrity: sha512-a54IwgWPaeBCAAsv13YgmALOF1elABB08FxO9i+r4VFk5Vl4pKokRPeX8u5TCgSsPi6ec1otfLjdOpVcgbpshg==}
|
||||||
|
hasBin: true
|
||||||
|
|
||||||
mdn-data@2.0.28:
|
mdn-data@2.0.28:
|
||||||
resolution: {integrity: sha512-aylIc7Z9y4yzHYAJNuESG3hfhC+0Ibp/MAMiaOZgNv4pmEdFyfZhhhny4MNiAfWdBQ1RQ2mfDWmM1x8SvGyp8g==}
|
resolution: {integrity: sha512-aylIc7Z9y4yzHYAJNuESG3hfhC+0Ibp/MAMiaOZgNv4pmEdFyfZhhhny4MNiAfWdBQ1RQ2mfDWmM1x8SvGyp8g==}
|
||||||
|
|
||||||
mdn-data@2.0.30:
|
mdn-data@2.0.30:
|
||||||
resolution: {integrity: sha512-GaqWWShW4kv/G9IEucWScBx9G1/vsFZZJUO+tD26M8J8z3Kw5RDQjaoZe03YAClgeS/SWPOcb4nkFBTEi5DUEA==}
|
resolution: {integrity: sha512-GaqWWShW4kv/G9IEucWScBx9G1/vsFZZJUO+tD26M8J8z3Kw5RDQjaoZe03YAClgeS/SWPOcb4nkFBTEi5DUEA==}
|
||||||
|
|
||||||
|
mdurl@2.0.0:
|
||||||
|
resolution: {integrity: sha512-Lf+9+2r+Tdp5wXDXC4PcIBjTDtq4UKjCPMQhKIuzpJNW0b96kVqSwW0bT7FhRSfmAiFYgP+SCRvdrDozfh0U5w==}
|
||||||
|
|
||||||
merge-stream@2.0.0:
|
merge-stream@2.0.0:
|
||||||
resolution: {integrity: sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==}
|
resolution: {integrity: sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==}
|
||||||
|
|
||||||
@@ -2531,6 +2556,10 @@ packages:
|
|||||||
protocols@2.0.1:
|
protocols@2.0.1:
|
||||||
resolution: {integrity: sha512-/XJ368cyBJ7fzLMwLKv1e4vLxOju2MNAIokcr7meSaNcVbWz/CPcW22cP04mwxOErdA5mwjA8Q6w/cdAQxVn7Q==}
|
resolution: {integrity: sha512-/XJ368cyBJ7fzLMwLKv1e4vLxOju2MNAIokcr7meSaNcVbWz/CPcW22cP04mwxOErdA5mwjA8Q6w/cdAQxVn7Q==}
|
||||||
|
|
||||||
|
punycode.js@2.3.1:
|
||||||
|
resolution: {integrity: sha512-uxFIHU0YlHYhDQtV4R9J6a52SLx28BCjT+4ieh7IGbgwVJWO+km431c4yRlREUAsAmt/uMjQUyQHNEPf0M39CA==}
|
||||||
|
engines: {node: '>=6'}
|
||||||
|
|
||||||
queue-microtask@1.2.3:
|
queue-microtask@1.2.3:
|
||||||
resolution: {integrity: sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==}
|
resolution: {integrity: sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==}
|
||||||
|
|
||||||
@@ -2867,6 +2896,9 @@ packages:
|
|||||||
engines: {node: '>=14.17'}
|
engines: {node: '>=14.17'}
|
||||||
hasBin: true
|
hasBin: true
|
||||||
|
|
||||||
|
uc.micro@2.1.0:
|
||||||
|
resolution: {integrity: sha512-ARDJmphmdvUk6Glw7y9DQ2bFkKBHwQHLi2lsaH6PPmz/Ka9sFOBsBluozhDltWmnv9u/cF6Rt87znRTPV+yp/A==}
|
||||||
|
|
||||||
ufo@1.5.4:
|
ufo@1.5.4:
|
||||||
resolution: {integrity: sha512-UsUk3byDzKd04EyoZ7U4DOlxQaD14JUKQl6/P7wiX4FNvUfm3XL246n9W5AmqwW5RSFJ27NAuM0iLscAOYUiGQ==}
|
resolution: {integrity: sha512-UsUk3byDzKd04EyoZ7U4DOlxQaD14JUKQl6/P7wiX4FNvUfm3XL246n9W5AmqwW5RSFJ27NAuM0iLscAOYUiGQ==}
|
||||||
|
|
||||||
@@ -4177,12 +4209,21 @@ snapshots:
|
|||||||
|
|
||||||
'@types/katex@0.16.7': {}
|
'@types/katex@0.16.7': {}
|
||||||
|
|
||||||
|
'@types/linkify-it@5.0.0': {}
|
||||||
|
|
||||||
'@types/lodash-es@4.17.12':
|
'@types/lodash-es@4.17.12':
|
||||||
dependencies:
|
dependencies:
|
||||||
'@types/lodash': 4.17.14
|
'@types/lodash': 4.17.14
|
||||||
|
|
||||||
'@types/lodash@4.17.14': {}
|
'@types/lodash@4.17.14': {}
|
||||||
|
|
||||||
|
'@types/markdown-it@14.1.2':
|
||||||
|
dependencies:
|
||||||
|
'@types/linkify-it': 5.0.0
|
||||||
|
'@types/mdurl': 2.0.0
|
||||||
|
|
||||||
|
'@types/mdurl@2.0.0': {}
|
||||||
|
|
||||||
'@types/node@22.10.5':
|
'@types/node@22.10.5':
|
||||||
dependencies:
|
dependencies:
|
||||||
undici-types: 6.20.0
|
undici-types: 6.20.0
|
||||||
@@ -5296,6 +5337,10 @@ snapshots:
|
|||||||
|
|
||||||
lilconfig@3.1.3: {}
|
lilconfig@3.1.3: {}
|
||||||
|
|
||||||
|
linkify-it@5.0.0:
|
||||||
|
dependencies:
|
||||||
|
uc.micro: 2.1.0
|
||||||
|
|
||||||
listhen@1.9.0:
|
listhen@1.9.0:
|
||||||
dependencies:
|
dependencies:
|
||||||
'@parcel/watcher': 2.5.0
|
'@parcel/watcher': 2.5.0
|
||||||
@@ -5354,10 +5399,21 @@ snapshots:
|
|||||||
'@babel/types': 7.26.5
|
'@babel/types': 7.26.5
|
||||||
source-map-js: 1.2.1
|
source-map-js: 1.2.1
|
||||||
|
|
||||||
|
markdown-it@14.1.0:
|
||||||
|
dependencies:
|
||||||
|
argparse: 2.0.1
|
||||||
|
entities: 4.5.0
|
||||||
|
linkify-it: 5.0.0
|
||||||
|
mdurl: 2.0.0
|
||||||
|
punycode.js: 2.3.1
|
||||||
|
uc.micro: 2.1.0
|
||||||
|
|
||||||
mdn-data@2.0.28: {}
|
mdn-data@2.0.28: {}
|
||||||
|
|
||||||
mdn-data@2.0.30: {}
|
mdn-data@2.0.30: {}
|
||||||
|
|
||||||
|
mdurl@2.0.0: {}
|
||||||
|
|
||||||
merge-stream@2.0.0: {}
|
merge-stream@2.0.0: {}
|
||||||
|
|
||||||
merge2@1.4.1: {}
|
merge2@1.4.1: {}
|
||||||
@@ -6041,6 +6097,8 @@ snapshots:
|
|||||||
|
|
||||||
protocols@2.0.1: {}
|
protocols@2.0.1: {}
|
||||||
|
|
||||||
|
punycode.js@2.3.1: {}
|
||||||
|
|
||||||
queue-microtask@1.2.3: {}
|
queue-microtask@1.2.3: {}
|
||||||
|
|
||||||
queue-tick@1.0.1: {}
|
queue-tick@1.0.1: {}
|
||||||
@@ -6398,6 +6456,8 @@ snapshots:
|
|||||||
|
|
||||||
typescript@5.7.3: {}
|
typescript@5.7.3: {}
|
||||||
|
|
||||||
|
uc.micro@2.1.0: {}
|
||||||
|
|
||||||
ufo@1.5.4: {}
|
ufo@1.5.4: {}
|
||||||
|
|
||||||
ultrahtml@1.5.3: {}
|
ultrahtml@1.5.3: {}
|
||||||
|
|||||||
@@ -0,0 +1,38 @@
|
|||||||
|
const testData = `---
|
||||||
|
tags:
|
||||||
|
- think
|
||||||
|
date: 2020-10-07
|
||||||
|
---
|
||||||
|
|
||||||
|
# 为何是秦灭六国,统一天下
|
||||||
|
|
||||||
|
*刚刚与网友谈到这个话题。
|
||||||
|
史书总是把王朝兴衰全归因于“人”,我更愿意相信其主因是“天”。
|
||||||
|
所以,我更“青睐”把王朝更替与气候变化关联起来的相关学说。*
|
||||||
|
|
||||||
|
**以下为爱好者臆测“为何是秦灭六国,一统天下”的原因(由于是爱好者,并不打算详细论证^_^)**
|
||||||
|
|
||||||
|
### 天
|
||||||
|
春秋战国时期大降温(看图)。
|
||||||
|

|
||||||
|
[来源链接](http://www.360doc.com/content/15/0616/06/17132703_478419907.shtml)
|
||||||
|
估计北方的诸侯收成都不好吧,没有找到战国时期天灾的相关资料。[期待这本书验证](https://baike.baidu.com/item/%E4%B8%89%E5%8D%83%E5%B9%B4%E5%A4%A9%E7%81%BE/12292062?fr=aladdin)
|
||||||
|
|
||||||
|
### 地
|
||||||
|
公元前316年秦灭巴蜀,得成都平原。
|
||||||
|
约公元前256开建都江堰,使成都平原得"天府之国"美称,成为秦国粮仓。纬度偏南,地理优势。
|
||||||
|

|
||||||
|
那为啥不是楚灭六国呢?
|
||||||
|
猜测原因是:文明主要在北方形成(黄河流域),当时南方绝大部分是蛮荒之地,开发不够。
|
||||||
|
后面两千年,每次大降温(游牧民族必然兴起),导致经济都往南迁移,直到宋朝,南方经济才超过北方,明朝才能成为首个逆袭北方统一中国的王朝。
|
||||||
|
|
||||||
|
### 人
|
||||||
|
商鞅变法(公元前475~公元前221年),史料很多不多说了。
|
||||||
|
|
||||||
|
***公元前221年,秦灭六国***`
|
||||||
|
|
||||||
|
export default defineEventHandler(async (event) => {
|
||||||
|
const body = await readBody(event)
|
||||||
|
const data = `# ${body.id}\n${testData}`
|
||||||
|
return { data }
|
||||||
|
})
|
||||||
File renamed without changes.
+1
-1
@@ -8,7 +8,7 @@
|
|||||||
"server/**/*",
|
"server/**/*",
|
||||||
"style/**/*",
|
"style/**/*",
|
||||||
"utils/**/*",
|
"utils/**/*",
|
||||||
".nuxt/**/*",
|
".nuxt/*.d.ts",
|
||||||
"types/**/*"
|
"types/**/*"
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
Reference in new issue
Block a user