前端如何借助 AI 工具提升开发效率

简介: 本文介绍了前端开发中如何借助AI工具提升效率,涵盖代码生成、数据处理与UI组件自动生成等应用场景,并结合实际案例展示AI在转换复杂数据格式和生成Element-UI表单中的实践效果,帮助开发者减少重复劳动,提高开发速度与准确性。

# 前端如何借助 AI 工具提升开发效率


## 前言


大家好,我是喵喵侠。在日新月异的前端开发领域,开发效率的提升显得尤为重要。随着人工智能(AI)技术的不断进步,各种AI工具在前端开发中的应用也越来越广泛。目前市面上的 AI 工具有很多,但基本用法都大差不大。所以在这篇文章,我会告诉你 AI 工具的通用技巧,带你了解如何借助AI工具来提升前端开发效率,并通过实际的业务场景和案例展示这些工具的实际应用效果。


## AI 工具在前端开发中的应用


就我目前日常使用来说,AI工具在前端开发中的应用,主要体现在以下几个方面:


### 代码生成与自动补全


AI工具通过学习大量的代码示例,帮助开发者自动生成代码或进行代码补全。这不仅能减少开发者的工作量,还能提高代码的一致性和规范性。例如,GitHub Copilot能够根据上下文自动生成代码片段,甚至可以根据注释生成完整的函数和模块。国内也有一些不错的 AI 编程助手,有阿里云通义千问,百度云Comate,以及腾讯云 AI 代码助手。


### 数据格式处理


前端开发经常需要处理各种复杂的数据格式。AI工具可以通过智能算法快速解析和转换数据格式,从而提高处理效率。例如,可以使用AI工具自动将复杂的API响应数据转换为符合应用需求的格式。


### UI组件生成


在开发复杂的UI组件时,AI工具可以根据设计稿或需求文档自动生成相应的代码。这不仅减少了重复性工作,还能确保组件的一致性和可维护性。例如,使用AI工具生成复杂的表单组件,可以快速搭建出具有复杂交互逻辑的表单,提高开发效率。


## 案例分享


### 实际业务场景下复杂数据处理


假设我们正在开发一个电商平台的管理系统,其中包括一个订单管理模块。这个模块需要展示订单列表,并且支持根据订单状态、客户信息等条件进行筛选和排序。后台API返回的订单数据格式复杂,我们需要将其转换为前端应用能够直接使用的格式。


原始数据格式:


```json

{

   "orders": [

       {

           "order_id": "001",

           "customer": {

               "name": "John Doe",

               "email": "john.doe@example.com"

           },

           "items": [

               {

                   "product_name": "Widget",

                   "quantity": 4,

                   "price": 19.99

               },

               {

                   "product_name": "Gadget",

                   "quantity": 2,

                   "price": 29.99

               }

           ],

           "total_price": 139.94,

           "status": "shipped"

       },

       {

           "order_id": "002",

           "customer": {

               "name": "Jane Smith",

               "email": "jane.smith@example.com"

           },

           "items": [

               {

                   "product_name": "Thingamajig",

                   "quantity": 1,

                   "price": 99.99

               }

           ],

           "total_price": 99.99,

           "status": "processing"

       }

   ]

}

```


目标数据格式如下:


```javascript

[

   {

       orderId: "001",

       customerName: "John Doe",

       customerEmail: "john.doe@example.com",

       items: [

           { productName: "Widget", quantity: 4, price: 19.99 },

           { productName: "Gadget", quantity: 2, price: 29.99 }

       ],

       totalPrice: 139.94,

       status: "shipped"

   },

   {

       orderId: "002",

       customerName: "Jane Smith",

       customerEmail: "jane.smith@example.com",

       items: [

           { productName: "Thingamajig", quantity: 1, price: 99.99 }

       ],

       totalPrice: 99.99,

       status: "processing"

   }

]

```


