Vue.js新手入门实践 - 表单、列表、搜索与分页示例
2024-01-27 05:42:02
1. Vue.js入门 - 概述
Vue.js是一个渐进式JavaScript框架,它允许您以一种声明性方式构建用户界面。它可以帮助您轻松创建响应式、可复用的组件,并且易于上手。
2. Element-ui简介
Element-ui是一个基于Vue.js的组件库,它提供了丰富的UI组件,包括表单、按钮、表格、布局、导航等,可以帮助您快速构建出美观、实用的用户界面。
3. 搭建Vue.js开发环境
首先,我们需要安装Vue.js和Element-ui。您可以使用npm或yarn进行安装。
npm install vue
npm install element-ui
安装完成后,我们需要创建一个Vue.js项目。您可以使用Vue CLI进行创建。
vue create my-project
4. 创建表单添加、列表展示页面
在src目录下,创建一个components文件夹,并在其中创建一个名为Form.vue的文件。这是我们的表单组件。
<template>
<el-form :model="form">
<el-form-item label="姓名">
<el-input v-model="form.name"></el-input>
</el-form-item>
<el-form-item label="年龄">
<el-input v-model="form.age"></el-input>
</el-form-item>
<el-form-item>
<el-button type="primary" @click="submit">提交</el-button>
</el-form-item>
</el-form>
</template>
<script>
export default {
data() {
return {
form: {
name: '',
age: ''
}
}
},
methods: {
submit() {
// 这里可以做一些表单提交的逻辑
console.log(this.form)
}
}
}
</script>
在src目录下,创建一个views文件夹,并在其中创建一个名为List.vue的文件。这是我们的列表组件。
<template>
<div>
<el-table :data="tableData" style="width: 100%">
<el-table-column prop="name" label="姓名"></el-table-column>
<el-table-column prop="age" label="年龄"></el-table-column>
</el-table>
</div>
</template>
<script>
export default {
data() {
return {
tableData: [
{
name: '张三',
age: 20
},
{
name: '李四',
age: 30
},
{
name: '王五',
age: 40
}
]
}
}
}
</script>
5. 添加搜索和分页功能
在src目录下,创建一个store文件夹,并在其中创建一个名为index.js的文件。这是我们的Vuex store。
import Vue from 'vue'
import Vuex from 'vuex'
Vue.use(Vuex)
const store = new Vuex.Store({
state: {
currentPage: 1,
pageSize: 10,
tableData: [
{
name: '张三',
age: 20
},
{
name: '李四',
age: 30
},
{
name: '王五',
age: 40
}
],
searchValue: ''
},
mutations: {
setCurrentPage(state, page) {
state.currentPage = page
},
setPageSize(state, size) {
state.pageSize = size
},
setTableData(state, data) {
state.tableData = data
},
setSearchValue(state, value) {
state.searchValue = value
}
},
getters: {
getTableData: state => {
// 这里可以对tableData进行一些处理,比如搜索、分页等
return state.tableData
}
}
})
export default store
在src目录下,创建一个components文件夹,并在其中创建一个名为Pagination.vue的文件。这是我们的分页组件。
<template>
<el-pagination
:current-page="currentPage"
:page-size="pageSize"
:total="tableData.length"
@current-change="handleCurrentPageChange"
@size-change="handlePageSizeChange"
></el-pagination>
</template>
<script>
export default {
props: {
tableData: {
type: Array,
required: true
}
},
data() {
return {
currentPage: 1,
pageSize: 10
}
},
methods: {
handleCurrentPageChange(page) {
this.currentPage = page
this.$emit('update:currentPage', page)
},
handlePageSizeChange(size) {
this.pageSize = size
this.$emit('update:pageSize', size)
}
}
}
</script>
在src目录下,创建一个views文件夹,并在其中创建一个名为Index.vue的文件。这是我们的主页面。
<template>
<div>
<Form v-model="form"></Form>
<List :table-data="tableData"></List>
<Pagination :table-data="tableData" v-model="currentPage" v-model="pageSize"></Pagination>
</div>
</template>
<script>
import Form from '../components/Form.vue'
import List from '../components/List.vue'
import Pagination from '../components/Pagination.vue'
import store from '../store'
export default {
components: {
Form,
List,
Pagination
},
data() {
return {
currentPage: 1,
pageSize: 10,
tableData: []
}
},
computed: {
tableData() {
// 这里可以对tableData进行一些处理,比如搜索、分页等
return store.getters.getTableData
}
},
created() {
// 初始化数据
this.fetchData()
},
methods: {
fetchData() {
// 这里可以从服务器端获取数据
this.tableData = [
{
name: '张三',
age: 20
},
{
name: '李四',
age: 30
},
{
name: '王五',
age: 40
}
]
}
}
}
</script>
6. 运行项目
npm run serve
打开浏览器,访问http://localhost:8080即可看到我们的项目。
7. 结语
本文通过一个完整的Vue.js入门demo,一步步教会您如何使用Vue.js和Element-ui库轻松创建表单添加、列表展示、支持搜索和分页的功能,让您轻松入门Vue.js开发。