Nerd
因为原本的公司业务调整, 我们项目组没了. 本人刻苦钻研, 爱好 ts 社区和开发工作, 求电鸭大佬捞捞啊.
- 前端软件开发 (react / vue2 / vue3 / Next.js / Nuxt.js), Nodejs 后端开发, Rust 软件开发
个人优势
-
熟练掌握 Typescript/JavaScript, Rust, Python 等语言, 对 V8, rustc, LLVM, cpython 的中端优化, 后端生成等内容均有了解.
-
熟练掌握 CSS, html (语义化, 无障碍, 浏览器适配, 规范化内容等). 熟悉 React/Vue 框架的部分原理, 性能优化, 使用与维护. 掌握 LESS, SASS, Tailwind 等样式开发工具, 掌握 Redux, Pania, MobX, Zustand, Jotai, StateX 等状态管理工具, 掌握 Next.js/Nuxt.js, 能使用 SSR, SSG 进行 SEO, 并完成缓存优化. 能独立完成前端项目开发.
-
掌握 Three.js, echarts 等工具, 了解图形学全局光渲染, 全光场, 光栅化等理论, 熟悉 WASM, WebGL, WebGPU 等 Web 规范. 能完成 3D 图形渲染开发和图表渲染开发.
-
熟悉 Rollup, Webpack, Vite, Rspack (Rsbuild) 等构建工具, 并了解诸如 bundle, codegen 等流 程配置, 具有构建工具插件开发经验. 熟悉 eslint, prettier, biome 等开发规范化工具的使用. 熟 悉 electron, tauri 等 WebUI 本地打包框架的使用.
-
熟悉 Restful/GraphQL 等 API 规范, 熟悉 Nest.js, tRPC 后端开发. 熟悉 Prisma/Drizzle 等 ORM 的使用.
-
了解后端内容, 熟悉 Nginx, Traefik 等网关静态资源, 反向代理等配置, 熟悉 MySQL, PostgreSQL, MongoDB 等数据库的基础维护, 熟悉 k8s (k3s) 和 docker/podman 容器与容器 排布系统架构.
-
了解 pytorch, candle 等模型训练框架的基本使用. 熟悉 ollama, langchain 等大模型部署排布 工具的使用.
-
熟练掌握 Adobe Illustrator, Photoshop 等软件, 熟悉 Apple, Material Design 等设计规范, 能 独立设计图标, 界面样式.
-
具有极强的驱动力和研究精神, 擅长使用新工具, 元编程等方法解决开发中的急迫问题.
工作经历
武汉某科技有限公司(具体名称联简历有) 实习: 2023.1~2023.6, 正式工作: 2023.7.3~2024.10.12, 8k
工作内容:
-
参与低代码编辑器和渲染引擎的开发与维护 (React/Vanilla JS)
-
3D 图形, 图表渲染
-
资源文件管理和加载
-
NodeJs 云代码分析/构建
-
代码搜索/构建/审查流程工具, 批量处理遗留项目内容
-
其他页面交互表单等内容…
-
-
标准业务产品研发 (React)
-
前端页面开发
-
devops 工具开发 (cli 工具, 持久化任务)
-
二次开发 onlyoffice, 添加参数化生成文档功能
-
在工作中解决的问题:
1. 低代码页面打包缓慢
在进行多页面改造前, 用户经常会配置出大到离谱的页面内容. 这样的内容, 打包下载到本地时间能超过半个小时, 在我加入公司前尽管讨论了很多方案但是都没能解决这个问题.
我来了以后将页面改为自动保存, 然后对不同保存的页面内容做 diff, 每次将一个页面的不同部分打包成若干小包, 并划分为更小的数据包. 数据包会和页面的 service worker 进行通信比对时间戳定期交换, 用户点击打包的时候在 service worker 里直接将最新的数据包合并完成打包. 快达 0 秒!
2. 项目遗留内容
这个项目的低代码组件有新旧两个版本, 旧组件很古早, 构建很慢, 新组件的功能没旧组件多. 我来了以后通过重建代码 ast 的方式整理了旧组件代码的依赖关系 (之前旧组件的依赖很多都直接挂在 window 上), 并且通过构建工具插件和 cli 工具批量生成了旧组件们的暴露格式, 让旧组件适配新项目.
3. 云代码编辑器, 云代码构建和分析
之前这个项目也是存在一个比较简单的编辑器, 用来处理自定义组件和组件的客制化. 但是那个编辑器的编辑器体验很糟糕, 而且构建开销很大. 我推荐了 sandpack 用于在浏览器中创建一个 node 模拟环节, 在浏览器中完成模拟构建. 在后端我重新编写了一个基于 esbuild 和 swc 的新的构建服务, 并且支持 biome, 通过持久化任务调度. 代码提示上我在 webworker 上跑了一个 ts 语言服务器来处理.
4. 三维场景模型渲染
我在和 leader 表述过我对图形学的了解后, 后续项目开始加入一些三维图表的开发. 中间开发了三维线面图和三维占比图, 我通过 threejs 和 three-fiber 实现了这些图形, 并通过 shader 完成了其中的光效和动画要求. 其中一个困难是在图形上的位置反求相机屏幕空间坐标, 然后将 dom 定位在这些地方. 这涉及到三维空间, canvas, css 多个参考系和比例尺的转换, 并且还要对齐由于浏览器渲染和缩放带来的像素误差.
5. 其他
中间我重构过资源管理系统和面板, 也做过其他新组件, 还对各种老控件做过批量替换和编辑. 项目的构建系统我也进行过很多修改, 包括支持更新的 node 版本和提升构建速度, 优化打包体积.
项目的渲染引擎有一段时间面临 react 渲染性能问题, 我提出过 ssr 方案, 也给出了 demo, 但是因为工期原因未能完全实现, 仅对少量内容进行了 ssr 优化.