Vue.js 入门

简介: 背景 为了学习spring,准备写一个通讯录demo,实现增删改查功能。 前端页面同事推荐用vue.js,因为简单快速,当然前提是基于你对前端的html,css,js有一定的了解   资料   vue.

背景

为了学习spring,准备写一个通讯录demo,实现增删改查功能。

前端页面同事推荐用vue.js,因为简单快速,当然前提是基于你对前端的html,css,js有一定的了解

 

资料

 

vue.js 官网: https://cn.vuejs.org/

axios: https://www.npmjs.com/package/axios

 

实例说明

整体思路

items用于页面展示,contact用于新增数据的存储,editContact用于修改数据的存储和展示

新建数据,页面form跟data绑定,存储在data中,axios获取data中的数据,向后端发起请求插入数据库,插入数据成功后,将前端form的数据存在items中用于页面展示;

修改数据,通过页面item.id通过axio向后端获取数据,展示在弹出窗口上,然后弹出窗口绑定了click时间触发后端editContact方法;

删除数据,页面数据通过直接获取item.id直接调用后端的删除接口,然后前端items也删除数据;

查询数据,直接接口

 

实例Vue,data来存储数据

var vm = new Vue({
        el: '#contacts',
        data: {
            contact: {
                id:'',                
                name: '',
                wechat: '',
                phone: '',
                address: '',
                industry: ''
            },
            editContact:{
                 id:'',
                 name: '',
                 wechat: '',
                 phone: '',
                 address: '',
                 industry: ''
            },
            items: []
        }

 

数据绑定,将form表单里面的内容跟data中的contact双向绑定,页面填写的数据会保存在data.contact中,可以修改data.contact的数据来控制页面的数据展示

<form role="form" class="form-horizontal" id="contactForm">

    <label for="name">Name</label><input type="text" class="form-control" id="name" v-model="contact.name" /> 
    <label for="wechat">Wechat</label><input type="text" class="form-control" id="wechat" v-model="contact.wechat" />
    <label for="phone">Phone</label><input type="text" class="form-control" id="phone" v-model="contact.phone" />
    <label for="address">Address</label><input type="text" class="form-control" id="address" v-model="contact.address" />
    <label for="industry">Industry</label><input type="text" class="form-control" id="industry" v-model="contact.industry" />

        <div class="modal-footer">
            <button type="button" class="btn btn-default" data-dismiss="modal">关闭</button>
            <button type="button" class="btn btn-primary" v-on:click="insertContact" aria-hidden="true" data-dismiss="modal">保存</button>
        </div>
</form>

 

v-for 遍历数据,列表展示数据,index为列表下标,遍历items里面的数据

<tr v-for="(item,index) in items">
    <td>{{item.name}}</td>
    <td>{{item.wechat}}</td>
    <td>{{item.phone}}</td>
    <td>{{item.address}}</td>
    <td>{{item.industry}}</td>
    <td>
        <a class="btn btn-default" v-on:click="getEditContactId(item.id)" href="#modal-container-edit" data-toggle="modal">Edit</a>
        <a class="btn btn-default" v-on:click="deleteContact(item.id,index)">Delete</a>
    </td>
</tr>

 

 mounted调用methods里面的方法,如mounted调用methods里面的getAllContact方法

mounted: function () {
            this.getAllContact();
        }

 

跟后端的交互请求,使用axios,如下get请求

getAllContact: function(){
            axios.get('/contact/all')
            .then(function (response) {
                console.log(response.data);
                vm.items=response.data
            })
                .catch(function (error) {
                    console.log(error)
                });
        }

 

methods里面方法的相互调用,edit完去调用getAllContact方法

 editContactInfo: function(){
                
                var editInfo = JSON.stringify(vm.editContact);
                
                var instance = axios.create({
                    timeout: 1000,
                    headers: { 'Content-Type': 'application/json' }
                });
                             
                instance.post('/contact/edit/'+vm.editContact.id,editInfo)
                   .then(function (response){
                       console.log(response.data);
                       vm.getAllContact();
                   })
                   .catch(function (error){
                       console.log(error);
                   })
            }

 

动作触发,v-on:click="方法名",点击edit触发getEditContactId方法

<a class="btn btn-default" v-on:click="getEditContactId(item.id)" href="#modal-container-edit" data-toggle="modal">Edit</a> 
<a class="btn btn-default" v-on:click="deleteContact(item.id,index)">Delete</a>

 

虽千万人,吾往矣!
目录
相关文章
|
1月前
|
前端开发 机器人 API
前端大模型入门(一):用 js+langchain 构建基于 LLM 的应用
本文介绍了大语言模型(LLM)的HTTP API流式调用机制及其在前端的实现方法。通过流式调用,服务器可以逐步发送生成的文本内容,前端则实时处理并展示这些数据块,从而提升用户体验和实时性。文章详细讲解了如何使用`fetch`发起流式请求、处理响应流数据、逐步更新界面、处理中断和错误,以及优化用户交互。流式调用特别适用于聊天机器人、搜索建议等应用场景,能够显著减少用户的等待时间,增强交互性。
254 2
|
13天前
|
机器学习/深度学习 自然语言处理 前端开发
前端神经网络入门:Brain.js - 详细介绍和对比不同的实现 - CNN、RNN、DNN、FFNN -无需准备环境打开浏览器即可测试运行-支持WebGPU加速
本文介绍了如何使用 JavaScript 神经网络库 **Brain.js** 实现不同类型的神经网络,包括前馈神经网络(FFNN)、深度神经网络(DNN)和循环神经网络(RNN)。通过简单的示例和代码,帮助前端开发者快速入门并理解神经网络的基本概念。文章还对比了各类神经网络的特点和适用场景,并简要介绍了卷积神经网络(CNN)的替代方案。
|
13天前
|
移动开发 前端开发 JavaScript
前端实训,刚入门,我用原生技术(H5、C3、JS、JQ)手写【网易游戏】页面特效
于辰在大学期间带领团队参考网易游戏官网的部分游戏页面,开发了一系列前端实训作品。项目包括首页、2021校园招聘页面和明日之后游戏页面,涉及多种特效实现,如动态图片切换和人物聚合效果。作品源码已上传至CSDN,视频效果可在CSDN预览。
20 0
前端实训,刚入门,我用原生技术(H5、C3、JS、JQ)手写【网易游戏】页面特效
|
21天前
|
监控 前端开发 JavaScript
React 静态网站生成工具 Next.js 入门指南
【10月更文挑战第20天】Next.js 是一个基于 React 的服务器端渲染框架,由 Vercel 开发。本文从基础概念出发,逐步探讨 Next.js 的常见问题、易错点及解决方法,并通过具体代码示例进行说明,帮助开发者快速构建高性能的 Web 应用。
56 10
|
18天前
|
数据采集 存储 JavaScript
如何使用Puppeteer和Node.js爬取大学招生数据:入门指南
本文介绍了如何使用Puppeteer和Node.js爬取大学招生数据,并通过代理IP提升爬取的稳定性和效率。Puppeteer作为一个强大的Node.js库,能够模拟真实浏览器访问,支持JavaScript渲染,适合复杂的爬取任务。文章详细讲解了安装Puppeteer、配置代理IP、实现爬虫代码的步骤,并提供了代码示例。此外,还给出了注意事项和优化建议,帮助读者高效地抓取和分析招生数据。
如何使用Puppeteer和Node.js爬取大学招生数据:入门指南
|
2月前
|
JavaScript 前端开发 小程序
一小时入门Vue.js前端开发
本文是作者关于Vue.js前端开发的快速入门教程,包括结果展示、参考链接、注意事项以及常见问题的解决方法。文章提供了Vue.js的基础使用介绍,如何安装和使用cnpm,以及如何解决命令行中遇到的一些常见问题。
一小时入门Vue.js前端开发
|
1月前
|
存储 JavaScript 前端开发
前端开发:Vue.js入门与实战
【10月更文挑战第9天】前端开发:Vue.js入门与实战
|
1月前
|
自然语言处理 JavaScript 前端开发
JavaScript高级——ES6基础入门
JavaScript高级——ES6基础入门
22 1
|
1月前
|
JavaScript API 开发者
十分钟 带你强势入门 vue3
十分钟 带你强势入门 vue3
61 1
|
1月前
|
机器学习/深度学习 自然语言处理 前端开发
前端大模型入门:Transformer.js 和 Xenova-引领浏览器端的机器学习变革
除了调用API接口使用Transformer技术,你是否想过在浏览器中运行大模型?Xenova团队推出的Transformer.js,基于JavaScript,让开发者能在浏览器中本地加载和执行预训练模型,无需依赖服务器。该库利用WebAssembly和WebGPU技术,大幅提升性能,尤其适合隐私保护、离线应用和低延迟交互场景。无论是NLP任务还是实时文本生成,Transformer.js都提供了强大支持,成为构建浏览器AI应用的核心工具。
433 1