如何使用ChatGPT构建一个Web应用程序?
围绕ChatGPT的最大卖点之一是它可以成为一种有效的编程工具。其想法是这样的:你用自然语言描述需求,该聊天机器人生成满足该需求的代码。但是ChatGPT在这方面到底有多好呢?
还有什么比亲自测试一下更好的方法呢?我们让ChatGPT从头开始构建一个简单的Web应用程序。以下是我们测试的结果,以及你可以使用ChatGPT从头开始构建一个网站的几个步骤。
步骤1:为你的Web应用程序生成蓝图
就像你在使用任何工具构建Web应用程序时所做的那样,在让ChatGPT发挥功效之前,你需要描绘你希望应用程序所需外观的蓝图以及构建它所需的步骤。
对于我们的第一个任务,我们让ChatGPT为一个简单的聊天应用程序开发一个蓝图。为此,我们描述了这个Web应用程序的需求,然后让聊天机器人详细制定开发该应用程序的计划。
使用上面的提示后,我们得到的结果如下:
你需要在你的ChatGPT帐户上启用“Show Me”插件,以生成像上面这样的流程图。你可以仅需几个步骤安装和使用ChatGPT插件,不过你需要付费订阅。
没有插件,你会得到一个基于文本的蓝图或ASCII艺术流程图。即使没有插件,ChatGPT仍然应该像下面的例子一样提供应用程序的清晰蓝图。
步骤2:将蓝图分割成更小的模块
现在我们已描绘了一个大的蓝图,我们让ChatGPT帮助我们将应用程序分成更小的组件,以便我们可以单独开发,然后集成起来构成完整的Web应用程序。ChatGPT建议将其分为三个组件:
1. 注册模块
2. 登录模块
3. 聊天模块
我们有其他的想法,但这里的目标是让ChatGPT做主。
1. 构建注册组件
我们径直开始构建注册组件。我们让ChatGPT设计出一个合适的算法。在这里,我们通过指定只需要用户的用户名、电子邮件和注册头像来进行干预。下面是提示:
结果如下:
接下来,我们提示ChatGPT构建注册组件。
虽然我们没有将密码字段包含在注册过程中,但ChatGPT通过将密码包含在生成的HTML代码中做出了正确的选择。我们在没有任何修改的情况下复制了代码,下面是它在浏览器上的样子。
接下来,我们提示ChatGPT生成PHP注册脚本。首先,我们提示“编写用于处理表单提交的服务器端逻辑的PHP代码”。虽然生成的脚本运行良好,但它有很多漏洞。
没有密码散列,没有错误处理,而且容易发生SQL注入攻击——ChatGPT只做了最基本的工作。解决这个问题比较容易。我们只是让ChatGPT“识别您刚生成的代码中的所有错误,然后使用已识别的内容来优化代码”。这样,我们的PHP注册脚本就准备好了。
要点提醒:
提示的具体措辞很重要。您需要非常清楚和具体地了解您需要ChatGPT做什么。当我们只是让它“用这段代码修复问题”时,它并没有修复我们希望它修复的大部分问题。
接下来,我们让ChatGPT“编写SQL代码,为PHP脚本中捕获的数据创建数据库”。下面是生成的SQL代码:
下面是通过执行SQL生成的表:
数据库创建好后,我们尝试了第一次注册,没有出现任何错误。
2. 构建登录组件
在完成注册组件之后,我们开始构建登录组件。令人惊讶的是,尽管有额外的会话管理逻辑,它却是最容易构建的部分。
这是生成的登录页面。一个关键的亮点是它使用了与注册页面相同的颜色选项。
在按照ChatGPT的指示创建“server.login.php”文件并添加生成的PHP脚本之后,我们在没有任何修改或调试的情况下进行了第一次成功登录。
3.构建聊天组件
构建聊天组件是我们这个小实验的最后一个部分,可能也是最困难的部分。首先,我们只是让ChatGPT为聊天组件编写代码。不用说,这是一个巨大的失败。对于您想要创建的任何应用程序比较复杂的组件,您需要将其拆分成更小的组件,并逐个处理它们。
我们询问了ChatGPT关于拆分聊天组件的建议,它建议我们创建三个页面:
1. Chat.php
2. Send-messages.php
3. Fetch-messages.php
要点提醒:
当ChatGPT建议文件名时,在项目中使用不同的名称可能会无意中导致问题,因为聊天机器人将在整个项目中创建的所有代码中引用相同的名称。对此我们深有体会。别犯同样的错误。
创建Chat.php页面
首先,我们向ChatGPT详细说明了我们希望聊天界面的外观。
在运行生成的HTML代码之后,我们有了一个没有消息输入框的聊天界面。为了解决这个问题,我们只是提示ChatGPT“重写代码以包含消息输入框和发送按钮”。下面是生成的代码在浏览器上第二次试用时的样子。
要点提醒:
每当生成的代码未能提供期望的结果或遗漏重要的组件时,只需提示ChatGPT重写最后的代码。告诉它添加组件或执行初始代码中未完成的任何操作。
创建“send-messages.php”和“Fetch-messages”页面
对界面感到满意后,我们继续构建脚本来处理聊天逻辑。为了能够从数据库中发送和获取消息,ChatGPT正确地强调了我们需要一个“消息”表。我们让聊天机器人为消息表创建一个SQL。
在生成SQL代码之后,我们让聊天机器人生成PHP脚本来处理消息传递逻辑。
ChatGPT为“send-messages.php”页面和“fetch-messages.php”页面生成了脚本。在运行这两个脚本时,我们终于碰到了第一个错误(奇怪的是,这令人满意)。在没有调试任何一行代码的情况下对项目进行如此深入的研究似乎有点好得难以置信,尽管它比较简单。
事实证明,错误是由于ChatGPT在脚本中引入了对未声明的会话变量($_SESSION['user_id'])的检查。我们怀疑这是由于ChatGPT忘记了项目中使用的一些上下文和变量的名称。
要点提醒:
在使用ChatGPT构建应用程序时,请确保使用相同的聊天线程,并尽量尽快完成相关组件。使用新的聊天线程或长时间休息可能会导致不一致。如果您在编码会话之间休息很长时间,ChatGPT往往会忘记当前项目的一些细节(比如颜色方案)。
话虽如此,我们修复了这个漏洞,并部署了代码。我们注册、登录并尝试了聊天功能。虽然我们可以将一个注册用户的消息发送给另一个注册用户,但是消息框的颜色和排列有些偏差。然而,对于一个花了1小时23分钟完成的应用程序,我们不会太苛刻地评判它。
ChatGPT:一款优秀的编程助手
ChatGPT显然是一款功能强大的编程助手。该聊天机器人可以从简单的、有时不太清楚的指令生成令人印象深刻的代码,这证明了其出色的编程能力。
当然,它仍然有很多缺陷。有限的上下文窗口及其将来自多个独立构建的组件的逻辑连接在一起的能力是一大问题。然而,该聊天机器人可以帮助你快速构建相当复杂的Web应用程序,如果你知道怎么做的话。
JNPF:同样好用的开发工具介绍
低代码开发是近年来在网络开发领域备受关注的一个趋势。低代码开发是指使用最少的编程代码来开发应用程序或业务逻辑,这使得即使是没有IT或编程经验的初学者也能快速创建所需的功能。
虽然低代码开发还没有威胁到传统开发者的角色,但不可否认的是,这种趋势正在向低代码(或无代码)开发发展。据美国研究公司Gartner预测,到2024年,约65%的应用开发项目将通过低代码平台开发。这个趋势对于开发者来说是不容忽视的,预计未来几年开发者的工作方式也将逐渐发生变化。
这几年隐约碰过低代码,目前比较热门,很多大厂都相继加入。
到底啥是低代码,在我看来就是拖拉拽,呼呼呼,一通操作,搞出一套能跑的系统,前端,后端,数据库,一把完成。当然这可能是最终目标。
链接:http://www.jnpfsoft.com/?csdn,如果你感兴趣,可以尝试体验一下。
JNPF的优势就在于它能生成前后台代码,提供了极大的灵活性,能够创建更复杂、定制化的应用。它的架构设计也让开发者无需担心底层技术细节,能够专注于应用逻辑和用户体验的开发。
相关文章:

