2.2 技术选型

2.2.1 前端技术选型

前端语言是Javascript没跑了,但是选择使用什么框架?需要额外注意什么问题?

jQuery是优秀的库,但是不属于框架,它没有提供像Vue、React或Angular那样的结构化开发模式。而且随着现代浏览器的发展,很多 jQuery 提供的功能现在可以通过原生JavaScript实现。所以我们优先选择完整框架。

当下热门的框架优先考虑,如果一个项目后期需要新增人手,成本也是重要的考虑方向,所以我们对比一下Vue, React和Angular。

前端框架比较

以下是几个热门的前端框架,每个框架都有其特定的优势和劣势:

框架/特点优点缺点

Vue

- 易于上手: 简单明了的学习曲线 - 灵活性: 适应多种项目需求 - 社区: 活跃的社区和丰富的插件生态 - 代码组织: 组件化的代码组织

- 社区规模: 相比React和Angular可能略微小一些

React

- 巨大的社区: 庞大和活跃的社区 - 高性能: 虚拟DOM技术 - 可复用组件: 组件化的结构 - JSX: 便于创建用户界面

- 学习曲线: 对新手稍微陡峭

Angular

- 全面的框架: 提供全面解决方案 - 类型安全: TypeScript提供类型安全 - 优秀的CLI: 快速生成和管理项目代码

- 学习曲线: 较陡峭 - 框架较重: 不适合一些简单的项目

代入项目分析

对于GPT-Onion,主要是一个以社区为中心的AI提示词库平台,有以下几点考量:

  • 组件复用和管理:所有框架都提供了组件化的代码组织,可以帮助我们创建和管理可复用的UI组件。

  • 社区和生态系统:React和Vue有着较为活跃的社区和丰富的插件生态,可以帮助我们找到需要的库和工具。

  • 学习曲线:由于受限于时间,对某个框架更为熟悉,可以倾向于选择那个框架。Vue和React相对于Angular来说学习曲线更为友好。

  • 性能:React和Vue通常能提供较高的性能,特别是在处理大量动态页面更新时。

  • 项目复杂度:如果项目计划非常庞大且复杂,可能会倾向于选择Angular,因为它提供了一个全面的解决方案。而Vue和React在简单和中等复杂度的项目中可能更为适用。

对于今后可能出现手机应用,而最简单的处理方式是通过ionic之类的框架实现。这一点上面三个框架都能快速融合。

综合考虑,Vue会是一个相对简单且灵活的解决方案。

2.2.2 后端技术选型

既然是作为Web服务,那么第一考虑的肯定是PHP了,从开发效率的角度讲,远高于Golang和Java;从Web开发友好上来说,也是要好过Golang一大截。

但是,开发效率显然不是唯一的考量要素。

在考虑后端技术选型时,需要考虑以下几个方面:

  1. 性能:

    • 不同的后端技术在处理请求和执行逻辑时的性能会有很大的差异。

    • Golang这样的编译型语言显然会比Node.js、PHP和Ruby快很多。

    • 而Python在Web的应用场景下性能是落后于上述语言的。

  2. 可伸缩性:

    • 选择的技术需要能够随着用户基数的增加而垂直或水平扩展。

    • 垂直扩展方面,Java可以通过增加JVM的堆大小来提高单个实例的处理能力,PHP可以使用Opcode缓存,Go可以考虑如何利用好goroutines。

    • 水平扩展方面,利用Kubernetes、负载均衡设备三者都能轻松解决

  3. 安全性:

    • 保护应用程序和数据的安全是至关重要的。不同的技术和框架可能会有不同的安全特性和最佳实践。

  4. 社区支持和生态系统:

    • 一个活跃的社区和丰富的库/框架生态系统可以大大加速开发进程,并提供解决特定问题的资源。

    • Python 有一个巨大而活跃的社区。这意味着遇到问题时,通常可以在 Stack Overflow 或其他社区论坛上找到答案。

    • 由于 Java 已经存在了很长时间,并且被广泛用于企业级应用,其社区资源丰富,拥有大量的文档、库和框架。

    • Go 是这四种语言中相对较新的,社区活跃度是存在的,但是沉淀相对较少。

    • PHP 社区很大,有很多资源和库,但与 Python 或 Java 相比,它可能不那么活跃。

  5. 维护性:

    • 代码是否易于维护和更新是一个重要的考虑因素,这也包括了文档的完善程度和编码规范的一致性。

    • 同时还包括该语言是否有类似Python的PEP 8,PHP的PEAR这样的官方推荐的编码规范,当研发团队的背景不同,甚至地域各异的情况下,一致的编码规范会减少很多不必要的麻烦。

  6. 学习曲线:

    • 如果团队对选定的技术不熟悉,学习曲线可能会影响项目进度。

  7. 成本:

    • 包括开发、部署和运营成本。

    • Java由于其运行时的资源占用,整体规模很大的时候,运维成本是明显高于Golang和PHP的。

  8. 测试和调试工具:

    • 良好的测试和调试工具可以大大提高开发效率和代码质量。

  9. 集成:

    • 如果项目需要集成第三方服务或系统,需要考虑后端技术的集成能力和灵活性。

    • 项目需要用到Open AI的接口,可以直接使用CURL,这几种常用语言也有sdk,所以相差无几。

  10. 长期支持和版本稳定性:

    • 选择一个有长期支持和版本稳定的技术,可以减少未来可能出现的技术债务。

    • 显然这几种语言都是可选项。

  11. 开发人员的经验和喜好:

    • 团队的技术背景和喜好也是一个需要考虑的因素,因为它会影响开发的速度和质量。

思考

所以结合我们项目的特性,

  • 考虑后期负载压力,Golang是最优选择。

  • 考虑开发效率,Python和PHP是最优选择。

  • 考虑成本,Golang和PHP最优。

  • 测试和调试差距不大。

  • 项目集成方面,差距不大。

  • 安全性方面差距不大。

因为成本、开发效率的考量, Java先被我们排除在外,

前端如果通过单页面的形式来减少渲染和传输过程中的数据量, 那么后端只需要以接口的形式响应就好。 Golang和PHP成为最优解。

PHP在session等web服务各方面都优于Golang, 开发效率方面,7天的时间,似乎更适合项目。 Golang是否还能一拼?

Last updated