大家好,我是 Sunday。
今天,我想和大家分享一个小小的里程碑。经过了一个月的努力,我们的 “简历汪” 已经积累了 21,440+ 用户,完成了 38,252+ 份简历的制作和下载。
这对我来说,可真是一个不小惊喜,这也更让我坚信:我们应该做正确的事情,做对大家有帮助的事情。
因为掘金平台不允许发表具备引导性的内容,所以说在这篇文章中,咱们就主要来说下简历汪的技术实现。
简历汪的技术架构揭秘
简历汪目前共有三个端:
- 用户端:使用 NuxtJS@4 + Vite@5
- 管理端:使用 Vue3 + webpack@5
- 服务端:使用 NestJS@11 + MongoDB
很多同学可能会好奇,为什么我们选择了这个技术栈来构建简历汪。这里面其实有几个原因,也想和大家分享下我的思路。
1. 用户端:NuxtJS + Vite
“简历汪”采用了 NuxtJS + Vite 作为前端技术栈,目的很简单:高效开发与高性能。
-
NuxtJS:作为 Vue 的服务端渲染框架,它非常适合用来做这种有 SEO 要求的页面。虽然简历网站本身不复杂,但让搜索引擎更容易抓取内容,提升用户体验,还是一个很重要的考虑。
-
Vite:Vite 是我一直看好的前端构建工具,它以极快的热更新速度和优秀的构建性能著称。做简历网站这种应用时,我们并不需要复杂的构建流程,Vite 能够极大地提高开发效率。
2. 管理端:Vue3 + Webpack
别问为啥使用了 webpack,问就是 之前训练营课程的代码可以复用😂
通过复用,后台管理系统,我们只花了不到一天的时间,就搭建完成了。
3. 服务端:NestJS + MongoDB
服务端采用了 NestJS + MongoDB,这里没有什么特别的花样,就是稳扎稳打。(作为资深 JS 玩家,总不能让我用 java 吧 😂)
-
NestJS:和 spring 相似的 OOP 概念,比 Express、KOA 要先进太多了。所以服务端开发必须选他。
-
MongoDB:作为 NoSQL 数据库,通常提供更好的支持 半结构化 数据的能力,这使得它非常适合像简历网站这种类型的应用。简历数据往往具有 灵活 和 可变 的结构,MongoDB 的文档模型(基于 JSON 的格式)能够灵活存储不同格式、不同字段数量的数据,而不需要事先定义固定的表结构。
都有哪些复杂技术问题?
简历汪的复杂技术问题主要有两个:
- 模板处理
- 安全处理
1. 模板处理
先说模板问题。
有很多同学可能会问:“简历汪”里有那么多模板,怎么做到的呢?这个问题其实是我在开发过程中遇到的一个技术难点。
这些模板的设计远没有想象的通过不同的 css 就可以轻松实现。所以这一块真的花了不少心思。
1. 组件化设计
在前端开发中,组件化设计是非常重要的。每个简历模块(如个人信息、教育经历、工作经验等)都被拆成了独立的组件。这样,当我们添加或修改某个模块的内容时,不需要重构整个页面,只需要更新对应的组件即可。
2. 动态样式和主题定制
为了让用户能够定制简历样式,我们提供了 动态主题定制 功能。用户可以在简历制作过程中,选择自己喜欢的颜色、字体、行间距等样式参数,简历的样式就会立刻反映到页面中。
3. 数据驱动展示
简历中的每一个模块和字段都是由 数据驱动 展示的。用户输入的内容都会直接绑定到模板上,这样一来,我们就能够更好地支持后续的功能扩展,比如:将用户选择的内容生成 PDF 文件等。
2. 数据存储与安全
简历数据的安全和隐秘是我们特别关注的事情。所以我们在这里做了不少的工作。
比如:我们采取了 加密存储 机制来保证用户数据的隐私安全,同时在 API 层也加入了 权限控制 和 数据校验 来避免恶意攻击(当然,没有攻击最好,希望各位大大不要来搞啊....)。
这里设计的东西比较多,就不再文章中进行铺开来说了。
总结
那么,最后总结一下。
虽然熬了好几个大夜,但是简历汪目前所带来的成绩,确实也是超乎我们预料的。
感谢每一个支持和使用简历汪的用户。感谢大家的信任和使用 🙏🙏
未来,我们会添加更多的功能,为大家提供 从制作简历 -> 面试 -> 入职 的一系列流程服务。助力更多同学成功拿到心仪的offer。