如何使用ChatGPT构建一个Web应用程序?
围绕ChatGPT的最大卖点之一是它可以成为一种有效的编程工具。其想法是这样的:你用自然语言描述需求,该聊天机器人生成满足该需求的代码。但是ChatGPT在这方面到底有多好呢? 还有什么比亲自测试一下更好的方法呢?我们让ChatGPT从头…...

关闭手机广告的步骤
关闭手机广告的步骤 小米 1.设置→小米账号→声明与条款→系统广告→系统工具广告→关闭 2.设置→应用设置→应用管理→右上角三个点→设置→关闭“应用升级提醒”&“资源推荐” 3.桌面左滑打开负一屏→划到底部→设置→服务管理→选择关闭项目 4.桌面→打开任意文件夹…...

【Verilog 教程】6.6Verilog 仿真激励
关键词:testbench,仿真,文件读写 Verilog 代码设计完成后,还需要进行重要的步骤,即逻辑功能仿真。仿真激励文件称之为 testbench,放在各设计模块的顶层,以便对模块进行系统性的例化调用进行仿真…...

Win/Mac版Scitools Understand教育版申请
这里写目录标题 前言教育版申请流程教育账号申请 前言 上篇文章为大家介绍了Scitools Understand软件,通过领取的反馈来看有很多朋友都想用这个软件,但是我的网盘里只存了windows的pojie版,没有mac版的,我没有去网上找相关的资源…...

