在前端开发的日新月异中,AI引入,为我们带来了一场技术的变革。本文将深入探讨如何利用AI,实现前端工程师零代码打造VUE的《部门组件》开发实践,使开发者能够更专注于创意和业务逻辑。
实现目标:
我们的目标是使用AI工具,通过对话的形式实现《部门组件》的开发,理解我们的需求并以高质量的代码形式呈现。完全摆脱手动编写代码的烦恼。
成果展示:
通过AI的协助,以下是实现后的效果,是不是很赞 🎉🎉🎉
实施步骤:
自动化代码生成: AI 聊将以对话的方式生成前端代码,理解开发者的需求并转化为符合最佳实践的代码。
完整代码: 复制代码即可执行
js
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<title>部门选择</title>
<style>
.breadcrumb {
margin-bottom: 10px;
}
.department-list {
list-style-type: none;
padding: 0;
}
.department-item {
margin-bottom: 5px;
}
</style>
</head>
<body>
<div id="app">
<div class="breadcrumb">
<button @click="navigateTo(0)">全部</button>
<span v-for="(crumb, index) in breadcrumbs" :key="index">
> <button @click="navigateTo(index + 1)">{{ crumb.name }}</button>
</span>
</div>
<ul class="department-list">
<li
v-for="dept in visibleDepartments"
:key="dept.id"
class="department-item"
>
{{ dept.name }}
<button
v-if="hasChildDepartments(dept.id)"
@click="toggleDepartment(dept)"
>
下级部门
</button>
<input
type="radio"
:value="dept.id"
@change="handleRadioChange(dept.id)"
/>选中
</li>
</ul>
</div>
<script src="https://cdn.jsdelivr.net/npm/vue@2"></script>
<script>
new Vue({
el: "#app",
data: {
departments: [],
breadcrumbs: [],
selectedDepartmentId: 0,
},
computed: {
visibleDepartments() {
return this.departments.filter(
(dept) => dept.pId === this.selectedDepartmentId
);
},
},
created() {
// 模拟从接口获取数据
const responseData = {
code: 200,
msg: "SUCCESS",
data: {
depts: [
{
id: 0,
name: "全部",
pId: 0,
},
{
id: 32,
name: "财务",
pId: 0,
},
{
id: 27,
name: "销售",
pId: 32,
},
{
id: 144,
name: "无敌顺达",
pId: 143,
},
{
id: 145,
name: "快达车队",
pId: 144,
},
{
id: 146,
name: "飞速",
pId: 144,
},
{
id: 131,
name: "测试勿动",
pId: 0,
},
{
id: 147,
name: "瓜果运输",
pId: 145,
},
{
id: 143,
name: "创新技术与数字化解决方案",
pId: 131,
},
{
id: 137,
name: "其他",
pId: 0,
},
],
usageRules: [
{
id: 154,
name: "测试制度测试制度",
},
{
id: 152,
name: "测试",
},
{
id: 112,
name: "加油制度123",
},
{
id: 107,
name: "255",
},
{
id: 101,
name: "12",
},
{
id: 37,
name: "1223",
},
],
},
};
this.departments = responseData.data.depts.slice(1); // 排除虚拟的顶级部门
// 假设传入的选中部门ID为 145,可根据实际情况修改
const selectedId = 147;
this.selectDepartmentById(selectedId,145);
},
methods: {
handleRadioChange(departmentId) {
console.log("选中部门ID:", departmentId);
},
hasChildDepartments(parentId) {
return this.departments.some((dept) => dept.pId === parentId);
},
toggleDepartment(dept) {
this.selectedDepartmentId = dept.id;
// 更新面包屑
const index = this.breadcrumbs.findIndex(
(crumb) => crumb.id === dept.id
);
if (index === -1) {
this.breadcrumbs.push(dept);
} else {
this.breadcrumbs = this.breadcrumbs.slice(0, index + 1);
}
},
navigateTo(index) {
// 点击"全部"按钮时回到初始状态
if (index === 0) {
this.selectedDepartmentId = 0;
this.breadcrumbs = [];
} else {
// 根据面包屑导航快速定位
const department = this.breadcrumbs[index - 1];
this.selectedDepartmentId = department.id;
this.breadcrumbs = this.breadcrumbs.slice(0, index);
}
},
selectDepartmentById(id, pid) {
// 清除面包屑
this.breadcrumbs = [];
const recursiveSelect = (currentId) => {
const department = this.departments.find(
(dept) => dept.id === currentId
);
if (department) {
// 如果部门有上级部门,递归处理
if (department.pId !== 0) {
recursiveSelect(department.pId);
}
// 更新面包屑
if (department.id !== id) this.breadcrumbs.push(department);
}
};
// 开始递归选择
recursiveSelect(id);
console.log(this.breadcrumbs, "-----");
// 设置选中的部门
this.selectedDepartmentId = pid;
},
},
});
</script>
</body>
</html>
结语:
通过本项目,我们不仅仅是在开发一个《部门组件》,更是在重新定义前端开发的方式。AI的引入为我们带来了零代码时代的曙光,让开发者能够更专注于创意,更高效地打造出更加卓越的前端应用。
PS:说点有趣的...至于会不会导致对应岗位失业,我觉得不需要焦虑。
这一切更像是在为前端开发者解放时间,让他们从繁琐的代码编写中解脱出来,更多地沉浸在创造性的工作中。就像当年工业革命让人们从重复劳动中解放一样,AI为我们提供了一种全新的开发体验。
未来,前端开发者的角色可能更加强调创意、用户体验设计和系统优化,而不是被困在代码的细枝末节中。让我们迎接这个有趣的未来,与AI一同创造更为引人入胜的数字化世界。而对于岗位的失业担忧,或许只是我们进步的必然代价,但同时也会创造出更多新领域和新机会。在这个时代的浪潮中,让我们一同冲浪,迎接未知的挑战和机遇!