我们可以使用AI工具来生成转换函数。我们与AI工具的对话提示词如下:


```python

# 请将以下JSON数据格式转换为特定的JavaScript对象格式

# JSON数据格式:

# {

#    "orders": [

#        {

#            "order_id": "001",

#            "customer": {

#                "name": "喵喵侠",

#                "email": "miaomiaoxia@tencent.com"

#            },

#            "items": [

#                {

#                    "product_name": "番茄",

#                    "quantity": 4,

#                    "price": 19.99

#                },

#                {

#                    "product_name": "土豆",

#                    "quantity": 2,

#                    "price": 29.99

#                }

#            ],

#            "total_price": 139.94,

#            "status": "shipped"

#        },

#        {

#            "order_id": "002",

#            "customer": {

#                "name": "三掌柜",

#                "email": "sanzhanggui666@tencent.com"

#            },

#            "items": [

#                {

#                    "product_name": "桃子",

#                    "quantity": 1,

#                    "price": 99.99

#                }

#            ],

#            "total_price": 99.99,

#            "status": "processing"

#        }

#    ]

# }

# 目标JavaScript对象格式:

# [

#    {

#        orderId: "001",

#        customerName: "喵喵侠",

#        customerEmail: "miaomiaoxia@tencent.com",

#        items: [

#            { productName: "番茄", quantity: 4, price: 19.99 },

#            { productName: "土豆", quantity: 2, price: 29.99 }

#        ],

#        totalPrice: 139.94,

#        status: "shipped"

#    },

#    {

#        orderId: "002",

#        customerName: "三掌柜",

#        customerEmail: "sanzhanggui666@tencent.com",

#        items: [

#            { productName: "桃子", quantity: 1, price: 99.99 }

#        ],

#        totalPrice: 99.99,

#        status: "processing"

#    }

# ]

```


提示词输入回车后,生成的回复如下:


\*\*\*


您需要将给定的JSON数据格式转换为特定的JavaScript对象格式。下面是转换后的JavaScript对象格式:


```javascript

const jsonData = {

   "orders": [

       {

           "order_id": "001",

           "customer": {

               "name": "喵喵侠",

               "email": "miaomiaoxia@tencent.com"

           },

           "items": [

               {

                   "product_name": "番茄",

                   "quantity": 4,

                   "price": 19.99

               },

               {

                   "product_name": "土豆",

                   "quantity": 2,

                   "price": 29.99

               }

           ],

           "total_price": 139.94,

           "status": "shipped"

       },

       {

           "order_id": "002",

           "customer": {

               "name": "三掌柜",

               "email": "sanzhanggui666@tencent.com"

           },

           "items": [

               {

                   "product_name": "桃子",

                   "quantity": 1,

                   "price": 99.99

               }

           ],

           "total_price": 99.99,

           "status": "processing"

       }

   ]

};


const formattedData = jsonData.orders.map(order => ({

   orderId: order.order_id,

   customerName: order.customer.name,

   customerEmail: order.customer.email,

   items: order.items.map(item => ({

       productName: item.product_name,

       quantity: item.quantity,

       price: item.price

   })),

   totalPrice: order.total_price,

   status: order.status

}));


console.log(formattedData);

```


这段代码会将给定的JSON数据转换为目标JavaScript对象格式,并输出到控制台。这样的转换会使数据更易于处理和使用,每个订单都包含了指定的属性名。如果您需要进一步的帮助或有其他问题,请随时告诉我!


\*\*\*


我用浏览器控制台测试一下,结果是对的。


