CV/modules_zh/projects.typ
2025-09-29 15:12:25 +08:00

116 lines
5.8 KiB
Typst
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

// Imports
#import "@preview/brilliant-cv:2.0.5": cvEntry, cvSection
#let metadata = toml("../metadata.toml")
#let cvSection = cvSection.with(metadata: metadata)
#let cvEntry = cvEntry.with(metadata: metadata)
#cvSection("项目经历")
#cvEntry(
title: [AI 赋能的前端开发工具],
society: [GuiiAI Devtools],
date: [2024.8 - 2025.1],
location: [杭州],
tags: ("Unplugin", "Vue", "Monorepo", "TypeScript", "Vite"),
description: "",
)
这是一个作为 Vite Devtools AI 编程开发工具安装到任意现有项目不依赖编辑器、IDE。
在2024年 AdventureX 黑客松中的作品,后续维护过几个月、开放过限量内测,内测用户大约 1k 人左右。
我主要负责的部分是在比赛阶段和伙伴在三天内做出产品原型、VitePlugin Server 注入SPA 页面的部分、悬浮球的动画、Monorepo 重构后 RPC 库的构建,也参与产品设计的讨论、与投资人的沟通。
- *[项目架构]* GuiiAI Devtools 分为多个包。主要组成部分为Vite Plugin Server、悬浮球叠加层、操作面板。Vite Server 提供修改代码文件、获取源码的能力,悬浮球叠加层和操作面板可以让用户发出 Prompt。
- *[项目基建]* GuiiAI Devtools 的仓库是一个大的 Monorepo分为多个包发布。最开始使用 Vercel ai-sdk 作为 AI 库,但由于其自定义能力不够,我们自己封装了 neuri 库作为替代
- *[编译时 DOM 注入]* 通过 Vite Plugin 的能力,将一个悬浮球注入到用户 Dev 模式的网页,作为用户控制 AI 写代码的操作中心。注入的元素使用另一个 Vue 实例,因此不要求用户使用 Vue 开发。
- *[UI 样式隔离]* 为避免用户页面的全局样式污染悬浮球和面板,我们使用 shadow-dom 隔离了悬浮球和主页面的样式,避免了样式污染,主面板使用 Iframe隔绝上下文。
- *[Vite 到浏览器的 RPC 通信]* 为保证 Vite Plugin Server 前端的双向通信,我封装了一个简易的 RPC 库。浏览器不同上下文之间使用 BroadcastChannel 通信,浏览器与 Vite Plugin Server 复用 dev ws 相互通信。
- *[自定义接入模型]* Devtools 支持自定义 OpenAI API Endpoint。
- *[优化打包体积]* 通过动态导入代码编辑器的 highlight.js将打包体积从 2M 降低至 300k
#cvEntry(
title: "一个资源分享站",
society: "NuistShare",
location: "南京",
tags: ("Nuxt", "NestJs", "Prisma", "TypeScript", "S3", "AList", "Github OAuth"),
description: "",
date: "2023.7-2023.9",
)
一个使用 Nuxt3、NestJs 开发的学习资料共享站点。部署在腾讯云上。
- *[打包体积优化]* 优化字体以及部分样式进行懒加载,部分组件使用动态导入加载,将首屏需要加载的资源从 2M 优化到240k大大缩短首屏加载时间。
- *[中文字体分块优化]* 使用开源项目中文网字计划对字体分包,导出为分片 woff 并在 CDN 处设置强缓存。解决字体过大加载缓慢 的问题。
- *[Prerender 支持]* 使用 Nuxt 3 的能力,提前预渲染主页样式,缩短首屏加载时间
- *[CDN 集成部署优化]* 利用 vite-plugin-qiniu, assets 上传至 CDN 并配置强缓存
- *[S3、AList 多存储协议支持]* 通过抓包并分析 Alist支持了 Alist 协议,并且支持了 S3 协议。
- *[Github OAuth、邮箱验证支持]* 通过 node-mail 库支持了发送邮件,支持了 Github OAuth 登录。
- *[响应式UI设计]* 使用了 Vue 3 Composition API 进行开发,使用了 Vue 3 Suspense 特性, 实现了响应式 UI 设计。
#cvEntry(
title: "麦趣测评小游戏",
society: "麦趣职前教育小游戏",
tags: ("Uniapp", "Vue2", "Vue3", "TypeScript"),
description: "",
location: "南京",
date: "2022.7-2022.9",
)
一个纯用 H5 技术做的游戏化测评类,内含大量游戏关卡,用于测评、品牌营销等。包含了大量的响应式适配、 动画、事件触发。
小游戏有几个版本,初版使用 Uniapp 开发微信小程序,后续有微信 H5 应用。管理平台为用户定制游戏化测评应用的管理平台。
- *[报告图生成]* 在产品的不同时期采用 Canvas 绘制 HTML2CANVAS 的方案动态生成报告图用于用户保存和 分享。
- *[微信接入]* 负责完成小程序、H5 应用的 微信登录、支付的接入。
- *[组件封装]* 主导组件化工作,负责计时器、判题弹窗、关卡流程控制等游戏通用组件开发,提供给其他成员使用,编写了详 细的组件文档。
- *[响应式界面]* 设计响应式系统,基于媒体查询设计响应式断点规则,为多种窗口尺寸进行了响应式适配。对 IOS 微信下方导 航栏进行特殊处理。
- *[构建流水线与管理工作]* 使用了 Github Actions 进行自动化构建与部署,推送到相关云服务。负责内部测试、研发 外包的发布、对接工作。
#pagebreak()
#cvEntry(
title: "基于 React native 开发的米家空调插件,基于 Spec 协议",
society: "米家空调插件",
tags: ("React Native", "Redux", "Spec Protocol", "i18n", "RTL"),
date: "2025.4-2025.8",
location: "南京",
description: "",
)
在小米实习时负责维护和迭代功能的的部分。我主要负责海外的空调产品线的插件迭代、Bugfix、新品需求。
- *[项目架构]* 项目采用 React Native 开发,使用 Spec 协议与米家 APP 进行通信。
- *[国际化支持]* 使用自封装库完成国际化支持,支持多语言切换。
- *[RTL 支持]* 支持了 RTL 布局,支持从右向左的布局。通过对 Victory Chart 等组件库的再封装,实现了图标等组件的 RTL 布局的支持。
- *[状态管理]* 使用 Redux 的修改版 Rematch 进行状态管理,自动订阅服务端 Spec 变更