Merge branch 'master' into dev
This commit is contained in:
@@ -22,10 +22,10 @@
|
||||
</div>
|
||||
|
||||
<p align="center">
|
||||
<br/>
|
||||
<a href="https://skywork.ai/p/GrXQb4"><img src="/public/skywork-ai.png" alt="License"></a>
|
||||
Skywork.AI:<a href="https://skywork.ai/p/GrXQb4" target="_blank">10 tasks in 1 hour, not 10 hours →Limited free spots: 127 left</a>
|
||||
<br/>
|
||||
<br>
|
||||
<a href="https://skywork.ai/p/GrXQb4"><img src="/public/skywork-ai.png" alt="License" style="width: 650px;"></a>
|
||||
<br>
|
||||
赞助: <a href="https://skywork.ai/p/GrXQb4" target="_blank">Skywork.AI: 10 tasks in 1 hour, not 10 hours →Limited free spots: 127 left</a>
|
||||
<br/>
|
||||
<br/>
|
||||
</p>
|
||||
|
||||
@@ -26,13 +26,13 @@ Practice English, one strike, one step forward
|
||||
|
||||
|
||||
<p align="center">
|
||||
<br/>
|
||||
<a href="https://skywork.ai/p/GrXQb4"><img src="/public/skywork-ai.png" alt="License"></a>
|
||||
Skywork.AI:<a href="https://skywork.ai/p/GrXQb4" target="_blank">10 tasks in 1 hour, not 10 hours →Limited free spots: 127 left</a>
|
||||
<br>
|
||||
<a href="https://skywork.ai/p/GrXQb4"><img src="/public/skywork-ai.png" alt="License" style="width: 650px;"></a>
|
||||
<br>
|
||||
Sponsor: <a href="https://skywork.ai/p/GrXQb4" target="_blank">Skywork.AI: 10 tasks in 1 hour, not 10 hours →Limited free spots: 127 left</a>
|
||||
<br/>
|
||||
<br/>
|
||||
<br/>
|
||||
</p>
|
||||
</p>
|
||||
|
||||
<img width="1920" height="1440" alt="295shots_so" src="https://github.com/user-attachments/assets/383ed437-856e-48fe-92b0-9619babb49be" />
|
||||
<img width="1920" height="1440" alt="922shots_so" src="https://github.com/user-attachments/assets/5b5fa13f-747c-4368-ae21-3c9d7d30fbc7" />
|
||||
|
||||
@@ -35,6 +35,7 @@
|
||||
<link rel="apple-touch-icon" sizes="180x180" href="/favicon.png"/>
|
||||
<!-- 设置浏览器地址栏颜色(在 Android Chrome 特别明显)。-->
|
||||
<meta name="theme-color" content="#818CF8"/>
|
||||
<link rel="manifest" href="/manifest.json">
|
||||
|
||||
<!-- 阻止 iOS 自动把数字识别为电话号码。-->
|
||||
<!-- HandheldFriendly 和 MobileOptimized 是旧手机浏览器的优化提示(现在作用不大)。-->
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
<!doctype html>
|
||||
<html lang="en">
|
||||
<html lang="zh-CN">
|
||||
<head>
|
||||
<meta charset="UTF-8"/>
|
||||
<title>Type Words 官网 - 词文记 | 单词跟打 · 文章跟打</title>
|
||||
@@ -35,6 +35,7 @@
|
||||
<link rel="apple-touch-icon" sizes="180x180" href="/favicon.png" />
|
||||
<!-- 设置浏览器地址栏颜色(在 Android Chrome 特别明显)。-->
|
||||
<meta name="theme-color" content="#818CF8" />
|
||||
<link rel="manifest" href="/manifest.json">
|
||||
|
||||
<!-- 阻止 iOS 自动把数字识别为电话号码。-->
|
||||
<!-- HandheldFriendly 和 MobileOptimized 是旧手机浏览器的优化提示(现在作用不大)。-->
|
||||
|
||||
@@ -71,6 +71,7 @@
|
||||
//修改的进度条底色
|
||||
--color-progress-bar: #d1d5df !important;
|
||||
|
||||
--color-label-bg: whitesmoke;
|
||||
--color-link: rgb(64, 158, 255)
|
||||
}
|
||||
|
||||
@@ -121,6 +122,8 @@ html.dark {
|
||||
|
||||
--color-progress-bar: rgb(73, 77, 82) !important;
|
||||
|
||||
--color-label-bg: rgb(10, 10, 10);
|
||||
|
||||
.footer {
|
||||
&.hide {
|
||||
--color-progress-bar: var(--color-third) !important;
|
||||
|
||||
@@ -65,7 +65,7 @@ const studyProgress = $computed(() => {
|
||||
top: 4px;
|
||||
right: -22px;
|
||||
padding: 1px 20px;
|
||||
background: whitesmoke;
|
||||
background: var(--color-label-bg);
|
||||
font-size: 11px;
|
||||
transform: rotate(45deg);
|
||||
}
|
||||
|
||||
13
src/main.ts
13
src/main.ts
@@ -23,3 +23,16 @@ app.directive('opacity', (el, binding) => {
|
||||
app.directive('loading', loadingDirective)
|
||||
|
||||
app.mount('#app')
|
||||
|
||||
// 注册Service Worker(pwa支持)
|
||||
if ('serviceWorker' in navigator) {
|
||||
window.addEventListener('load', () => {
|
||||
navigator.serviceWorker.register('/service-worker.js')
|
||||
.then(registration => {
|
||||
console.log('ServiceWorker registration successful with scope: ', registration.scope);
|
||||
})
|
||||
.catch(err => {
|
||||
console.log('ServiceWorker registration failed: ', err);
|
||||
});
|
||||
});
|
||||
}
|
||||
|
||||
@@ -1,239 +0,0 @@
|
||||
<script setup lang="ts">
|
||||
import {GITHUB, ProjectName} from "@/config/env.ts";
|
||||
import BaseButton from "@/components/BaseButton.vue";
|
||||
import BaseIcon from "@/components/BaseIcon.vue";
|
||||
import {defineAsyncComponent} from "vue";
|
||||
|
||||
const Dialog = defineAsyncComponent(() => import('@/components/dialog/Dialog.vue'))
|
||||
let showWechatDialog = $ref(false)
|
||||
let showXhsDialog = $ref(false)
|
||||
</script>
|
||||
|
||||
<template>
|
||||
<div class="flex flex-col justify-between min-h-screen">
|
||||
<div class="center flex-col gap-8">
|
||||
<h1>{{ ProjectName }}</h1>
|
||||
<div class="text-center -mt-10">
|
||||
<h2>学习英语,一次敲击,一点进步</h2>
|
||||
<h2>记忆不再盲目,学习更高效,开源单词与文章练习工具</h2>
|
||||
</div>
|
||||
<div class="flex">
|
||||
<BaseButton size="large" @click="$router.push('/words')">单词练习</BaseButton>
|
||||
<BaseButton size="large" @click="$router.push('/articles')">文章练习</BaseButton>
|
||||
</div>
|
||||
|
||||
<div class="center justify-center flex-col gap-2 w-full mb-4">
|
||||
<a href="https://skywork.ai/p/GrXQb4" class="w-60vw" target="_blank"><img src="/skywork-ai.png" alt="Skywork.AI" class="w-full rounded-lg"></a>
|
||||
<span>Skywork.AI:<a href="https://skywork.ai/p/GrXQb4" class="color-blue!" target="_blank">10 tasks in 1 hour, not 10 hours →Limited free spots: 127 left</a></span>
|
||||
</div>
|
||||
<div class="w-60vw">
|
||||
<div class="flex mb-5 gap-space">
|
||||
<div class="card">
|
||||
<div class="emoji">📚</div>
|
||||
<div class="title">单词练习</div>
|
||||
<div class="desc">
|
||||
<ul>
|
||||
<li>三种输入模式:跟打 / 复习 / 默写</li>
|
||||
<li>智能模式:智能规划复习与默写</li>
|
||||
<li>自由模式:不受限制,自行规划</li>
|
||||
</ul>
|
||||
</div>
|
||||
</div>
|
||||
<div class="card">
|
||||
<div class="emoji">✍️</div>
|
||||
<div class="title">文章练习</div>
|
||||
<div class="desc">
|
||||
<ul>
|
||||
<li>内置常见书籍,也可自行添加文章</li>
|
||||
<li>跟打 + 默写双模式,让背诵更高效</li>
|
||||
<li>支持边听边默写,强化记忆</li>
|
||||
</ul>
|
||||
</div>
|
||||
</div>
|
||||
<div class="card">
|
||||
<div class="emoji">📕</div>
|
||||
<div class="title">收藏、错词本、已掌握</div>
|
||||
<div class="desc">
|
||||
<ul>
|
||||
<li>输入错误自动添加到错词本</li>
|
||||
<li>主动添加到已掌握,后续自动跳过</li>
|
||||
<li>主动添加到收藏中,以便巩固复习</li>
|
||||
</ul>
|
||||
</div>
|
||||
</div>
|
||||
<div class="card">
|
||||
<div class="emoji">🌐</div>
|
||||
<div class="title">海量词库</div>
|
||||
<div class="desc">
|
||||
内置小学、初中、高中、四六级、考研、雅思、托福、GRE、GMAT、SAT、BEC、专四、专八等词库
|
||||
</div>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
<div class="flex gap-space">
|
||||
<div class="card">
|
||||
<div class="emoji">🆓</div>
|
||||
<div class="title">免费开源</div>
|
||||
<div class="desc">
|
||||
<ul>
|
||||
<li>完全开源,可审查、可修改</li>
|
||||
<li>免费使用</li>
|
||||
<li>私有部署</li>
|
||||
</ul>
|
||||
</div>
|
||||
</div>
|
||||
<div class="card">
|
||||
<div class="emoji">⚙️</div>
|
||||
<div class="title">高度自由</div>
|
||||
<div class="desc">
|
||||
<ul>
|
||||
<li>丰富的键盘音效</li>
|
||||
<li>可自定义快捷键</li>
|
||||
<li>高度定制化的设置选项</li>
|
||||
</ul>
|
||||
</div>
|
||||
</div>
|
||||
<div class="card">
|
||||
<div class="emoji">🎨</div>
|
||||
<div class="title">简洁高效</div>
|
||||
<div class="desc">
|
||||
<ul>
|
||||
<li>简洁设计,现代化UI,无广告</li>
|
||||
<li>界面清爽,操作简单</li>
|
||||
<li>不强制关注任何平台</li>
|
||||
</ul>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="card">
|
||||
<div class="emoji">🎯</div>
|
||||
<div class="title">个性学习</div>
|
||||
<div class="desc">
|
||||
<ul>
|
||||
<li>自由添加词典与文章</li>
|
||||
<li>定制个性学习计划</li>
|
||||
<li>多种学习复习策略</li>
|
||||
</ul>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="w-60vw text-center" v-if="false">
|
||||
<h3 class="text-4xl">单词练习</h3>
|
||||
<img src="/word.png" alt="word.png" class="w-full rounded-xl">
|
||||
<h3 class="text-4xl">文章练习</h3>
|
||||
<img src="/article.png" alt="article.png" class="w-full rounded-xl">
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="center gap-space my-10 bottom">
|
||||
<div class="center gap-1">
|
||||
<a
|
||||
:href="GITHUB"
|
||||
target="_blank"
|
||||
rel="noreferrer"
|
||||
aria-label="GITHUB 项目地址">
|
||||
<BaseIcon>
|
||||
<IconSimpleIconsGithub/>
|
||||
</BaseIcon>
|
||||
</a>
|
||||
|
||||
<BaseIcon @click="showWechatDialog = true">
|
||||
<IconSimpleIconsWechat/>
|
||||
</BaseIcon>
|
||||
<BaseIcon @click="showXhsDialog = true" >
|
||||
<IconSimpleIconsXiaohongshu/>
|
||||
</BaseIcon>
|
||||
<a
|
||||
href="https://x.com/typewords2"
|
||||
target="_blank"
|
||||
rel="noreferrer"
|
||||
aria-label="关注我的 X 账户 typewords2">
|
||||
<BaseIcon>
|
||||
<IconRiTwitterFill/>
|
||||
</BaseIcon>
|
||||
</a>
|
||||
<a
|
||||
href="mailto:zyronon@163.com"
|
||||
target="_blank"
|
||||
rel="noreferrer"
|
||||
aria-label="发送邮件到 zyronon@163.com">
|
||||
<BaseIcon>
|
||||
<IconMaterialSymbolsMail/>
|
||||
</BaseIcon>
|
||||
</a>
|
||||
</div>
|
||||
<div>蜀ICP备2025157466号</div>
|
||||
</div>
|
||||
|
||||
<Dialog v-model="showWechatDialog" title="Type Words 交流群">
|
||||
<div class="w-120 p-6 pt-0">
|
||||
<div class="mb-4">
|
||||
加入我们的用户社群后,您可以与我们的开发团队进行沟通,分享您的使用体验和建议,帮助我们改进产品,同时也能够及时了解我们的最新动态和更新内容。
|
||||
</div>
|
||||
<div class="text-center">
|
||||
<img src="/wechat.png" alt="微信群二维码" class="w-60 rounded-lg">
|
||||
</div>
|
||||
</div>
|
||||
</Dialog>
|
||||
<Dialog v-model="showXhsDialog" title="小红书">
|
||||
<div class="w-120 p-6 pt-0">
|
||||
<div class="mb-4">
|
||||
关注小红书后,您可以获得开发团队的最新动态和更新内容,反馈您的使用体验和建议,帮助我们改进产品,同时也能够及时了解我们的最新动态和更新内容。
|
||||
</div>
|
||||
<div class="text-center">
|
||||
<img src="/xhs.png" alt="小红书二维码" class="w-60 rounded-lg">
|
||||
</div>
|
||||
</div>
|
||||
</Dialog>
|
||||
</div>
|
||||
</template>
|
||||
<style scoped lang="scss">
|
||||
h1 {
|
||||
font-size: 5rem;
|
||||
background: linear-gradient(120deg, #bd34fe 30%, #41d1ff);
|
||||
-webkit-text-fill-color: transparent;
|
||||
-webkit-background-clip: text;
|
||||
background-clip: text;
|
||||
color: transparent;
|
||||
margin: 2rem;
|
||||
}
|
||||
|
||||
h2 {
|
||||
margin: 0;
|
||||
}
|
||||
|
||||
h3:first-child {
|
||||
margin-top: 0;
|
||||
}
|
||||
|
||||
.card {
|
||||
@apply flex flex-col items-start gap-2 mb-0 w-25%;
|
||||
.emoji {
|
||||
display: inline-block;
|
||||
background: var(--color-third);
|
||||
padding: .6rem;
|
||||
border-radius: 0.4rem;
|
||||
font-size: 1.5rem;
|
||||
}
|
||||
|
||||
.title {
|
||||
font-weight: bold;
|
||||
}
|
||||
|
||||
ul {
|
||||
margin: 0;
|
||||
padding-left: 1.2rem;
|
||||
}
|
||||
}
|
||||
|
||||
.bottom {
|
||||
width: 100%;
|
||||
padding-top: 2rem;
|
||||
border-top: 1px solid #c4c4c4;
|
||||
}
|
||||
|
||||
a {
|
||||
color: unset;
|
||||
}
|
||||
|
||||
</style>
|
||||
@@ -10,7 +10,6 @@ import BookDetail from "@/pages/article/BookDetail.vue";
|
||||
import DictList from "@/pages/word/DictList.vue";
|
||||
import BookList from "@/pages/article/BookList.vue";
|
||||
import Setting from "@/pages/setting/Setting.vue";
|
||||
import Home from "@/pages/home/index.vue";
|
||||
import Login from "@/pages/user/login.vue";
|
||||
import User from "@/pages/user/index.vue";
|
||||
|
||||
@@ -19,7 +18,6 @@ export const routes: RouteRecordRaw[] = [
|
||||
path: '/',
|
||||
component: Layout,
|
||||
children: [
|
||||
// {path: '/', component: Home},
|
||||
{path: '/', redirect: '/words'},
|
||||
{path: 'words', component: WordsPage},
|
||||
{path: 'word', redirect: '/words'},
|
||||
|
||||
Reference in New Issue
Block a user