Skip to content

Commit b7f6bae

Browse files
committed
initial submission
1 parent 1cc92bf commit b7f6bae

29 files changed

+2607
-0
lines changed

.editorconfig

+13
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
root = true
2+
3+
[*]
4+
charset = utf-8
5+
end_of_line = lf
6+
indent_size = 2
7+
indent_style = space
8+
insert_final_newline = true
9+
trim_trailing_whitespace = true
10+
11+
[*.md]
12+
insert_final_newline = false
13+
trim_trailing_whitespace = false

.gitignore

+33
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,33 @@
1+
# 不同环境下产生的日志
2+
logs
3+
*.log
4+
npm-debug.log*
5+
yarn-debug.log*
6+
yarn-error.log*
7+
pnpm-debug.log*
8+
lerna-debug.log*
9+
10+
.cache
11+
.eslintcache
12+
.stylelintcache
13+
14+
# 项目构建相关的文件
15+
node_modules
16+
dist
17+
dist-ssr
18+
*.local
19+
20+
# 忽略自动生成的文件
21+
/src/types/auto-imports.d.ts
22+
/src/types/components.d.ts
23+
node_modules/
24+
pnpm-lock.yaml
25+
26+
# 编辑器相关的文件
27+
.idea
28+
.DS_Store
29+
*.suo
30+
*.ntvs*
31+
*.njsproj
32+
*.sln
33+
*.sw?

README.md

