JavaWeb之Vue

前言

这一节讲Vue

1. Vue概述

在这里插入图片描述
在这里插入图片描述
这些都是DOM的操作

在这里插入图片描述
原来模型和视图不能实现同步变化,但是Vue就可以了

2. 快速入门

在这里插入图片描述
1.
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
2.
在这里插入图片描述

    <script src="js/vue.js"></script>

    <div id="app">
<!--        准备一个input输入框,绑定一个模型,这个模型的名字就是username,,,,{{username}}这个是差值表达式,把username里面的模型的数据取出来-->
<!--        后面input输入框的数据产生变化,模型跟着变,取出来的数据也跟着变化-->
        <input v-model="username">
        {{username}}
    </div>

    <script>
        //1.创建vue核心对象---->它有两个属性,一个el--->指定vue的作用范围--->id为app的就可以被Vue作用
        //data属性就是返回一个username的空字符串的属性
        new Vue({
            el:"#app",
            // data:function () {
            //     return {
            //         username:""
            //     }
            // }或
            data(){
                return {
                    username:""
                }
            }
        })
    </script>

在这里插入图片描述
这里我们输入什么,就展示出来什么

3. 常用指令

v-model就是用来数据双向绑定的
在这里插入图片描述

在这里插入图片描述

    <div id="app">
<!--        <a href=""></a>  以前这样写href,href就写死了,现在我们换一下,,这个url加上v-bind就是模型里面的url-->
        <a v-bind:href="url">点击一下</a>
    </div>

    <script>
        new Vue({
            el:"#app",
            data(){
                return {
                    username:"",
                //     增加一个属性,url
                    url:"http://www.baidu.com"
                }
            }
        })
    </script>

在这里插入图片描述
在这里插入图片描述

        <a :href="url">点击一下</a>

可以这样写,省略v-bind
所以改变模型里面的url就可以改变地址了

或者可以用v-model,来改变url

        <a :href="url">点击一下</a>
        <input v-model="url">

在这里插入图片描述
这个是因为一开始初始化的模型里面的值就是百度的

在这里插入图片描述
在这里插入图片描述
我们就是一边书写,它就会对应一边变化的

在这里插入图片描述

    <div id="app">
<!--        click是单击事件,blur是光标失去焦点事件    v-on:click="show()"  单击调用模型里面的show方法,没有传参的话,show的括号可以不写 -->
        <input type="button" value="一个按钮" v-on:click="show()">
    </div>

    <script>
        new Vue({
            el:"#app",
            data(){
                return {
                    username:"",
                //     增加一个属性,url
                    url:"http://www.baidu.com"
                }
            },
            //定义方法要用methods
            methods:{
                show(){
                    alert("我被点了。。。。");
                }
            }
        })
    </script>

在这里插入图片描述
在这里插入图片描述

        <input type="button" value="一个按钮" @click="show()">

当然也可以这样写,没什么区别
在这里插入图片描述

    <div id="app">
<!--        如果count==3才展示div1   else,如果count==4,展示div2,else展示div3-->
            <div v-if="count == 3">div1</div>
            <div v-else-if="count==4">div2</div>
            <div v-else>div3</div>
        <br>
        <input v-model="count">
    </div>

    <script>
        new Vue({
            el:"#app",
            data(){
                return {
                    username:"",
                    url:"http://www.baidu.com",
                    count:3
                }
            },
            methods:{
                show(){
                    alert("我被点了。。。。");
                }
            }
        })
    </script>

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

            <div v-if="count == 3">div1</div>
            <div v-show="count == 3">div1</div>

v-if和v-show,两个的效果是一模一样的

两个的区别就是,真正的html代码,count!=3的话,v-if是不存在的,v-show是存在的,只不过打印的隐藏了而已

在这里插入图片描述

    <div id="app">
        <div v-for="addr in addrs">
            {{addr}}<br>
<!--        addr这个是局部变量,就是取得数组里面的每个值而已    -->
        </div>
    </div>

    <script>
        new Vue({
            el:"#app",
            data(){
                return {
                    username:"",
                    url:"http://www.baidu.com",
                    count:3,
                    addrs:["北京","上海","西安"]
                }
            },
            methods:{
                show(){
                    alert("我被点了。。。。");
                }
            }
        })
    </script>

