[Code Analysis] docs | Web应用前端
链接:https://hellodigua.github.io/code996/#/
docs:Code Analysis
项目是一个用于分析Git项目工作强度的分析工具。
它通过收集
本地Git仓库的提交时间分布数据
并进行网页展示格式化来实现这一功能。
这些数据随后会被发送到一个网络应用程序进行处理,计算出一个独特的**“指数”**,用于量化项目的提交时间情况,并为用户提供易于理解的解读。
可视化
章节内容
- 网络应用前端
- 提交数据获取与格式化
- 数据结构与通用工具
- 按小时提交分析
- 按周提交分析
- 指数计算与解读
- 构建与部署工作流
第1章:Web应用前端
想象你正在驾驶汽车。首先看到和交互的是什么?是仪表盘!仪表盘显示重要信息如车速、油量和警示灯,还有收音机或空调等控制按钮。
在软件世界中,这个"仪表盘"被称为Web应用前端。对于我们的code analysis
工具,Web应用前端就是你在浏览器中看到和交互的部分。它的设计目的是让提交数据的复杂分析变得易于理解和导航。
前端解决什么问题?
code analysis
工具通过分析代码提交的时间分布来帮助理解工作模式。
这种分析会产生大量数据,但原始数据对人类并不友好
前端的主要工作是将这些原始复杂的分析数据转化为可视化、可交互且易于理解的形式。
想象我们的主要使用场景:通过图表和表格展示code996
分析结果,并让你在不同工具部分间导航。
没有前端,code996
就只是一堆在后台运行的数字和计算。前端让它成为可用的工具
code996
前端的核心概念
我们的code996
前端使用几个重要概念来实现目标:
-
Vue.js:构建基石
- Vue.js是一个流行的JavaScript框架。可以把它看作帮助我们高效构建"仪表盘"(用户界面)的特殊工具包。它让我们能轻松创建网站的可复用部件。
- 这些可复用部件称为组件。想象乐高积木:一个组件可能是"图表",另一个是"按钮",还有一个是"表格"。我们组合这些组件来构建整个
code996
界面。
-
路由:页面导航
- 大多数网站都有多个页面。我们的
code996
工具有"介绍"页和"结果"页。 - 路由就像汽车的导航系统。它帮助前端知道当你点击链接或在浏览器输入特定地址时应该显示哪个"页面"。虽然感觉像是跳转到新页面,但Vue.js让应用无需完全重载整个网站就能加载新内容,使体验快速流畅。
- 大多数网站都有多个页面。我们的
code996
如何使用前端
让我们看看这些概念如何结合来实现我们的使用场景:展示结果和导航。
当你使用code996
时:
- 你从介绍页面开始,这个页面解释工具的功能。
- 当
code996
完成提交数据分析后,前端获取这些结果。 - 然后通过交互式图表和清晰表格将它们整齐地展示在结果页面上,帮助你快速发现如"每小时提交"或"每周提交"等可能暗示996工作模式的规律。
- 如果需要,你可以轻松返回介绍页面。
前端处理所有这些:准备展示数据、绘制图表、制作表格以及管理介绍页和结果页之间的切换。
内部机制:前端如何工作
让我们看看构成code996
前端的核心部分。
应用的起点
当你在浏览器打开code996
时,首先加载的是一个主JavaScript文件。这个文件告诉Vue.js启动我们的应用。
以下是src/main.ts
的简化视图,这是最先运行的文件:
// src/main.ts
import { createApp } from 'vue' // 获取创建Vue应用的函数
import App from './App.vue' // 我们的主应用组件
import { router } from './router' // 我们的导航系统// 1. 创建Vue应用
const app = createApp(App)// 2. 告诉应用使用我们的导航系统
app.use(router)// 3. 将应用挂载到网页的特殊位置
app.mount('#app')
这里发生了什么?
createApp(App)
:这行告诉Vue.js创建一个新的应用实例。App.vue
是第一个也是主要的组件,它像汽车的框架一样将所有东西组合在一起。app.use(router)
:然后我们告诉Vue应用使用"router",即我们的导航系统。这允许我们定义不同的"页面"并在它们之间切换。app.mount('#app')
:最后,这行将我们的Vue应用连接到网页中一个特定的占位符(一个ID为app
的HTML元素)。这是Vue.js显示所有内容的地方。
页面间导航:路由器
路由器对于处理code996
应用的不同视图(页面)至关重要。它定义了每个网址(URL)应该显示哪个组件。
以下是src/router/index.ts
的关键部分:
// src/router/index.ts
import { createRouter, createWebHashHistory } from 'vue-router'// 我们"懒加载"组件:只在需要时加载
const Intro = () => import('@/view/intro/index.vue')
const Result = () => import('@/view/result/index.vue')export const router = createRouter({history: createWebHashHistory('/'), // 浏览器历史记录的工作方式routes: [ // 我们的页面列表{path: '/', // 默认页面(如code996.com/#/)name: 'index',component: Intro, // 显示Intro组件meta: { title: 'code996' },},{path: '/result', // 结果页面(如code996.com/#/result)name: 'result',component: Result, // 显示Result组件meta: { title: 'result | code996' },},],
})// (一些其他代码用于根据页面更改浏览器标签标题)
// ...
这里发生了什么?
createRouter(...)
:这个函数创建我们的导航系统。routes: [...]
:这是我们应用所有"页面"或"路由"的列表。- 列表中的每一项都是一个描述页面的JavaScript对象:
path
:触发此页面的网址部分(如/
表示主页,/result
表示结果页)。name
:我们在代码中引用此页面的简单名称。component
:当此路径激活时应显示的Vue"组件"(我们的乐高积木)。Intro
用于介绍,Result
用于分析结果。
- 列表中的每一项都是一个描述页面的JavaScript对象:
这种设置允许code996
根据URL在显示Intro
组件和Result
组件之间切换,给用户导航不同页面的体验。
处理展示数据
code996
前端还需要智能处理接收到的展示数据。例如,分析结果可能来自网址本身。src/view/result/core/url-helper.ts
文件包含帮助前端正确解释和使用这些数据的函数。
例如,parseResult
从URL获取特殊字符串并将其转换为Vue.js可以轻松用于创建图表的结构化列表。另一个函数checkUrlQueryAndRedirect
确保URL中的数据有效。如果无效,它会将你重定向回带有错误消息的介绍页面。这是使用户体验流畅和健壮的一部分。
事件序列:前端在行动
让我们可视化当你打开code996
工具并查看结果时的流程:
这个图表展示了用户、浏览器、我们的主Vue.js应用及其路由器如何协同工作来呈现code996
界面及其结果。
结论
Code996是一个分析Git项目工作强度的工具,通过统计提交时间数据并计算"996指数"来量化工作模式。
-
其前端采用Vue.js框架构建,包含
介绍页
和结果页
两个核心视图,通过路由系统
实现页面切换。 -
结果页将复杂的提交数据转化为可视化图表(如小时/周提交分布),使用户能直观理解工作强度。
-
前端通过解析URL参数获取分析数据,并进行有效性校验,确保用户体验流畅。该工具通过技术手段将开发者的代码提交行为转化为可量化的指标,为识别工作模式提供数据支持。
在本章中,我们探索了code996
的Web应用前端。
我们了解到它是面向用户的"仪表盘",使强大的提交分析变得可理解。
我们看到了code996
如何使用Vue.js组件作为构建块,以及它的路由系统如何管理介绍页和结果页之间的导航。
这个前端对于将原始数据转化为清晰、交互式的图表和表格至关重要。
但这些"分析数据"实际上来自哪里?code996
如何获取提交信息并准备给前端显示?这将是我们下一章要探索的内容!
下一章:提交数据获取与格式化