![请在此添加图片描述](https://developer.qcloudimg.com/http-save/1209475/06c973c6821d95fa175c07ca79655ba4.png?qc_blockWidth=660&qc_blockHeight=622)


通过AI工具,我们可以快速生成这样的转换函数,减少手动编写代码的时间,并确保转换的准确性。我们在得到结果后,可以拿实际数据做下测试,验证下转换后的数据是否能正确。


### 使用 AI 工具快速生成Element-UI表单案例


在这个案例中,我们需要为电商平台的管理系统生成一个订单筛选表单。这个表单需要包括以下字段:


- 订单ID:文本输入框

- 客户名称:文本输入框

- 订单状态:下拉选择框(processing, shipped, delivered, cancelled)

- 下单日期范围:日期范围选择器


我们可以使用AI工具来生成Element-UI表单代码。我们与AI工具的对话提示词如下:


```markdown

请生成一个包含以下字段的Element-UI表单的代码:

- 订单ID:文本输入框

- 客户名称:文本输入框

- 订单状态:下拉选择框(processing, shipped, delivered, cancelled)

- 下单日期范围:日期范围选择器

```


输入提示词并回车,生成的结果如下:


\*\*\*


要生成一个包含指定字段的Element-UI表单代码,可以按照以下方式组织:


```html

<template>

 <el-form :model="formData" label-width="100px" ref="orderForm" class="demo-form-styl">

   <el-form-item label="订单ID" prop="orderId">

     <el-input v-model="formData.orderId" placeholder="请输入订单ID"></el-input>

   </el-form-item>


   <el-form-item label="客户名称" prop="customerName">

     <el-input v-model="formData.customerName" placeholder="请输入客户名称"></el-input>

   </el-form-item>


   <el-form-item label="订单状态" prop="orderStatus">

     <el-select v-model="formData.orderStatus" placeholder="请选择订单状态">

       <el-option label="processing" value="processing"></el-option>

       <el-option label="shipped" value="shipped"></el-option>

       <el-option label="delivered" value="delivered"></el-option>

       <el-option label="cancelled" value="cancelled"></el-option>

     </el-select>

   </el-form-item>


   <el-form-item label="下单日期范围" prop="orderDateRange">

     <el-date-picker

       v-model="formData.orderDateRange"

       type="daterange"

       start-placeholder="开始日期"

       end-placeholder="结束日期"

       :default-value="[new Date(new Date().getFullYear(), new Date().getMonth(), 1), new Date(new Date().getFullYear(), new Date().getMonth() + 1, 0)]"

       format="yyyy-MM-dd">

     </el-date-picker>

   </el-form-item>

 </el-form>

</template>


<script>

export default {

 data() {

   return {

     formData: {

       orderId: '',

       customerName: '',

       orderStatus: '',

       orderDateRange: []

     }

   };

 }

};

</script>


<style>

.demo-form-styl {

 max-width: 400px;

 margin: 0 auto;

 padding: 20px;

}

</style>

```


这段代码会生成一个简单的Element-UI表单,包含订单ID、客户名称、订单状态和下单日期范围等字段。您可以根据需要进一步定制样式和逻辑。如果您需要更多的帮助或有其他问题,请随时告诉我!


\*\*\*


为了方便演示,我让它改写成 html 格式的代码。目前的 AI 助手都可以记住上下文,我就输入了如下的提示词:


> 很好,请转换成html文件格式的代码,并使用 bootcdn


生成结果如下:


\*\*\*


以下是使用 BootCDN 的 HTML 文件格式代码示例:


```html

<!DOCTYPE html>

<html lang="en">


<head>

 <meta charset="UTF-8">

 <meta name="viewport" content="width=device-width, initial-scale=1.0">

 <title>Element-UI Form</title>

 <link rel="stylesheet" href="https://cdn.bootcdn.net/ajax/libs/element-ui/2.15.6/theme-chalk/index.css">

</head>


<body>

 <div id="app">

   <el-form :model="formData" label-width="100px" ref="orderForm" class="demo-form-styl">

     <el-form-item label="订单ID" prop="orderId">

       <el-input v-model="formData.orderId" placeholder="请输入订单ID"></el-input>

     </el-form-item>


     <el-form-item label="客户名称" prop="customerName">

       <el-input v-model="formData.customerName" placeholder="请输入客户名称"></el-input>

     </el-form-item>


     <el-form-item label="订单状态" prop="orderStatus">

       <el-select v-model="formData.orderStatus" placeholder="请选择订单状态">

         <el-option label="processing" value="processing"></el-option>

         <el-option label="shipped" value="shipped"></el-option>

         <el-option label="delivered" value="delivered"></el-option>

         <el-option label="cancelled" value="cancelled"></el-option>

       </el-select>

     </el-form-item>


     <el-form-item label="下单日期范围" prop="orderDateRange">

       <el-date-picker

         v-model="formData.orderDateRange"

         type="daterange"

         start-placeholder="开始日期"

         end-placeholder="结束日期"

         :default-value="[new Date(new Date().getFullYear(), new Date().getMonth(), 1), new Date(new Date().getFullYear(), new Date().getMonth() + 1, 0)]"

         format="yyyy-MM-dd">

       </el-date-picker>

     </el-form-item>

   </el-form>

 </div>


 <script src="https://cdn.bootcdn.net/ajax/libs/vue/2.6.12/vue.js"></script>

 <script src="https://cdn.bootcdn.net/ajax/libs/element-ui/2.15.6/index.js"></script>

 <script>

   new Vue({

     el: '#app',

     data: {

       formData: {

         orderId: '',

         customerName: '',

         orderStatus: '',

         orderDateRange: []

       }

     }

   });

 </script>


 <style>

   .demo-form-styl {

     max-width: 400px;

     margin: 0 auto;

     padding: 20px;

   }

 </style>

</body>


</html>

```


这个示例中使用了 BootCDN 加载了 Vue.js 和 Element-UI 的资源。您可以把这个代码保存为 .html 文件并在浏览器中打开查看效果。如有任何疑问,请随时向我提问。


\*\*\*


在 jsbin 里面,在线演示可以看到表单效果,我们来验证一下。


![请在此添加图片描述](https://developer.qcloudimg.com/http-save/1209475/d60d94986b131cfc63db82a330b85dec.png?qc_blockWidth=660&qc_blockHeight=294)


从图中效果可以发现,表单是生成了,但存在两个问题。于是我修改下提示词,并给出一点提示:


```vue

表单是生成了,但存在两个问题:

1. 默认时间没有设置成功;(你可以用 dayjs 在生命周期函数里面赋值)

2. 缺少查询和重置按钮

```


\*\*\*


下面是带有 dayjs 设置默认时间和查询、重置按钮的 HTML 文件代码,你可以保存为 .html 文件并在浏览器中查看效果:


```html

<!DOCTYPE html>

<html lang="en">


<head>

 <meta charset="UTF-8">

 <meta name="viewport" content="width=device-width, initial-scale=1.0">

 <title>Element-UI Form with Buttons</title>

 <link rel="stylesheet" href="https://cdn.bootcdn.net/ajax/libs/element-ui/2.15.6/theme-chalk/index.css">

</head>


<body>

 <div id="app">

   <el-form :model="formData" label-width="100px" ref="orderForm" class="demo-form-styl">

     <el-form-item label="订单ID" prop="orderId">

       <el-input v-model="formData.orderId" placeholder="请输入订单ID"></el-input>

     </el-form-item>


     <el-form-item label="客户名称" prop="customerName">

       <el-input v-model="formData.customerName" placeholder="请输入客户名称"></el-input>

     </el-form-item>


     <el-form-item label="订单状态" prop="orderStatus">

       <el-select v-model="formData.orderStatus" placeholder="请选择订单状态">

         <el-option label="processing" value="processing"></el-option>

         <el-option label="shipped" value="shipped"></el-option>

         <el-option label="delivered" value="delivered"></el-option>

         <el-option label="cancelled" value="cancelled"></el-option>

       </el-select>

     </el-form-item>


     <el-form-item label="下单日期范围" prop="orderDateRange">

       <el-date-picker

         v-model="formData.orderDateRange"

         type="daterange"

         start-placeholder="开始日期"

         end-placeholder="结束日期"

         :default-value="defaultDateRange"

         format="yyyy-MM-dd">

       </el-date-picker>

     </el-form-item>


     <el-form-item>

       <el-button type="primary" @click="submitForm">查询</el-button>

       <el-button @click="resetForm">重置</el-button>

     </el-form-item>

   </el-form>

 </div>


 <script src="https://cdn.bootcdn.net/ajax/libs/vue/2.6.12/vue.js"></script>

 <script src="https://cdn.bootcdn.net/ajax/libs/element-ui/2.15.6/index.js"></script>

 <script src="https://cdn.bootcdn.net/ajax/libs/dayjs/1.10.7/dayjs.min.js"></script>

 <script>

   new Vue({

     el: '#app',

     data: {

       formData: {

         orderId: '',

         customerName: '',

         orderStatus: '',

         orderDateRange: []

       },

       defaultDateRange: [dayjs().startOf('month').toDate(), dayjs().endOf('month').toDate()]

     },

     methods: {

       submitForm() {

         // 实现查询表单提交逻辑

         console.log('Form submitted');

       },

       resetForm() {

         this.formData = {

           orderId: '',

           customerName: '',

           orderStatus: '',

           orderDateRange: []

         };

         this.defaultDateRange = [dayjs().startOf('month').toDate(), dayjs().endOf('month').toDate()];

       }

     },

     created() {

       this.defaultDateRange = [dayjs().startOf('month').toDate(), dayjs().endOf('month').toDate()];

     }

   });

 </script>


 <style>

   .demo-form-styl {

     max-width: 400px;

     margin: 0 auto;

     padding: 20px;

   }

 </style>

</body>


</html>

```


这个代码添加了两个按钮("查询" 和 "重置"),并使用了 dayjs 库在生命周期函数中设置了默认日期范围。你可以保存并在浏览器中打开以查看效果。如有任何问题,请告诉我。


\*\*\*


这次按钮确实是生成了,但是默认日期还是没有显示出来。


![请在此添加图片描述](https://developer.qcloudimg.com/http-save/1209475/c4e23681cacbee2c7b62b697fc0c7b48.png?qc_blockWidth=660&qc_blockHeight=222)


这里我手动改了下代码,把 created 里面的defaultDateRange赋值,改成对绑定的 v-model的formData.orderDateRange的赋值。这样改一下就好了。


![请在此添加图片描述](https://developer.qcloudimg.com/http-save/1209475/d77dcaa4df833e634310b9c68beafe34.png?qc_blockWidth=660&qc_blockHeight=241)


这个例子,只是一个基本的用法,出现了部分功能没实现的问题,类似这样的问题,很多人都会遇到,AI 工具有时候也会幻觉,需要人为修正下。如果你有特殊的定制化需要,比方说指定 v-model 绑定的值和 prop,亦或是需要根据某个 radio 来显示隐藏部分表单,也是可以实现的。有时候出现完成度并不能达到 100%完美,仍然需要你用你的开发经验和提问技巧,来进一步得出正确的结果。


通过AI工具,我们能够快速生成这样一个包含多种交互元素的表单,极大地减少了手动编写代码的工作量。开发者只需要对生成的代码进行少量的调整和优化,即可完成复杂表单的开发。


## 总结


AI工具在前端开发中的应用为开发者带来了显著的效率提升。通过自动代码生成、智能数据处理和快速组件生成等功能,开发者可以更专注于业务逻辑和用户体验的优化,而不再被繁琐的重复性工作所困扰。本文通过具体的业务场景和案例,展示了AI工具在数据格式处理和复杂表单生成中的实际应用,希望能为前端开发者提供一些有益的启示。我相信,随着AI技术的不断进步,未来的前端开发将更加智能和高效。

目录
相关文章
|
3月前
|
Web App开发 人工智能 前端开发
网站搭建黑科技:AI 写前端页面 + CMS 管理系统搭建实操指南
本文聚焦 AI 编程前端开发与 PageAdmin CMS 集成的可落地技术方案。先详解 AI 编程前端的三类核心途径(设计稿直转、提示词驱动、脚手架生成)及标准化操作步骤,再阐述 PageAdmin CMS 的环境配置、部署流程,以及栏目模型配置、API 对接、数据渲染等集成实操,形成 “AI 提效 + CMS 赋能” 的网站搭建技术闭环,为开发者提供工程化指引。
958 14
|
3月前
|
人工智能 前端开发 IDE
仅凭几张图片,我们是如何让 AI 自动生成 70% 可用前端代码的?
本文系统总结了在仅有 UI 图片、无设计稿和交互说明的情况下,如何通过 AI 技术实现高质量前端代码自动生成。
仅凭几张图片,我们是如何让 AI 自动生成 70% 可用前端代码的?
vue3 wangEditor富文本自定义上传本地图片
Vue3和WangEditor都提供了上传本地图片的功能,可以结合使用实现自定义上传本地图片。
1875 0
|
前端开发 JavaScript UED
如何更好的去除谷歌浏览器中input自动填充背景?
如何更好的去除谷歌浏览器中input自动填充背景?
如何更好的去除谷歌浏览器中input自动填充背景?
|
29天前
|
存储 人工智能 IDE
AI Coding 长文分享:如何真正把工具用起来,从原理到实践
本文从原理到实践系统地分享了如何高效使用AI编程工具。涵盖其底层机制(如Token计算、工具调用、Codebase索引与Merkle Tree)、提升对话质量的方法(如规则设置、渐进式开发)、实际应用场景(如代码检索、绘图生成、问题排查),并推荐了结合AI的编码最佳实践,包括文档、注释、命名规范和安全合规,旨在帮助不同经验水平的开发者真正把AI工具用好。
AI Coding 长文分享:如何真正把工具用起来,从原理到实践
|
5月前
|
人工智能 自然语言处理 前端开发
利用 AI 助手进行 Web 开发通
AI编程助手如DeepSeek正改变Web开发模式,通过理解自然语言生成可运行代码,提升效率、降低门槛。开发者只需描述需求,AI即可生成框架并协助迭代优化与调试,助力专注创意与架构设计,实现人机协同高效开发。
412 0
|
5月前
|
人工智能 前端开发 JavaScript
前端工程化演进之路:从手工作坊到AI驱动的智能化开发
前端工程化演进之路:从手工作坊到AI驱动的智能化开发
788 18
前端工程化演进之路:从手工作坊到AI驱动的智能化开发
|
6月前
|
人工智能 搜索推荐 数据挖掘
小红书电商 API 开启小红书店铺电商内容营销新范式
小红书电商 API 为商家提供自动化运营与内容营销新范式,支持商品管理、批量发布 UGC、数据分析等功能,提升效率、降低成本,助力品牌实现精准营销与用户深度互动。
196 5
|
10月前
|
存储 人工智能 安全
一文了解:阿里云对象存储OSS是什么?
阿里云对象存储OSS是一款海量、安全、低成本、高可靠的云存储服务,数据持久性达99.9999999999%,适用于互联网音视频、教育、AI/物联网、影视渲染及基因等行业。OSS提供标准、低频、归档等多种存储类型,支持按量付费与资源包两种计费模式,公网出流量收费,内网流量免费。
12027 7
|
机器学习/深度学习 人工智能 自然语言处理
详解:Poe AI国内版_国内使用Poe AI的最优选择!
Poe 的出现标志着 Quora 对 AI 和自然语言处理 (NLP) 技术的深入探索,预示着 AI 在我们日常生活中将扮演越来越重要的角色。
864 13