在这里插入图片描述

    <div id="app">
        <div v-for="(addr,i) in addrs">
            {{i}}-{{addr}}<br>
<!--        addr这个是局部变量,就是取得数组里面的每个值而已    -->
        </div>
    </div>

这样写的话,那个i就是索引

在这里插入图片描述

4. 生命周期

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
加载完成的话,mounted会被自动的执行

    <script>
        new Vue({
            el:"#app",
            data(){
                return {
                    username:"",
                    url:"http://www.baidu.com",
                    count:3,
                    addrs:["北京","上海","西安"]
                }
            },
            methods:{
                show(){
                    alert("我被点了。。。。");
                }
            },
            // mounted:function(){
            //    
            // }
            mounted(){
                alert("加载完成")
            }
        })
    </script>

在这里插入图片描述

5.案例

5.1 查询所有

在这里插入图片描述
在这里插入图片描述

在这里插入图片描述
vue创建
在这里插入图片描述
绑定app

在这里插入图片描述
在这里插入图片描述
针对status有方法
在这里插入图片描述
在这里插入图片描述
只需要在在brand类里面添加一个getStatusStr就可以直接用brand.statusStr得到了

<div id="app">
<a href="addBrand.html"><input type="button" value="新增"></a><br>
<!--<hr>-->
<table id="brandTable" border="1" cellspacing="0" width="100%">
    <tr>
        <th>序号</th>
        <th>品牌名称</th>
        <th>企业名称</th>
        <th>排序</th>
        <th>品牌介绍</th>
        <th>状态</th>
        <th>操作</th>
    </tr>
<!--    使用v-for-->
    <tr  v-for="(brand,i) in brands" align="center">
        <td>{{i+1}}}</td>
        <td>{{brand.brandName}}</td>
        <td>{{brand.companyName}}</td>
        <td>{{brand.ordered}}</td>
        <td>{{brand.description}}</td>
        <td>{{brand.statusStr}}</td>
        <td><a href="#">修改</a> <a href="#">删除</a></td>
    </tr>
    </table>
</div>

<script src="js/axios-0.18.0.js">
</script>
<script src="js/vue.js"></script>

<script>

    new Vue({
        el: '#app',
        data(){
            return{
                brands:[]
            }
        },
        mounted() {
            //页面加载完成之后,就发送异步请求,来查询数据
            //我们用v-for来遍历---》app里面
            var _this = this;
                axios({
                    method: 'get',
                    url:"http://localhost:8080/brand1-demo/selectAllServlet"
                }).then(function (resp) {
                    // var brands=resp.data;//这个目前是局部变量,要给v-for使用,,所以需要把brands变成一个模型--->Data里面声明一下
                    // this.brands = resp.data;--->但是这个this指的是axios的window的
                    _this.brands = resp.data;
                })

        }
    })
    </script>

在这里插入图片描述

5.2 新增品牌

在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述
增加一个brand的对象值,这个就是我们添加的值

<div id="app">

<h3>添加品牌</h3>
<form action="" method="post">
    品牌名称:<input id="brandName" v-model="brand.brandName" name="brandName"><br>
    企业名称:<input id="companyName" v-model="brand.companyName" name="companyName"><br>
    排序:<input id="ordered" v-model="brand.ordered" name="ordered"><br>
    描述信息:<textarea rows="5" cols="20" id="description" v-model="brand.description" name="description"></textarea><br>
    状态:
    <input type="radio" name="status" v-model="brand.status" value="0">禁用
    <input type="radio" name="status" v-model="brand.status" value="1">启用<br>
<!--submitForm是一个方法-->
    <input type="button" id="btn" @click="submitForm" value="提交">
</form>
</div>
<script src="js/axios-0.18.0.js">
</script>
<script src="js/vue.js"></script>

<script>
    new Vue({
        el: '#app',
        data(){
            return {
                //brand是一个对象,就用{},没有属性现在---->v-model的时候就会添加属性值了
                brand:{}
            }
        },
        methods: {
            submitForm() {
                //发送ajax请求,完成添加功能
                var _this=this;
                axios({
                    method: 'post',
                    url: "http://localhost:8080/brand1-demo/addServlet",
                    data: _this.brand,
                }).then(function (resp) {
                    //判断响应数据是否为success,如果是说明添加成功,并跳回展示页面
                    if (resp.data == "success") {
                        location.href = "http://localhost:8080/brand1-demo/brand.html";
                    }
                })

            }
        }
    })
