今年3月份以来,chatgpt就热度不减。有了这种聊天机器人,就可以很方便的帮助我们提高。无论是我们独立创业还是做项目外包,拥有一套自己可以把握的脚手架还是必备的能力。

过去如果靠自己摸索,组装这么一套脚手架还是费事费力的。一个是涉及技术比较多,既要架构前端也需要架构后端。而且有的开源技术文档比较丰富,有的就比较简陋。

如果是靠搜索引擎看别人写的技术文章,因为每个人的视角不同,有的风格是只是记录知识点有点类似于笔记。这种无疑大大增加了我们在做技术选择时候需要筛选的周期。

为了解决上述说的技术架构难、周期长的问题,我们可以借助现在大火的chatgpt,和机器人进行结对编程,来缩短我们架构的周期。

1 技术路线的选择

我们要设计一套自己用的趁手的架构方案,技术路线是必须要选择的。目前技术粗略的分为前端和后端,因此我们首先问一下chatgpt。

  1. 项目需求:了解项目的功能需求和性能要求。如果需要实时交互和动态内容展示,可以选择使用前端框架如React或Vue.js;如果需要处理大量数据和高并发请求,可以选择后端框架如Node.js或Django。
  2. 技能和经验:评估团队成员的前后端技术背景和熟悉度,选择他们熟悉的技术栈可以提高开发效率和质量。如果团队成员在某些特定技术上有较多经验,可以利用他们的专业知识。
  3. 生态系统支持:考虑前后端技术的生态系统是否成熟,是否有大量的文档、社区支持和第三方库可用。这将对开发过程中的问题解决和功能实现提供很大帮助。
  4. 可扩展性和未来发展:选择具备良好扩展性和灵活性的前后端技术,以便在未来能够容易地添加新功能、处理更高负载或适应新的业务需求。
  5. 安全性和性能:考虑项目的安全性需求,并选择具备良好安全机制和性能优势的技术。前端可以选择使用HTTPS协议、跨站脚本攻击(XSS)防护等;后端可以选择使用ORM框架、缓存技术等来提高性能。
  6. 社区支持和拓展性:选择具备活跃的社区支持的技术,这样可以更容易获得帮助和分享经验。此外,考虑技术的拓展性,是否支持插件、扩展和定制化开发。

2 前端框架的选择

chatgpt已经对技术路线的选择给出了具体建议,我们在接着进行提问

目前比较流行的前端框架包括React、Vue.js和Angular。这里是它们的优缺点:

  1. React:

优点:

高度灵活:React供了组件化的开发模式使得代码可重用性高,易于维护和扩展。

虚拟DOM:使用虚拟DOM可以提高性能,在数据更新时只更新必要的部分,减少DOM操作次数。

大型社区支持:React拥有庞大的社区和丰富的生态系统,有许多成熟的第三方库和工具可供选择。

缺点:

学习曲线较陡峭:对于新手开发者来说,理解和掌握React的概念可能需要一些时间。

需要其他库的配合:React只负责视图层,如果需要构建完整的应用程序,可能需要额外选择和集成其他库。

  1. Vue.js:

优点:

易于上手:Vue.js具有简单直观的API和文档,容易学习和使用。

渐进式框架:Vue.js允许逐步采用,可以根据项目需求选择使用其核心库或配套库。

具有良好的性能:Vue.js通过虚拟DOM和响应式数据绑定等机制来提高性能。

缺点:

社区相对较小:与React和Angular相比,Vue.js的社区规模较小,可能在某些方面缺乏一些成熟的解决方案。

生态系统相对较小:尽管Vue.js有一些常用的插件和工具,但其生态系统相对React和Angular来说还不够完善。

  1. Angular:

优点:

完整的解决方案:Angular是一个完整的框架,提供了许多功能和工具,包括路由、表单验证、状态管理等。

强大的类型检查:Angular使用TypeScript进行开发,提供了强大的类型检查和编译时错误捕捉能力。
支持大型应用程序:Angular适用于构建大型的企业级应用程序,提供了模块化和组织架构的支持。
缺点:

学习成本较高:相对于React和Vue.js,Angular有一个较为复杂的概念和学习曲线,需要一定的时间来掌握。

性能相对较低:由于Angular提供了许多功能和抽象层,可能在性能方面相对React和Vue.js略有劣势。

说一说我的架构需求,我的目标是开发小程序,而后端主要是给管理员或者运营人员提供一个维护数据的地方。人员不会太多,因此肯定是选择学习周期比较短的方案,按照描述我们可以先按vue来进行尝试。

3 后端框架的选择

目前比较流行的后端框架包括Node.js(Express.js、Koa.js)、Django、Ruby on Rails、Spring Boot等。选择后端框架时,可以考虑以下几个方面:

编程语言:选择一个你熟悉或有兴趣学习的编程语言,因为后端框架通常是基于特定的编程语言开发的。例如,Node.js使用JavaScript,Django使用Python,Ruby on Rails使用Ruby,Spring Boot使用Java。

社区支持和生态系统:一个活跃的社区和丰富的生态系统可以提供更多的资源、插件和工具,有助于开发效率和问题解决。可以通过查看文档、GitHub上的Star数量、社区活动等来评估框架的社区支持情况。

功能和特性:不同的框架提供不同的功能和特性,例如路由管理、数据库集成、身份验证、缓存等。根据项目需求,选择一个提供所需功能的框架。

性能和扩展性:考虑框架的性能和扩展性,特别是对于高并发和大规模应用。一些框架可能更适合构建小型应用,而另一些框架则更适合处理大型、复杂的应用程序。

学习曲线和开发体验:选择一个易于上手的框架,可以减少学习成本并提高开发效率。可以通过查阅文档、教程和示例代码来评估框架的学习曲线和开发体验。

因为我们前端框架使用了vue,而vue使用的编程语言是javascript,为了技术上的统一,就统一采用javascript 进行架构,因此后端框架选择express

4 数据库的选择

对于小程序的管理后台,选择合适的数据库主要考虑以下几个方面:

数据模型:根据你的数据结构和业务需求,选择适合的数据库模型。如果数据之间存在复杂的关联关系,关系型数据库(如MySQL、PostgreSQL)可能更合适。如果数据是非结构化或者需要灵活的模式变更,文档型数据库(如MongoDB)可能更适合。

数据量和性能:考虑你的小程序的预期用户量、数据量和访问频率。如果预计有大量用户和数据操作,需要选择一个能够处理高并发和大规模数据的数据库。

数据安全性:数据安全是一个重要的考虑因素。选择一个提供良好安全性控制机制的数据库,包括用户身份验证、权限管理等。

开发工具和文档支持:选择一个有成熟开发工具和广泛文档支持的数据库,这样可以提高开发效率和便捷性。

根据以上考虑,以下是几种常见的数据库选择:

MySQL:关系型数据库,具有良好的性能和可靠性,适合处理结构化数据。

PostgreSQL:关系型数据库,提供更高级的功能和复杂查询,适合对数据进行复杂操作和分析。

MongoDB:文档型数据库,适合存储非结构化或半结构化数据,具有灵活的模式和可扩展性。

Firebase:Google提供的云数据库服务,适用于快速开发和扩展,支持实时同步和身份验证。

这里我是使用过两类数据库,MySQL和MongoDB。MySQL呢语法比较自然,尤其是做表连接的时候比较自然。但是就是字段需要提前建好,不能随意更改。

MongoDB呢,字段可以任意发挥,缺点是表关联语法比较复杂,而且有个问题是如果你表单提交的时候是非必录的,那么入库后就存在某些字段不存在的问题,尤其在统计查询比较费劲。

因为我们是小的方案因此选择mysql上手。

最终选型

经过和chatgpt的一系列交流,我们最终选择前端框架使用vue、后端使用express,数据库选择Mysql。

选定好方向,后续我们就可以继续和chatgpt来深入了解每一个框架该如何搭建。

07-18 09:43