+91
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,91 @@
1+
2+
# SoftLaunch - 应用分发页面
3+
![License](https://img.shields.io/badge/License-MIT-green.svg)
4+
![Platform](https://img.shields.io/badge/Platform-Windows%20%7C%20macOS%20%7C%20Linux-blue.svg)
5+
6+
## 简介 📖
7+
这是一个简洁易用的**应用分发页面**,用户可以在此页面上下载适用于不同平台(Windows、macOS、Linux、iOS)的客户端。该页面旨在为用户提供快速的下载体验,帮助他们轻松获取所需的软件版本。
8+
9+
## 功能特点 ✨
10+
- 支持多平台客户端下载(Windows、macOS、Linux、iOS)
11+
- 清晰的下载链接和版本管理
12+
- 响应式设计,适配不同设备
13+
- 自动检测设备加载Tab标签
14+
- 轻量、快速,易于部署和使用
15+
16+
该项目主要采用 Nuxt.js 3 作为核心框架,结合 Vue 3 和 TypeScript 开发,使用 Arco Design 作为 UI 组件库,Markdown-it 和相关插件用于 Markdown 内容的处理和渲染。
17+
18+
## 截图 🖼️
19+
![](https://io.onenov.cn/file/202410211536865.png)
20+
![](https://io.onenov.cn/file/202410211536832.png)
21+
![](https://io.onenov.cn/file/202410211537633.png)
22+
23+
---
24+
25+
## 配置文件
26+
27+
### public/version.json
28+
#### JSON 参数描述
29+
- **NAME**
30+
- **描述**: 软件的名称。
31+
- **作用**: 用于标识应用程序的名称。
32+
- **INTRODUCTION**
33+
- **描述**: 软件的简短介绍,通常是一句口号或核心理念。
34+
- **DESCRIPTION**
35+
- **描述**: 软件的更详细描述或功能概述。
36+
- **作用**: 用于更具体地描述软件的特性或目标。
37+
- **APPLOGO**
38+
- **描述**: 软件的LOGO图片链接。
39+
- **作用**: 页面或应用展示时用于显示软件的图标。
40+
- **WEBSITE**
41+
- **描述**: 软件的官方网站URL。
42+
- **作用**: 用户可以通过这个链接访问软件的官方网站。
43+
- **XXX_VERSION**
44+
- **描述**: 客户端的版本号。
45+
- **作用**: 表示当前平台上发布的客户端版本号。
46+
- **XXX_CLIENT**
47+
- **描述**: 客户端的下载链接。
48+
- **XXX_SIZE**
49+
- **描述**: 客户端的文件大小。
50+
- **XXX_DATE**
51+
- **描述**: 版本的发布日期。
52+
- **XXX_SCREENSHOTS**
53+
- **描述**: 客户端的截图链接列表。
54+
55+
### public/welcome.md
56+
描述页面内容(Markdown)
57+
58+
### public/updatelog.md
59+
更新日志内容(Markdown)
60+
61+
---
62+
63+
## 部署方式 🚀
64+
你可以通过以下几种方式将该项目部署在自己的服务器上,或者直接[下载编译后的静态压缩包](https://github.com/onenov/SoftLaunch/releases)并编辑配置文件上传到你选择的服务器或静态页面托管。
65+
66+
### 1. 克隆项目
67+
首先,克隆该仓库到你的本地环境。
68+
```bash
69+
git clone https://github.com/onenov/SoftLaunch.git
70+
cd SoftLaunch
71+
```
72+
### 2. 安装依赖
73+
如果你使用的是 Node.js(假设你用的是前端框架如 React 或 Vue),你可以安装必要的依赖:
74+
```bash
75+
pnpm install
76+
```
77+
### 3. 启动开发服务器
78+
```bash
79+
pnpm run dev
80+
```
81+
### 4. 编译和构建
82+
```bash
83+
pnpm run build
84+
```
85+
### 5. 部署到生产环境
86+
`.output/public` 文件夹上传到你选择的服务器或静态页面托管服务上(如 GitHub Pages、Vercel、Netlify 等)。
87+
88+
---
89+
90+
## License 📜
91+
本项目基于 MIT 许可证,详情请参考 [LICENSE](./LICENSE)

app/app.config.ts

+6
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
export default defineAppConfig({
2+
ui: {
3+
primary: 'violet',
4+
gray: 'slate'
5+
}
6+
})

app/app.vue

+75
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,75 @@
1+
<script setup lang="ts">
2+
import { ref, onMounted, watch } from "vue";
3+
4+
// 定义版本数据
5+
const versionData = ref({
6+
NAME: '' // 初始值为空,等待加载
7+
});
8+
9+
// 获取版本数据
10+
async function fetchVersionData() {
11+
try {
12+
const response = await fetch('/version.json');
13+
if (response.ok) {
14+
const data = await response.json();
15+
versionData.value = data;
16+
} else {
17+
console.error('Failed to fetch version information.');
18+
}
19+
} catch (error) {
20+
console.error('Error fetching version information:', error);
21+
}
22+
}
23+
24+
// 当组件挂载时获取数据并加载 MathJax 脚本
25+
onMounted(() => {
26+
const script = document.createElement("script");
27+
script.type = "text/javascript";
28+
script.src = "https://io.onenov.cn/filter/css/tex-mml-chtml.js";
29+
script.async = true;
30+
script.onload = () => {
31+
window.MathJax = {
32+
tex: {
33+
inlineMath: [["$", "$"], ["\\(", "\\)"]],
34+
displayMath: [["$$", "$$"], ["\\[", "\\]"]]
35+
},
36+
svg: {
37+
fontCache: "global"
38+
}
39+
};
40+
};
41+
document.head.appendChild(script);
42+
43+
// 获取版本数据
44+
fetchVersionData();
45+
});
46+
47+
// 监听 versionData 的变化,并在 NAME 存在时更新 SEO title
48+
watch(versionData, (newValue) => {
49+
if (newValue.NAME) {
50+
useSeoMeta({
51+
title: newValue.NAME, // 仅设置 title 为 versionData.NAME
52+
});
53+
}
54+
});
55+
</script>
56+
57+
<template>
58+
<main>
59+
<NuxtPage />
60+
</main>
61+
62+
<NuxtLoadingIndicator class="!opacity-100" :throttle="0" />
63+
</template>
64+
65+
<style>
66+
.page-enter-active,
67+
.page-leave-active {
68+
transition: all 0.4s;
69+
}
70+
.page-enter-from,
71+
.page-leave-to {
72+
opacity: 0;
73+
filter: blur(1rem);
74+
}
75+
</style>

0 commit comments

Comments
 (0)