</script>

在这里插入图片描述
在这里插入图片描述

总结

下一节讲Element

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/918930.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

汽车资讯新篇章:Spring Boot技术启航

4系统概要设计 4.1概述 本系统采用B/S结构(Browser/Server,浏览器/服务器结构)和基于Web服务两种模式&#xff0c;是一个适用于Internet环境下的模型结构。只要用户能连上Internet,便可以在任何时间、任何地点使用。系统工作原理图如图4-1所示&#xff1a; 图4-1系统工作原理…

Windows注册表基础学习

修改注册表让cmd ascii输出有颜色 reg add HKCU\Console /v VirtualTerminalLevel /t REG_DWORD /d 1 如何打开注册表编辑器 运行regedit 按下"Winr"组合键&#xff0c;在打开的"运行"对话框中输入"regedit"&#xff0c;单击"确定"…

C++ | Leetcode C++题解之第564题寻找最近的回文数

题目&#xff1a; 题解&#xff1a; using ULL unsigned long long;class Solution { public:vector<ULL> getCandidates(const string& n) {int len n.length();vector<ULL> candidates {(ULL)pow(10, len - 1) - 1,(ULL)pow(10, len) 1,};ULL selfPrefi…

Debezium-MySqlConnectorTask

文章目录 概要整体架构流程技术名词解释技术细节小结 概要 MySqlConnectorTask&#xff0c;用于读取MySQL的二进制日志并生成对应的数据变更事件 整体架构流程 技术名词解释 数据库模式&#xff08;Database Schema&#xff09; 数据库模式是指数据库中数据的组织结构和定义&…

【WPF】Prism学习(二)

Prism Commands 1.命令&#xff08;Commanding&#xff09; 1.1. ViewModel的作用&#xff1a; ViewModel不仅提供在视图中显示或编辑的数据&#xff0c;还可能定义一个或多个用户可以执行的动作或操作。这些用户可以通过用户界面&#xff08;UI&#xff09;执行的动作或操作…

如何实现主备租户的无缝切换 | OceanBase应用实践

对于DBA而言&#xff0c;确保数据库的高可用性、容灾等能力是其日常工作中需要持续思考和关注的重要事项。一方面&#xff0c;可以利用数据库自身所具备的功能来实现这些目标&#xff1b;若数据库本身不提供相应功能&#xff0c;DBA则需寻找其他工具来增强数据库的高可用性和容…

壁仞科技上市前最后一波 校招 社招 内推

随着美国大选结束&#xff0c;国内GPU 产业得到空前的的发展空间&#xff0c;国内芯片相关股票一片飘红。 国内大型 GPU厂商壁仞科技&#xff0c;摩尔线程等正紧锣密鼓地加紧上市。 GPGPU 芯片赛道来到了史无前例的红利点&#xff0c;抓住机会&#x1f4aa; 壁仞科技正在火热…

前端监控之sourcemap精准定位和还原错误源码

一、概述 在前端开发中&#xff0c;监控和错误追踪是确保应用稳定性和用户体验的重要环节。 随着前端应用的复杂性增加&#xff0c;JavaScript错误监控变得尤为重要。在生产环境中&#xff0c;为了优化加载速度和性能&#xff0c;前端代码通常会被压缩和混淆。这虽然提升了性…

使用Web Push Notifications提升用户参与度和留存率

&#x1f493; 博客主页&#xff1a;瑕疵的CSDN主页 &#x1f4dd; Gitee主页&#xff1a;瑕疵的gitee主页 ⏩ 文章专栏&#xff1a;《热点资讯》 使用Web Push Notifications提升用户参与度和留存率 使用Web Push Notifications提升用户参与度和留存率 使用Web Push Notifica…

量化选股日常操作日记-11-ai眼镜-润欣科技

用 微信小程序 梦想兔企业智能风险分析助手 &#xff0c;选择AI眼镜板块&#xff0c;挖掘了几个合适的股&#xff0c;分析下来感觉 润欣科技 比较安全些适合观察&#xff0c;几块到十几块波动&#xff0c;企业基本面也没有特别大问题。就是现在价位在周期波动高位&#xff0c;下…

【WPF】Prism学习(五)

