From 8e776cbc7cd823e4f72e9ad12592951e1fa3b14e Mon Sep 17 00:00:00 2001
From: "guoqi.sun" <sun412926@gmail.com>
Date: Tue, 13 Feb 2024 18:41:37 +0800
Subject: [PATCH] :zap: perf: optimize code structure

---
 src/App.vue | 297 +++++++++++++++++++++++++---------------------------
 1 file changed, 141 insertions(+), 156 deletions(-)

diff --git a/src/App.vue b/src/App.vue
index 29b89a4..a373f4a 100644
--- a/src/App.vue
+++ b/src/App.vue
@@ -2,8 +2,21 @@
 import { onMounted, reactive } from 'vue'
 import StarTrails from './components/StarTrails.vue'
 
-// 数据
 const data = reactive({
+  navLinks: [{
+    name: '博 客',
+    link: 'https://blog.sunguoqi.com',
+  }, {
+    name: '相 册',
+    link: 'https://camera.sunguoqi.com',
+  }, {
+    name: '运 动',
+    link: 'https://bicycling.sunguoqi.com',
+  }, {
+    name: '留 言',
+    link: 'https://blog.sunguoqi.com/comments',
+  }],
+
   myProjects: [{
     name: 'Home',
     description: '个人简介、主页、引导页',
@@ -41,18 +54,23 @@ const data = reactive({
     description: '前端项目起手架模版',
     link: 'https://github.com/sun0225SUN/starter',
   }],
-  navLinks: [{
-    name: '博 客',
-    link: 'https://blog.sunguoqi.com',
+
+  socialLinks: [{
+    icon: '<i i-ant-design-github-outlined />',
+    link: '',
+    label: 'Github',
   }, {
-    name: '相 册',
-    link: 'https://camera.sunguoqi.com',
+    icon: '<i i-ant-design-x-outlined />',
+    link: '',
+    label: 'Github',
   }, {
-    name: '运 动',
-    link: 'https://bicycling.sunguoqi.com',
+    icon: '<i i-ant-design-youtube-outlined />',
+    link: '',
+    label: 'Github',
   }, {
-    name: '留 言',
-    link: 'https://blog.sunguoqi.com/comments',
+    icon: '<i i-ant-design-bilibili-outlined />',
+    link: '',
+    label: 'Github',
   }],
 })
 
@@ -70,157 +88,124 @@ onMounted(() => {
 </script>
 
 <template>
-  <div id="background" absolute wh-full left-0 top-0>
-    <!-- 渐变 -->
-    <div to-black-500 absolute h-80vh w-full bottom--30vh left-0 from-black bg-gradient-to-t />
-    <!-- 星轨 -->
-    <StarTrails />
-    <!-- 拖底 -->
-    <div bg-black h-45vh />
-  </div>
-
-  <main bg-black bg-transparent absolute w-full top-0>
-    <div absolute w-full top-70vh>
-      <!-- 落地页 -->
-      <div ml-15vw>
-        <div text-10 text-white font-bold tracking-widest>
-          你所热爱的<br>
-          就是你的生活
-        </div>
-        <div flex items-center>
-          <div mr-4 flex gap-2>
-            <div bg-red rounded-full h-3 w-3 />
-            <div bg-yellow rounded-full h-3 w-3 />
-            <div bg-green rounded-full h-3 w-3 />
-          </div>
-          <div text-4 text-white tracking-widest>
-            小孙同学祝您今天快乐
-          </div>
-        </div>
-      </div>
-      <!-- 简介内容 -->
-      <div mx-10vw mt-70>
-        <div text-bold mb-4 ml-10 text-8 text-white>
-          About Me
-        </div>
-        <div mx-10 mb-10 flex justify-between>
-          <div class="text-white/80">
-            <p leading-8>
-              嗨,你好,我是小孙同学。
-            </p>
-            <p leading-8>
-              热爱编程、摄影、读书、旅行。
-            </p>
-            <p leading-8>
-              热爱计算机科学和 IT 互联网事业,希望能成为一名优秀的开发者。
-            </p>
-            <p leading-8>
-              我们正在让这个世界变得更加美好,通过代码的重复使用和延展构建完美体系。
-            </p>
-            <p leading-8>
-              We're making the world a better place. Through constructing elegant hierarchies for maximum code reuse and extensibility.
-            </p>
-          </div>
-          <div>
-            <img hidden rounded-full w-25 md:block src="https://blog.sunguoqi.com/images/avatar.jpg" alt="">
-          </div>
-        </div>
-        <!-- <div text-bold mb-2 ml-10 text-8 text-white>
-          My Skills
-        </div> -->
-        <div text-bold mb-2 ml-10 text-8 text-white>
-          Projects
-        </div>
-        <div mb-10 flex flex-wrap justify-between>
-          <div v-for="(item, index) in data.myProjects" :key="index" mx-10 my-4 class="basis-3/4 md:basis-1/6">
-            <a :href="item.link">
-              <div p-2 class="bg-white/5 hover:bg-white/10" rounded-lg shadow-md flex-col backdrop-blur-3xl backdrop-opacity-60 hover:skew-y-1 hover:backdrop-opacity-100>
-                <div class="text-white" text-bold opacity-75>
-                  {{ item.name }}
-                </div>
-                <div class="text-white" opacity-50>
-                  {{ item.description }}
-                </div>
-              </div>
-            </a>
-          </div>
-        </div>
-        <div text-bold mb-2 ml-10 text-8 text-white>
-          Find Me
-        </div>
-        <div flex flex-wrap justify-between>
-          <div mx-10 my-4 class="basis-1/6" hover:skew-y-1>
-            <div p-2 class="bg-white/5 hover:bg-white/10" rounded-lg shadow-md flex-col justify-between items-center backdrop-blur-3xl backdrop-opacity-60 hover:skew-y-1 hover:backdrop-opacity-100>
-              <a href="https://github.com/sun0225SUN">
-                <div mb-1 text-white f-c-c>
-                  <i i-ant-design-github-outlined />
-                </div>
-                <div text-bold opacity-75 text-white>
-                  Github
-                </div>
-              </a>
-            </div>
-          </div>
-          <div mx-10 my-4 class="basis-1/6" hover:skew-y-1>
-            <div p-2 class="bg-white/5 hover:bg-white/10" rounded-lg shadow-md flex-col justify-between items-center backdrop-blur-3xl backdrop-opacity-60 hover:skew-y-1 hover:backdrop-opacity-100>
-              <a href="https://twitter.com/sun0225SUN">
-                <div mb-1 text-white f-c-c>
-                  <i i-ant-design-x-outlined />
-                </div>
-                <div text-bold opacity-75 text-white>
-                  Twitter
-                </div>
-              </a>
-            </div>
-          </div>
-          <div mx-10 my-4 class="basis-1/6" hover:skew-y-1>
-            <div p-2 class="bg-white/5 hover:bg-white/10" rounded-lg shadow-md flex-col justify-between items-center backdrop-blur-3xl backdrop-opacity-60 hover:skew-y-1 hover:backdrop-opacity-100>
-              <a href="https://youtube.com/@sun0225SUN">
-                <div mb-1 text-white f-c-c>
-                  <i i-ant-design-youtube-outlined />
-                </div>
-                <div text-bold opacity-75 text-white>
-                  YouTube
-                </div>
-              </a>
-            </div>
-          </div>
-          <div mx-10 my-4 class="basis-1/6" hover:skew-y-1>
-            <div p-2 class="bg-white/5 hover:bg-white/10" rounded-lg shadow-md flex-col justify-between items-center backdrop-blur-3xl backdrop-opacity-60 hover:skew-y-1 hover:backdrop-opacity-100>
-              <a href="https://space.bilibili.com/448488855/">
-                <div mb-1 text-white f-c-c>
-                  <i i-ant-design-bilibili-outlined />
-                </div>
-                <div text-bold opacity-75 text-white>
-                  Bilibili
-                </div>
-              </a>
-            </div>
-          </div>
-        </div>
-      </div>
-
-      <footer>
-        <div mt-20 f-c-c class="text-white/60" hover:skew-y-1>
-          <i i-ant-design-environment-outlined mr-1 />
-          <div>路虽远行则将至,事虽难做则必成</div>
-          <i i-ant-design-environment-outlined ml-1 />
-        </div>
-        <div mt-2 f-c-c class="text-white/60" gap-4>
-          <div>皖 ICP 备 2021010058 号</div>
-          <div>© 2024 小孙同学</div>
-        </div>
-      </footer>
-    </div>
-  </main>
-
-  <nav absolute fixed bottom-4 left-4>
+  <!-- 导航 -->
+  <nav absolute fixed bottom-4 left-4 z-20>
     <div v-for="(item, index) in data.navLinks" :key="index" my-6 text-3 text-white wv>
-      <a class="text-white" :href="item.link" opacity-75 tracking-widest hover:opacity-100>
+      <a :href="item.link" opacity-75 text-white tracking-widest hover:opacity-100>
         {{ item.name }}
       </a>
     </div>
   </nav>
+
+  <!-- 主体 -->
+  <main bg-transparent absolute w-full top-72vh z-10>
+    <!-- 大标题 -->
+    <section ml-15vw absolute>
+      <div text-10 text-white font-bold tracking-widest>
+        你所热爱的<br>
+        就是你的生活
+      </div>
+      <div flex items-center>
+        <div mr-4 flex gap-2>
+          <div bg-red rounded-full h-3 w-3 />
+          <div bg-yellow rounded-full h-3 w-3 />
+          <div bg-green rounded-full h-3 w-3 />
+        </div>
+        <div text-4 text-white tracking-widest>
+          小孙同学祝您今天快乐
+        </div>
+      </div>
+    </section>
+    <!-- 个人简介 -->
+    <section mx-9vw mt-110>
+      <!-- 关于我 -->
+      <div text-bold mb-4 ml-10 text-8 text-white>
+        About Me
+      </div>
+      <div mx-10 mb-10 flex justify-between>
+        <div class="text-white/80">
+          <p leading-8>
+            嗨,你好,我是小孙同学。
+          </p>
+          <p leading-8>
+            热爱编程、摄影、读书、旅行。
+          </p>
+          <p leading-8>
+            热爱计算机科学和 IT 互联网事业,希望能成为一名优秀的开发者。
+          </p>
+          <p leading-8>
+            我们正在让这个世界变得更加美好,通过代码的重复使用和延展构建完美体系。
+          </p>
+          <p leading-8>
+            We're making the world a better place. Through constructing elegant hierarchies for maximum code reuse and extensibility.
+          </p>
+        </div>
+        <div>
+          <img hidden rounded-full w-25 md:block src="https://blog.sunguoqi.com/images/avatar.jpg" alt="avatar">
+        </div>
+      </div>
+
+      <!-- 我的技能 -->
+      <!-- <div text-bold mb-2 ml-10 text-8 text-white>
+          My Skills
+        </div> -->
+
+      <!-- 我的项目 -->
+      <div text-bold mb-2 ml-10 text-8 text-white>
+        Projects
+      </div>
+      <div mb-10 flex flex-wrap justify-between>
+        <div v-for="(item, index) in data.myProjects" :key="index" mx-10 my-4 class="basis-3/4 md:basis-1/6">
+          <a :href="item.link">
+            <div p-2 class="bg-white/5 hover:bg-white/10" rounded-lg shadow-md flex-col backdrop-blur-3xl backdrop-opacity-60 hover:skew-y-1 hover:backdrop-opacity-100>
+              <div class="text-white" text-bold opacity-75>
+                {{ item.name }}
+              </div>
+              <div class="text-white" opacity-50>
+                {{ item.description }}
+              </div>
+            </div>
+          </a>
+        </div>
+      </div>
+
+      <!-- 社交链接 -->
+      <div text-bold mb-2 ml-10 text-8 text-white>
+        Find Me
+      </div>
+      <div flex flex-wrap justify-between>
+        <div v-for="(item, index) in data.socialLinks" :key="index" mx-10 my-4 class="basis-1/6" hover:skew-y-1>
+          <div p-2 class="bg-white/5 hover:bg-white/10" rounded-lg shadow-md flex-col justify-between items-center backdrop-blur-3xl backdrop-opacity-60 hover:skew-y-1 hover:backdrop-opacity-100>
+            <a :href="item.link">
+              <div mb-1 text-white f-c-c v-html="item.icon" />
+              <div text-bold opacity-75 text-white>{{ item.label }}</div>
+            </a>
+          </div>
+        </div>
+      </div>
+    </section>
+
+    <!-- 底部 -->
+    <footer>
+      <div mt-20 f-c-c class="text-white/60" hover:skew-y-1>
+        <i i-ant-design-environment-outlined mr-1 />
+        <div>路虽远行则将至,事虽难做则必成</div>
+        <i i-ant-design-environment-outlined ml-1 />
+      </div>
+      <div mt-2 f-c-c class="text-white/60" gap-4>
+        <div>皖 ICP 备 2021010058 号</div>
+        <div>© 2024 小孙同学</div>
+      </div>
+    </footer>
+  </main>
+
+  <!-- 背景 -->
+  <div id="background" absolute wh-full left-0 top-0 z-0>
+    <!-- 渐变阴影 -->
+    <div to-black-500 absolute h-80vh w-full bottom--30vh left-0 from-black bg-gradient-to-t />
+    <!-- 星轨背景 -->
+    <StarTrails pb-45vh bg-black />
+  </div>
 </template>
 
 <style lang="scss" scoped>