第十四届蓝桥杯大赛软件赛决赛 C/C++ 大学 B 组 试题 C: 班级活动
[蓝桥杯 2023 国 B] 班级活动 【问题描述】 小明的老师准备组织一次班级活动。班上一共有 n n n 名( n n n 为偶数)同学,老师想把所有的同学进行分组,每两名同学一组。为了公平,老师给每名同学随机分配了一个 n n …...
YOLOv8改进新颖的Gather-and-Distribute机制,低阶高阶新颖融合,增强了多尺度特征融合能力,实现了延迟和准确性的理想平衡
💡本篇内容:YOLOv8改进新颖的Gather-and-Distribute机制,低阶高阶新颖融合,增强了多尺度特征融合能力,实现了延迟和准确性的理想平衡 💡🚀🚀🚀本博客 改进源代码改进 适用于 YOLOv8 按步骤操作运行改进后的代码即可 💡本文提出改进 原创 方式:二次创新,YOL…...

面试算法13:二维子矩阵的数字之和
题目 输入一个二维矩阵,如何计算给定左上角坐标和右下角坐标的子矩阵的数字之和?对于同一个二维矩阵,计算子矩阵的数字之和的函数可能由于输入不同的坐标而被反复调用多次。例如,输入图2.1中的二维矩阵,以及左上角坐标…...
Vue安装插件时候中遇到冲突依赖解决方案
错误如下: npm ERR! code ERESOLVE npm ERR! ERESOLVE could not resolve npm ERR! npm ERR! While resolving: vue/eslint-config-standard6.1.0 npm ERR! Found: eslint-plugin-vue8.7.1 npm ERR! node_modules/eslint-plugin-vue npm ERR! dev eslint-pl…...

