在现代前端开发中,快速、高效地将设计原型转化为实际可运行的代码是开发人员追求的目标。借助 ChatGPT,这一过程可以显著加速。本文将展示如何通过 ChatGPT 辅助开发,将基于 iView 框架的界面原型在短短 2~3 分钟内转换为 Vue 代码,实现界面的快速搭建。
1 需求原型图:
原型图如下:
原型界面说明:
- 顶部有 4 个统计数据卡片,分别是总充值、近1个月充值、总企业数量、近1年新增企业数量。
- 下面是一个查询条件区域,包含供应商选择、企业选择、时间区间选择和搜索按钮。
- 最后是一个数据表格,展示供应商、企业、余额、累计充值金额等信息。
2 使用gpt提问
直接把需求原型截图上传到gpt,并根据自己的项目所使用的框架,向chatGpt 提问:
提问内容:
请使用前端 vue 实现图片中的界面开发,项目使用的是iview框架, 请使用iview框架中的组件实现
复制
如下图:
3 chatGpt生成代码
1 生成vue代码:
chatGpt首次生成前端vue代码如下:
<template> <div class="dashboard"> <Row :gutter="16"> <Col span="6"> <Card> <div class="stat">52365.25</div> <div class="stat-label">总充值(元)</div> </Card> </Col> <Col span="6"> <Card> <div class="stat">52365.25</div> <div class="stat-label">近1个月充值(元)</div> </Card> </Col> <Col span="6"> <Card> <div class="stat">52365.25</div> <div class="stat-label">总企业</div> </Card> </Col> <Col span="6"> <Card> <div class="stat">5623</div> <div class="stat-label">近1年新增企业</div> </Card> </Col> </Row> <Row :gutter="16" class="filter-row"> <Col span="6"> <Select v-model="supplier" placeholder="请选择供应商"> <Option value="1">供应商 1</Option> <Option value="2">供应商 2</Option> </Select> </Col> <Col span="6"> <Select v-model="company" placeholder="请选择企业"> <Option value="1">企业 1</Option> <Option value="2">企业 2</Option> </Select> </Col> <Col span="6"> <DatePicker type="daterange" v-model="dateRange" placeholder="时间区间"></DatePicker> </Col> <Col span="6"> <Button type="primary" @click="search">搜索</Button> </Col> </Row> <Table :columns="columns" :data="tableData"></Table> </div> </template> <script> export default { data() { return { supplier: '', company: '', dateRange: [], columns: [ { title: '供应商', key: 'supplier' }, { title: '企业', key: 'company' }, { title: '企业钱包(余额)', key: 'wallet' }, { title: '累计充值金额', key: 'totalRecharge' }, { title: '最近充值日期', key: 'lastRechargeDate' }, { title: '创建时间', key: 'creationTime' }, { title: '操作', key: 'actions', render: () => '<a>流水明细</a> <a>充值</a> <a>退款</a>' } ], tableData: [] // 表格数据 }; }, methods: { search() { // 搜索逻辑 } } }; </script> <style scoped> .dashboard { padding: 20px; } .stat { font-size: 24px; font-weight: bold; text-align: center; } .stat-label { text-align: center; color: #999; } .filter-row { margin-top: 20px; } .table-actions a { margin-right: 10px; } </style>
复制
2 chatGPT优化代码:
从上面的代码看有一些常量,我们需要提示改成变更并简单的对统计与查询都简单封装一个对象,后台只需传这些过来前端即可展示。
提问内容:
优化一下:把第一行的4个 52365.25 提取出来封装一个对象并放在data, 以变量方式展示,第二行查询条件把录入绑定变量部分也封装成一个对象query.xxx
复制
执行后如下图:
优化点解释
- 封装统计数据:
- 将顶部的4个统计数据封装到
stats
对象中,通过变量stats.totalRecharge
、stats.monthlyRecharge
等方式引用。
- 将顶部的4个统计数据封装到
- 封装查询条件:
- 将所有的查询条件封装到
query
对象中,包括supplier
、company
和dateRange
,然后通过query.xxx
方式进行绑定。
- 将所有的查询条件封装到
- 逻辑清晰:
- 这种封装方式可以使代码更具可维护性,方便后续增加或修改统计数据和查询条件。
通过这种优化,代码结构更加清晰,便于管理和扩展。
chatGpt最终生成代码:
<template> <Card :bordered="false" dis-hover ref="card"> <Row :gutter="16"> <Col span="6"> <Card> <div class="stat">{{ stats.totalRecharge }}</div> <div class="stat-label">总充值(元)</div> </Card> </Col> <Col span="6"> <Card> <div class="stat">{{ stats.monthlyRecharge }}</div> <div class="stat-label">近1个月充值(元)</div> </Card> </Col> <Col span="6"> <Card> <div class="stat">{{ stats.totalCompanies }}</div> <div class="stat-label">总企业</div> </Card> </Col> <Col span="6"> <Card> <div class="stat">{{ stats.newCompaniesYear }}</div> <div class="stat-label">近1年新增企业</div> </Card> </Col> </Row> </Card> <br/> <Card :bordered="false" dis-hover ref="card"> <Row :gutter="16" class="filter-row"> <Col span="6"> <Select v-model="query.supplier" placeholder="请选择供应商"> <Option value="1">供应商 1</Option> <Option value="2">供应商 2</Option> </Select> </Col> <Col span="6"> <Select v-model="query.company" placeholder="请选择企业"> <Option value="1">企业 1</Option> <Option value="2">企业 2</Option> </Select> </Col> <Col span="6"> <DatePicker type="daterange" v-model="query.dateRange" placeholder="时间区间"></DatePicker> </Col> <Col span="6"> <Button type="primary" @click="search">搜索</Button> </Col> </Row> </Card> <br/> <Card :bordered="false" dis-hover ref="card"> <Table :columns="columns" :data="tableData"></Table> </Card> </template> <script> export default { data() { return { // 封装的统计数据对象 stats: { totalRecharge: 52365.25, monthlyRecharge: 52365.25, totalCompanies: 52365.25, newCompaniesYear: 5623, }, // 封装的查询条件对象 query: { supplier: '', company: '', dateRange: [] }, columns: [ { title: '供应商', key: 'supplier' }, { title: '企业', key: 'company' }, { title: '企业钱包(余额)', key: 'wallet' }, { title: '累计充值金额', key: 'totalRecharge' }, { title: '最近充值日期', key: 'lastRechargeDate' }, { title: '创建时间', key: 'creationTime' }, { title: '操作', key: 'actions', render: () => '<a>流水明细</a> <a>充值</a> <a>退款</a>' } ], tableData: [] // 表格数据 }; }, methods: { search() { // 搜索逻辑 console.log(this.query); } } }; </script> <style scoped> .dashboard { padding: 20px; border: red solid 1px; } .stat { font-size: 24px; font-weight: bold; text-align: center; } .stat-label { text-align: center; color: #999; } .filter-row { margin-top: 20px; } .table-actions a { margin-right: 10px; } </style>
复制
4 使用代码
把最终把代码复制到我们的项目,最终生成的效果图如下:
5 小结
本次操作大约花了 2~3 分钟时间,通过 ChatGPT 可以快速将原型界面转换成 Vue 代码实现,使用 iView 框架的组件完成了前端布局和功能展示。这种方式极大地提高了开发效率,省时省力,让开发人员能够更专注于业务逻辑和功能实现。ChatGPT 的高效辅助工具不仅能够帮助解决技术问题,还能快速生成可用的代码片段,是开发人员的必备利器。