和chatgpt学架构01-搭建项目脚手架

本文涉及的产品
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
云原生数据库 PolarDB MySQL 版,Serverless 5000PCU 100GB
云数据库 MongoDB,通用型 2核4GB
简介: 和chatgpt学架构01-搭建项目脚手架

今年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只负责视图层,如果需要构建完整的应用程序,可能需要额外选择和集成其他库。


2.Vue.js:

优点:


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


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


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


缺点:


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


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


3.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来深入了解每一个框架该如何搭建

相关实践学习
MongoDB数据库入门
MongoDB数据库入门实验。
快速掌握 MongoDB 数据库
本课程主要讲解MongoDB数据库的基本知识,包括MongoDB数据库的安装、配置、服务的启动、数据的CRUD操作函数使用、MongoDB索引的使用(唯一索引、地理索引、过期索引、全文索引等)、MapReduce操作实现、用户管理、Java对MongoDB的操作支持(基于2.x驱动与3.x驱动的完全讲解)。 通过学习此课程,读者将具备MongoDB数据库的开发能力,并且能够使用MongoDB进行项目开发。   相关的阿里云产品:云数据库 MongoDB版 云数据库MongoDB版支持ReplicaSet和Sharding两种部署架构,具备安全审计,时间点备份等多项企业能力。在互联网、物联网、游戏、金融等领域被广泛采用。 云数据库MongoDB版(ApsaraDB for MongoDB)完全兼容MongoDB协议,基于飞天分布式系统和高可靠存储引擎,提供多节点高可用架构、弹性扩容、容灾、备份回滚、性能优化等解决方案。 产品详情: https://www.aliyun.com/product/mongodb
相关文章
|
5天前
|
设计模式 前端开发 测试技术
Flutter 项目架构技术指南
探讨Flutter项目代码组织架构的关键方面和建议。了解设计原则SOLID、Clean Architecture,以及架构模式MVC、MVP、MVVM,如何有机结合使用,打造优秀的应用架构。
Flutter 项目架构技术指南
|
5天前
|
机器学习/深度学习 搜索推荐 算法
深度学习推荐系统架构、Sparrow RecSys项目及深度学习基础知识
深度学习推荐系统架构、Sparrow RecSys项目及深度学习基础知识
|
5天前
|
设计模式 前端开发 Java
KnowStreaming系列教程第二篇——项目整体架构分析
KnowStreaming系列教程第二篇——项目整体架构分析
49 0
|
5天前
|
前端开发 JavaScript Java
电商4.0项目【二】: 架构搭建
电商4.0项目【二】: 架构搭建
43 0
|
5天前
|
SpringCloudAlibaba Java 持续交付
【构建一套Spring Cloud项目的大概步骤】&【Springcloud Alibaba微服务分布式架构学习资料】
【构建一套Spring Cloud项目的大概步骤】&【Springcloud Alibaba微服务分布式架构学习资料】
205 0
|
3天前
|
前端开发 JavaScript Java
《浅谈架构之路:前后端分离模式》 - 山人行 - 博客园,前端开发新手项目
《浅谈架构之路:前后端分离模式》 - 山人行 - 博客园,前端开发新手项目
|
5天前
|
Java Maven Nacos
项目架构设计
项目架构设计
15 1
|
5天前
|
前端开发 JavaScript 数据库
Flask狼书笔记 | 09_图片社交网站 - 大型项目的架构与需求(2)
9.8 收藏图片 前面已经学习过如何使用关联表来表示多对多关系,缺点是只能表示关系,不能存储数据(如我还想记录下收藏图片的时间戳)。这种情况下,我们可以使用关联模型来表示多对多关系。 在关联模型中,我们将Photo模型与User模型的多对多关系,分离成了User模型和Collect模型的一对多关系,和Photo模型与Collect模型的一对多关系。
91 0
|
5天前
|
消息中间件 并行计算 网络协议
探秘高效Linux C/C++项目架构:让进程、线程和通信方式助力你的代码飞跃
探秘高效Linux C/C++项目架构:让进程、线程和通信方式助力你的代码飞跃
48 0
|
5天前
|
缓存 监控 安全
如何设计大型项目技术运营服务架构
【2月更文挑战第3天】如何设计大型项目技术运营服务架构
349 1