realloc函数应用IO泄露体验
本题主要介绍realloc函数,平时我们使用realloc最多便是在打malloc_hook–>onegadget的时候,使用realloc_hook调整onegadget的栈帧,从而getshell。 在realloc函数中,也能像malloc一样创建堆,并且比malloc麻烦一些&a…...
(c语言)野指针
#include<stdio.h> //野指针 int* test() { int a 10; return &a; } int main() { //野指针一: int* p; *p 10; //非法访问内存 //p没有初始化,就意味着没有明确的指向 //一个局部变量不初始化的话ÿ…...

【Git】轻松学会 Git(一):掌握 Git 的基本操作
文章目录 前言一、创建 Git 本地仓库1.1 什么是仓库1.2 创建本地仓库1.3 .git 目录结构 二、配置 Git三、认识 Git 的工作区、暂存区和版本库3.1 什么是 Git 的工作区、暂存区和版本库3.2 工作区、暂存区和版本库之间的关系 四、添加文件4.1 添加文件到暂存区和版本库中的命令4…...
rust trait对象
在拥有继承的语言中,可以定义一个名为shape的基类,该类上有一个draw方法。其他的类比如Button、SelectBox继承shape。它们各自覆盖draw方法。调用这些子类的draw方法时,就可以把它们统一当作shape来使用。不过Rust并没有继承,如果…...

Linux学习第21天:Linux内核定时器驱动开发: 流淌的时间长河
Linux版本号4.1.15 芯片I.MX6ULL 大叔学Linux 品人间百味 思文短情长 在人类的发展进化中,时间是一个非常重要神秘的物质量。任何事物都是在时间的长河中流淌发生、发展、变化。我们进行驱动开发中对时间的定义和使用也是…...
Centos服务在服务器重启后自启
以Dolphin为例 打开rc.local文件以编辑: sudo vi /etc/rc.d/rc.local在文件中添加您的启动命令。在您的情况下,要添加的命令如下: sh /opt/dolphinscheduler/zookeeper/bin/zkServer.sh start sh /opt/dolphinscheduler/dolphinscheduler/…...

慢性疼痛治疗服务公司Kindly MD申请700万美元纳斯达克IPO上市
来源:猛兽财经 作者:猛兽财经 猛兽财经获悉,慢性疼痛治疗服务公司Kindly MD近期已向美国证券交易委员会(SEC)提交招股书,申请在纳斯达克IPO上市,股票代码为(KDLY),Kindly MD计划通过…...

代码随想录 Day6 哈希 LeetcodeT454 四数之和II T383赎金信 T15 三数之和 T18 四数之和
本文代码思路来源于: 代码随想录 前言 希望大家在刷这部分题的时候先熟悉熟悉哈希结构的基本常用api,比较方便理解. LeetCode T454 四数之和 题目链接:454. 四数相加 II - 力扣(LeetCode) 题目思路 暴力解法仍然是遍历四个数组解决此题, 哈希的思路有…...

干货速来|教你如何撰写毕业论文
撰写毕业论文对于正常大学毕业至关重要。毕业论文是对学生在大学期间所学知识的综合运用和深入研究的体现,也是对学术能力和独立思考能力的考验。 撰写毕业论文的过程需要学生投入大量的时间和精力,包括选题、文献综述、研究方法选择、数据收集和分析、…...

【ROS 2】-2 话题通信
飞书原文链接: Docs...

Unity之NetCode多人网络游戏联机对战教程(2)--简单实现联机
文章目录 1.添加基本组件2.创建NetworkManager组件3.创建Player4.创建地面5.创建GameManager6.编译运行7. 测试联机后话 1.添加基本组件 NetworkManagerPlayerScene 2.创建NetworkManager组件 创建一个空物体,命名为NetworkManager 选择刚刚创建的NetworkManager…...
makdown文法
这里写自定义目录标题 欢迎使用Markdown编辑器新的改变功能快捷键合理的创建标题,有助于目录的生成如何改变文本的样式插入链接与图片如何插入一段漂亮的代码片生成一个适合你的列表创建一个表格设定内容居中、居左、居右SmartyPants 创建一个自定义列表如何创建一个…...

