开源世界因贡献的多样性而更加精彩。我们也始终相信,每个人都有潜力为开源做出贡献,无论你是一名经验丰富的开发者,还是刚刚接触开源的新手。除了在技术问题上提供帮助,我们还积极鼓励各种形式的贡献,无论是代码、文档、还是创意。
我们在 ovio、LibHunt 以及 SourceForge 等开源新手友好平台上展示我们的项目,帮助更多人了解并加入我们。同时,我们也非常重视对年轻一代的培养。最近 Apache Answer 迎来了两位厦门大学马来西亚分校的学生的贡献插件,这是也是他们首次的开源贡献。让我们来听听他们是如何完成第一次开源贡献的,如何解决遇到的问题的,以及他们想的收获。
能够向大家介绍一下你们做的这款插件吗?
我们开发的是一款代码高亮插件,旨在为用户提供更优质的代码显示体验。该插件支持多种编程语言的代码高亮,并且可以动态切换明暗主题,例如 GitHub Light 和 GitHub Dark。
我们使用了 highlight.js
作为核心库,通过 React 技术栈实现了插件的前端交互,并支持主题的动态加载。同时,这款插件可以让用户根据自己的喜好切换代码主题,提升用户使用的舒适度。
请问你们是如何拆解这个完成这个插件的?
我们主要分为几个步骤。
首先,从简入手,在 Answer 项目中本地实现代码高亮功能。然后,我们将功能制作成插件。由于插件是与前端有关的渲染类功能,所以我们优先制作了前端部分。实现前端代码高亮后,我们希望实现个性化设置,让用户能够从后端选择自己喜欢的主题系列,因此为前后端配置了接口。 整个流程可以简单概括为:
- 导入highlight.js,并在本地前端实现了简单的代码高亮。
- 将代码高亮功能移植到插件中。不过由于Vite的封装机制,我们无法直接导入多种CSS文件,因此使用了CSS in JS的解决方案。
- 然后,我们发现前端明亮主题的切换和Question下方的预览框渲染不够顺畅,所以合理配置了依赖项并编写了更严谨的监听机制来解决问题。
- 在前端基本完善后,我们开发了后端部分,让用户可以通过表单选择自己喜欢的主题。
- 通过前后端接口改写代码,实现了后端选择的主题在前端的应用。
- 在测试中,我们发现CSS的挂载量较大,于是修改了逻辑,使用动态导入和映射的方法来优化性能。
- 最后,为了后续维护和更好的可读性,我们编写了代码来读取核心库内容,并实现了自动检测主题类型、分类和切换等功能。
有遇到哪些问题,是怎么解决的呢?
当然,我们开发中遇到了一些挑战。例如:
- 在前端配置过程中,由于Vite的封装机制无法导入多种样式的CSS文件。为了解决这个问题,我们采用了CSS in JS的方案。
- 在实现明暗模式切换时,Question下方的预览框没有被实时渲染。我们通过合理配置依赖项并编写严谨的监听机制来解决这个问题。
- 在配置后端时,如何让后端表单与前端进行数据传递也是一个挑战。我们根据Answer提供的接口实现了前后端的数据交换。
- 最后,为了简化后期维护,我们使用文件遍历来读取核心库,而不是手动引入。
这些问题的解决不仅提高了插件的性能,也增强了我们对技术的理解。
现在对于开源社区,有什么新的理解?
参与到开源项目后,我们深刻感受到开源社区的力量与合作精神。在这个社区中,每个人的贡献,无论是代码、博客还是文档,都会汇聚成整体的一部分,帮助构建出更加完整和丰富的 Answer 生态。这种协作不仅仅依赖技术能力,更需要良好的沟通能力。与其他开发者的交流与合作,是确保功能正确实现的关键,尤其是在遇到问题时,通过讨论和共同努力可以找到最佳解决方案。
我们还意识到,要在开源项目中实现完整的功能,仅凭编程技能是不够的。深入理解项目的底层逻辑、架构和运行机制,是有效贡献代码的前提。这需要我们向社区中的资深开发者学习,借鉴他们的经验和解决方案,才能不断提升自己,并在开源社区中做出更多有价值的贡献。
开源不仅是技术的分享,它更是思想、经验和创意的交流与融合。社区的开放氛围鼓励合作、反馈和改进,为开发者提供了广阔的成长空间,激励我们不断进步。
对于在校的学生,你们会怎么鼓励他们参与到开源中来呢?
这次贡献,也让我们对开源的底层逻辑和合作精神有了更深的理解。
我们非常鼓励在校学生积极参与开源项目,因为这是提升技术水平的绝佳途径。通过参与开源,他们可以获得宝贵的实际开发经验,学习如何解决真实世界的问题,并接触到更广泛的技术社区。我们建议从小项目开始,一步步参与到更复杂的项目中,无论是贡献代码、编写文档,还是进行代码测试,都可以找到适合自己的切入点。
同时,参与开源不仅有助于技术的提升,还能帮助他们拓展人脉,提升未来职业发展的机会。
代码贡献只是两位同学开源首秀的一部分,两位同学还在非代码贡献上做出了自己的贡献。在搭建环境的时候,他们将步骤以图文的形式记录下来,并将前端配置、后端配置、和添加插件指南以博客的形式贡献给社区。此外,他们还完成了文档部分的更新和本地化。
在此,我们想衷心说声感谢,并鼓励更多学生加入到开源之中。正是因为有新的力量的,开源社区才会愈发壮大和繁荣。点击此处,了解你可以如何参与进来,不局限于代码贡献。