Prism Commands 1.错误处理&#xff08;Error Handling&#xff09; Prism 9 为所有的命令&#xff08;包含AsyncDelegateCommand&#xff09;提供了更好的错误处理。 避免用try/catch包装每一个方法根据不同遇到的异常类型来提供特定的逻辑处理可以在多个命令之间共享错误处…

Intern大模型训练营(八):Llamaindex RAG 实践

1. 基于 LlamaIndex 构建自己的 RAG 知识库 首先在Intern Studio中申请30% A100的开发机。 进入开发机后&#xff0c;创建新的conda环境&#xff0c;命名为 llamaindex&#xff0c;在命令行模式下运行&#xff1a; conda create -n llamaindex python3.10 复制完成后&#…

台式电脑没有声音怎么办?台式电脑没有声音解决详解

台式电脑一般来说都是没有内置扬声器的&#xff0c;需要连接耳机或者是音响才可以播放音乐。那么如果遇到台式电脑没有声音的问题&#xff0c;我们也需要确认这些设备硬件有没问题&#xff0c;知道原因才可以进行处理。下面本文将为你介绍台式电脑没有声音的可能原因和解决方法…

vue2项目中在线预览csv文件

简介 希望在项目中&#xff0c;在线预览.csv文件&#xff0c;本以为插件很多&#xff0c;结果都只是支持excel&#xff08;.xls、.xlsx&#xff09;一到.csv就歇菜。。。 关于文件预览 vue-office&#xff1a;文档、 查看在线演示demo&#xff0c;支持docx、.xlsx、pdf、ppt…

H.265流媒体播放器EasyPlayer.js视频流媒体播放器关于直播流播放完毕是否能监听到

EasyPlayer属于一款高效、精炼、稳定且免费的流媒体播放器&#xff0c;可支持多种流媒体协议播放&#xff0c;无须安装任何插件&#xff0c;起播快、延迟低、兼容性强&#xff0c;使用非常便捷。 EasyPlayer.js播放器不仅支持H.264与H.265视频编码格式&#xff0c;也能支持WebS…

WordPress设置自动更新CSS版本号

WordPress 通常会在引用 CSS 文件时添加版本号参数&#xff08;?verx.x.x&#xff09;。如果版本号未更新&#xff0c;浏览器可能继续加载旧的文件。 解决方法&#xff1a;确保你在 functions.php 文件中正确加载了 CSS 文件&#xff0c;并动态更新版本号。例如在functions.p…

【Linux】监控系统Zabbix的安装与配置

文章目录 一、前期准备1、安装LAMP2、配置SELinux与防火墙3、测试Apache4、配置数据库5、创建zabbix数据库及应用 二、server端安装配置1、软件包安装2、配置数据库3、zabbix访问测试4、配置web界面 三、Agent端安装配置1、安装zabbix-agent2、配置3、启动zabbix-agent4、配置防…

Springboot基于GIS的旅游信息管理系统

一、作品包含 源码数据库设计文档万字PPT全套环境和工具资源部署教程 二、项目技术 前端技术&#xff1a;Html、Css、Js、Vue、Element-ui 数据库&#xff1a;MySQL 后端技术&#xff1a;Java、Spring Boot、MyBatis 三、运行环境 开发工具&#xff1a;IDEA/eclipse 数据…

HarmonyOs鸿蒙开发实战(17)=>沉浸式效果第二种方案一组件安全区方案

1.沉浸式效果的目的 开发应用沉浸式效果主要指通过调整状态栏、应用界面和导航条的显示效果来减少状态栏导航条等系统界面的突兀感&#xff0c;从而使用户获得最佳的UI体验。 2.组件安全区方案介绍 应用在默认情况下窗口背景绘制范围是全屏&#xff0c;但UI元素被限制在安全区内…

微知-DOCA ARGP参数模块的相关接口和用法(config单元、params单元,argp pipe line,回调)

文章目录 1. 背景2. 设置参数的主要流程2.1 初始化2.2 注册某个params的处理方式以及回调函数2.4 定义好前面的params以及init指定config地点后start处理argv 3. 其他4. DOCA ARGP包相关4.1 主要接口4.2 DOCA ARGP的2个rpm包4.2.1 doca-sdk-argp-2.9.0072-1.el8.x86_64.rpm4.2.…