C++初阶-list的底层
目录 1.std::list实现的所有代码 2.list的简单介绍 2.1实现list的类 2.2_list_iterator的实现 2.2.1_list_iterator实现的原因和好处 2.2.2_list_iterator实现 2.3_list_node的实现 2.3.1. 避免递归的模板依赖 2.3.2. 内存布局一致性 2.3.3. 类型安全的替代方案 2.3.…...

Qt/C++开发监控GB28181系统/取流协议/同时支持udp/tcp被动/tcp主动
一、前言说明 在2011版本的gb28181协议中,拉取视频流只要求udp方式,从2016开始要求新增支持tcp被动和tcp主动两种方式,udp理论上会丢包的,所以实际使用过程可能会出现画面花屏的情况,而tcp肯定不丢包,起码…...
DeepSeek 赋能智慧能源:微电网优化调度的智能革新路径
目录 一、智慧能源微电网优化调度概述1.1 智慧能源微电网概念1.2 优化调度的重要性1.3 目前面临的挑战 二、DeepSeek 技术探秘2.1 DeepSeek 技术原理2.2 DeepSeek 独特优势2.3 DeepSeek 在 AI 领域地位 三、DeepSeek 在微电网优化调度中的应用剖析3.1 数据处理与分析3.2 预测与…...
pam_env.so模块配置解析
在PAM(Pluggable Authentication Modules)配置中, /etc/pam.d/su 文件相关配置含义如下: 配置解析 auth required pam_env.so1. 字段分解 字段值说明模块类型auth认证类模块,负责验证用户身份&am…...

【第二十一章 SDIO接口(SDIO)】
第二十一章 SDIO接口 目录 第二十一章 SDIO接口(SDIO) 1 SDIO 主要功能 2 SDIO 总线拓扑 3 SDIO 功能描述 3.1 SDIO 适配器 3.2 SDIOAHB 接口 4 卡功能描述 4.1 卡识别模式 4.2 卡复位 4.3 操作电压范围确认 4.4 卡识别过程 4.5 写数据块 4.6 读数据块 4.7 数据流…...
WEB3全栈开发——面试专业技能点P2智能合约开发(Solidity)
一、Solidity合约开发 下面是 Solidity 合约开发 的概念、代码示例及讲解,适合用作学习或写简历项目背景说明。 🧠 一、概念简介:Solidity 合约开发 Solidity 是一种专门为 以太坊(Ethereum)平台编写智能合约的高级编…...

C# 求圆面积的程序(Program to find area of a circle)
给定半径r,求圆的面积。圆的面积应精确到小数点后5位。 例子: 输入:r 5 输出:78.53982 解释:由于面积 PI * r * r 3.14159265358979323846 * 5 * 5 78.53982,因为我们只保留小数点后 5 位数字。 输…...
docker 部署发现spring.profiles.active 问题
报错: org.springframework.boot.context.config.InvalidConfigDataPropertyException: Property spring.profiles.active imported from location class path resource [application-test.yml] is invalid in a profile specific resource [origin: class path re…...

淘宝扭蛋机小程序系统开发:打造互动性强的购物平台
淘宝扭蛋机小程序系统的开发,旨在打造一个互动性强的购物平台,让用户在购物的同时,能够享受到更多的乐趣和惊喜。 淘宝扭蛋机小程序系统拥有丰富的互动功能。用户可以通过虚拟摇杆操作扭蛋机,实现旋转、抽拉等动作,增…...

第一篇:Liunx环境下搭建PaddlePaddle 3.0基础环境(Liunx Centos8.5安装Python3.10+pip3.10)
第一篇:Liunx环境下搭建PaddlePaddle 3.0基础环境(Liunx Centos8.5安装Python3.10pip3.10) 一:前言二:安装编译依赖二:安装Python3.10三:安装PIP3.10四:安装Paddlepaddle基础框架4.1…...