项目要求
这次我们将探讨一个实验项目,即“商品管理系统”实现。项目的主要目的在于完成一个基于 HTML、CSS 和 Vue.js 的商品管理界面,同时实现相关数据管理操作。这是一个初学者适用的项目。
项目核心目标
-
页面布局与交互: 通过 HTML 和 CSS,建立直观易用的商品管理界面,借助 Vue.js 实现用户友好的交互体验。
-
Vue.js 数据绑定: 学习并应用 Vue.js 的数据绑定机制,以确保页面实时反映数据变化,提升用户体验。
-
数据管理操作: 使用 Vue.js 提供的方法,实现商品数据的增删改查操作,以保证商品信息的灵活管理。
项目关键词
- Vue.js
- 商品管理系统
- 前端开发
- 数据绑定
- HTML/CSS
效果展示
项目思路
项目结构:
首先,让我们来看一下整个项目的结构。我们将采用简洁而有层次感的布局,以提高代码的可读性和可维护性。主要的结构包括:
-
HTML 文件: 包含商品管理系统的主要页面结构,包括商品列表和添加/编辑表单等部分。
-
CSS 文件: 负责样式设计,使页面呈现出清晰的布局、美观的颜色搭配以及良好的用户交互体验。
-
Vue.js 组件文件: 将不同功能划分为组件,如商品列表组件、添加/编辑表单组件等,有助于代码模块化和复用。
功能实现:
现在,我们来了解一下如何通过 Vue.js 实现商品的各项功能。
-
添加商品: 用户在表单中输入商品信息,点击提交按钮后,通过 Vue.js 的方法将商品信息添加到商品列表中。
-
编辑商品: 用户点击商品列表中的“修改”链接后,Vue.js 将相关商品信息填充到表单中,用户可修改信息并提交,实现商品信息的编辑。
-
删除商品: 用户点击商品列表中的“删除”链接,Vue.js 将识别出被选择的商品,并在商品列表中删除该商品。
数据管理:
Vue.js 的数据绑定机制是这个项目的核心。通过合理使用数据绑定,我们能够实时更新页面上的数据,确保用户界面和数据之间的同步。
-
商品列表数据: 使用 Vue.js 的数据绑定,将商品列表与数据源关联,实现数据的动态更新。
-
表单数据: 将表单中的输入框与 Vue.js 的数据绑定,使得用户在输入时,数据随之更新,为后续的提交和编辑提供便利。
交互逻辑:
最后,让我们来看一下用户与页面交互的逻辑。
-
提交表单: 用户在填写完商品信息后,点击提交按钮,触发 Vue.js 的相关方法,完成商品的添加或编辑操作。
-
清空表单: 提供“清空”按钮,用户点击后,Vue.js 将相关数据清空,表单恢复到初始状态。
-
编辑和删除操作: 用户点击商品列表中的“修改”和“删除”链接,触发 Vue.js 中的相应方法,完成对商品信息的编辑和删除操作.
具体代码
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Document</title>
<style type="text/css">
/* CSS 样式 */
.grid {
margin: auto;
width: 530px;
text-align: center;
}
.grid table {
border-top: 1px solid #C2D89A;
width: 100%;
border-collapse: collapse;
}
.grid th,td {
padding: 10px;
border: 1px dashed #F3DCAB;
height: 35px;
line-height: 35px;
}
.grid th {
background-color: #F3DCAB;
}
.grid .film {
padding-bottom: 10px;
padding-top: 5px;
background-color: #F3DCAB;
}
</style>
</head>
<body>
<!-- Vue 应用的根节点 -->
<div id="app">
<div class="grid">
<div>
<!-- 商品管理标题 -->
<h1>商品管理</h1>
<div class="film">
<div>
<!-- 商品信息输入表单 -->
<label for="id">编号:</label>
<input type="text" id="id" v-model="id" :disabled="flag" style="margin-top: 20px;"><br>
<label for="name">名称:</label>
<input type="text" id="name" v-model="name"><br>
<label for="price">价格:</label>
<input type="text" id="price" v-model="price" style="margin-bottom: 20px;"><br>
<!-- 提交和清空按钮 -->
<button @click="handle">提交</button>
<button @click="clearForm" style="margin-right: -54px; margin-left: 44px;">清空</button>
</div>
</div>
</div>
<!-- 商品信息展示表格 -->
<table>
<thead>
<tr>
<th>编号</th>
<th>名称</th>
<th>价格</th>
<th>操作</th>
</tr>
</thead>
<tbody>
<!-- 商品数据循环展示 -->
<tr :key="item.id" v-for="item in films">
<td>{{item.id}}</td>
<td>{{item.name}}</td>
<td>{{item.price}}</td>
<td>
<!-- 修改和删除操作链接 -->
<a href="" @click.prevent="toEdit(item.id)">修改</a>
<span>|</span>
<a href="" @click.prevent="deleteFilm(item.id)">删除</a>
</td>
</tr>
</tbody>
</table>
</div>
</div>
<!-- 引入 Vue.js -->
<script type="text/javascript" src="js/vue3.js"></script>
<!-- Vue 实例和相关方法 -->
<script type="text/javascript">
var vm = new Vue({
el: '#app',
data: {
flag: false,
id: '',
name: '',
price: '',
films: [{
id: 1,
name: '康师傅方便面',
price: '6'
},{
id: 2,
name: '百岁山矿泉水',
price: '3'
},{
id: 3,
name: '德芙巧克力',
price: '10'
},{
id: 4,
name: '酱福猪肘子',
price: '40'
}]
},
methods: {
// 处理提交和编辑逻辑的方法
handle: function(){
if(this.flag) {
// 编辑商品
this.films.some((item) => {
if(item.id == this.id) {
item.name = this.name;
item.price = this.price;
return true;
}
});
this.flag = false;
} else {
// 添加商品
var film = {};
film.id = this.id;
film.name = this.name;
film.price = this.price;
this.films.push(film);
this.clearForm(); // 清空表单
}
},
// 进入编辑状态的方法
toEdit: function(id){
this.flag = true;
var film = this.films.find(function(item){
return item.id == id;
});
this.id = film.id;
this.name = film.name;
this.price = film.price;
},
// 删除商品的方法
deleteFilm: function(id){
var index = this.films.findIndex(function(item){
return item.id == id;
});
this.films.splice(index, 1);
},
// 清空表单的方法
clearForm: function(){
this.id = '';
this.name = '';
this.price = '';
}
}
});
</script>
</body>
</html>
代码解释:
- CSS 样式: 设置页面元素的样式,包括外边距、表格样式等,以实现良好的页面布局。
- HTML 结构: 通过HTML定义了页面的基本结构,包括商品管理标题、商品信息输入表单、提交和清空按钮、商品信息展示表格以及商品数据循环展示。
- Vue.js 部分: 创建了一个Vue实例,通过data属性定义了页面所需的数据(id、name、price、films等)和一些标识变量(flag),methods属性中定义了处理提交、编辑、删除等逻辑的方法。
- Vue 数据绑定: 利用Vue.js的数据绑定机制,将输入框和数据模型绑定,实现实时更新。
- Vue 事件绑定: 使用Vue指令@绑定按钮的点击事件,触发相应的Vue方法。
- Vue 数据循环: 使用v-for指令循环展示商品数据。
项目链接
GitHub:https://github.com/Olivia-account/VueCommerceManagementSystem
后记
如果觉得有帮助的话,求 关注、收藏、点赞、星星 哦!