常见vue指令速通

常见vue指令速通

指令:就是vuejs为我们提供的方便操作的自定义属性
✿使用vue的前提是插入vue.js

1.v-cloak

这个指令保持在元素上直到关联实例结束编译。和 CSS 规则如 [v-cloak] { display: none } 一起用时,这个指令可以隐藏未编译的 Mustache 标签直到实例准备完毕。

    <style>
        /* 全局指令,可以让网页不显示源代码--[v-cloak] */
        [v-cloak] {
            display: none;
        }
    </style>
    <div id="app">     
        <p v-cloak>{{msg+1+1+1+1+1}}</p>
        //{{msg}}不会显示,直到编译结束。        
    </div>
    <script>
        //创建一个vue环境,创建一个VM层
        let vm = new Vue({
            el:'#app',
            data: {//Model层
                msg:''
            }
        })
    </script>

2.v-text

更新元素的 textContent。如果要更新部分的 textContent,需要使用 {{ Mustache }} 插值。

    <div id="app">
        <!-- {{username}} -->
        <p v-text='username'></p>
    </div>
    <script>
        new Vue({
            el:'#app',
            data:{
                username:'admin'
            }
        })
    </script>

3.v-html

用于输出 html 代码
注意:内容按普通 HTML 插入 - 不会作为 Vue 模板进行编译。如果试图使用 v-html 组合模板,可以重新考虑是否通过使用组件来替代。

<!--  v-html 指令用于输出 html 代码 -->
    <div id="app">
        <p v-html="msg"></p>
    </div>
    <script>
        new Vue({
            el: '#app',
            data: {
                msg: '<h1>小明</h1>'
            }
        })
    </script>

4.v-pre

跳过这个元素和它的子元素的编译过程。可以用来显示原始 Mustache 标签。跳过大量没有指令的节点会加快编译。

<!-- v-pre不被编译 -->
    <div id="app">
        <p v-pre>{{msg}}</p>
    </div>
    <script>
        new Vue({
            el: '#app',
            data: {
                msg: '太空人'
            }
        })
    </script>

5.v-once

只渲染元素和组件一次。随后的重新渲染,元素/组件及其所有的子节点将被视为静态内容并跳过。这可以用于优化更新性能。

    <div id="app">
        <p v-once>{{msg}}</p>
    </div>
    <script>
        new Vue({
            el: '#app',
            data: {
                msg: '最初的梦想:当宇航员'
            },
            mounted() {
                this.msg = '后来我成为了太空人'
            }
        })
    </script>

6.v-model

v-model 指令用来在 input、select、textarea、checkbox、radio 等表单控件元素上创建双向数据绑定,根据表单上的值,自动更新绑定的元素的值

<!-- 在表单控件或者组件上创建双向绑定 -->
    <div id="app">
        <input type="text" value="" v-model="userName">
        <p>{{userName}}</p>
    </div>
    <script src="vue.js"></script>
    <script>
        new Vue({
            el: '#app',
            data: {
                userName: 'admin'
            }
        })
    </script>

7.v-on

父组件是使用 props 传递数据给子组件,但如果子组件要把数据传递回去,就需要使用自定义事件!我们可以使用 v-on 绑定自定义事件,每个 Vue 实例都实现了事件接口(Events interface),即:
使用 $on(eventName) 监听事件
✿v-on:可缩写为@

    <div id="app">
        <input type="text" v-model="num">
        <input type="button" value="+1" v-on:click='add'>
        <input type="button" value="-1" @click='sub'>
    </div>
    <script src="vue.js"></script>
    <script>
        new Vue({
            el: '#app',
            data: {
                num:1
            },
            //讲num值进行操作
            //用来写页面的方法所需要的配置项
            methods:{
                add : function () {
                    this.num += 1
                    //this.num = this.num +1
                },
                sub(){
                    this.num -= 1
                }
            }
        })
    </script>

8.v-bind

主要用于动态的绑定属性
✿v-bind:可缩写为:
✿例: v-bind:class =》 :class

<!-- v-bind: 用来绑定属性 简写为: -->
    <div id="app">
        <!-- <img v-bind:src="srcUrl" > -->
        <img :src="srcUrl" >
    </div>
    <script src="vue.js"></script>
    <script>
        new Vue({
            el: '#app',
            data: {
                srcUrl: './img/1.jpg'
            },//这个逗号必须要
            mounted(){
                //这个this必须要:它指当前的vm实例
                this.srcUrl = './img/2.jpg'
            }
        })
    </script>

9.事件修饰符

<div id="app">
        <a href="https://www.baidu.com/" @click.prevent='myAlert'>百度</a>
        <!-- 冒泡 -->
        <div @click='divC1'>
            <button @click.stop='btnC1'>点击<button>
            <!-- 按键修饰符 -->
            <input type="text" v-model='msg' @keyup.delete='key'>
            <!-- <input type="text" v-model='msg' @keyup.aa='key'> -->
            <!-- 点击Backsparce直接清空 -->
        </div>
    </div>
    <script>
        //自定义修饰符
        //Vue.config.keyCodes.自命名修饰符(不能大写) = 编码(必须是精准的)
        Vue.config.keyCodes.aaa = 65

        new Vue({
            el:'#app',
            data:{
               msg:'啦啦啦啦啦'
            },
            methods:{
                myAlert(e){
                    //阻止默认行为
                    //e.preventDefault();传统原生代码
                    //只专注于自己的操作
                    alert('被点到了')
                },
                divC1(){
                    console.log('div');
                },
                btnC1(){
                    console.log('btn');
                },
                key(){
                    //清空
                    this.msg = ''
                }
            }
        })
    </script>

10.样式

<div id="app"> 
        <!-- 将类名动态 -->
        <!-- <p :class="{red:isHas}">小东西</p> 第一种 -->
        <p :class='[colRed,colBg]'>小东西</p>
        <!--  第二种:依据类型 -->
        <input type="button" value="改变自己" @click="changeClass">
    </div>
    <script>
        new Vue({
            el:'#app',
            data:{
                isHas:true,
                colRed:'red',
                colBg:'bg'
            },
            methods:{
                changeClass(){
                    //this.isHas = this.isHas
                    this.colRed = ''
                }
            }
        })
    </script>

11.操作style

<div id="app">
        <!-- <p :style='pStyle'></p> -->
        <!-- <p :style='[pStyle,pAdSty'></p> -->
        <p :style='{border:borderSty}'>啦啦啦啦啦啦啦</p>
    </div>
    <script>
        //三种模式绑定style
        new Vue({
            el:'#app',
            data:{
                pStyle:{
                    //样式是分割线的时候,要么变成驼峰命名,要么加引号
                    'font-size':'30px',
                    color:'red'//值必须加引号
                },
                pAdSty:{

                },
                borderSty:'2px solid red'
            }
        })
    </script>

12.if$show

v-if根据表达式的值的 truthiness 来有条件地渲染元素。在切换时元素及它的数据绑定 / 组件被销毁并重建
v-show根据表达式之真假值,切换元素的 display CSS property。

<div id="d1">
            <button @click='changeShow'>显示图片</button>
            <!-- <div v-show='isShow'>
                <img src="./img/3.jpg" >
            </div> -->
            <div v-if='isShow'>
                请登录
            </div>
            <div v-else>
                用户:aa已登录呢
            </div>
        </div>
        <script src="vue.js"></script>
        <script>
            new Vue({
                el:'#d1',
                data:{
                    isShow:true//布尔值
                },
                methods:{
                    changeShow(){
                        this.isShow = !this.isShow
                    }
                }
            })
        </script>

13.v-for

基于源数据多次渲染元素或模板块

<style>
        #app{
            min-width: 1200px;
            margin: 0px 60px;
        }
        ul li img {
            width: 200px;
            height: 300px;
        }
        ul li {
            display: inline-block;
            border: 1px solid gray;
            list-style: none;
        }
    </style>
    <div id="app">
        <ul>
            <li v-for="movie in subjects" :key="movie.id">
                评分: {{movie.rate}}<br />
                鼠标x: {{movie.cover_x}}<br />
                电影名: {{movie.title}}<br />
                链接:<a :href="movie.url">{{movie.url}}</a> <br/>
                图片: <img :src="movie.cover" alt=""><br />
                ID{{movie.id}}<br />
                鼠标y: {{movie.cover_y}}<br />
                {{movie.is_new}}<br />
            </li>
        </ul>
    </div>
    <script>
        new Vue({
            el: "#app",
            data: {

                "subjects": [
                    {
                        "rate": "5.7",
                        "cover_x": 527,
                        "title": "杀戮天眼",
                        "url": "https://movie.douban.com/subject/30304769/",
                        "playable": false,
                        "cover": "https://img9.doubanio.com/view/photo/s_ratio_poster/public/p2561506095.webp",
                        "id": "30304769",
                        "cover_y": 800,
                        "is_new": true
                    },
                    {
                        "rate": "7.1",
                        "cover_x": 1013,
                        "title": "黑鸟",
                        "url": "https://movie.douban.com/subject/30277288/",
                        "playable": false,
                        "cover": "https://img1.doubanio.com/view/photo/s_ratio_poster/public/p2617780988.webp",
                        "id": "30277288",
                        "cover_y": 1500,
                        "is_new": true
                    },                   
                    {
                        "rate": "6.7",
                        "cover_x": 2757,
                        "title": "逃跑",
                        "url": "https://movie.douban.com/subject/30243396/",
                        "playable": false,
                        "cover": "https://img2.doubanio.com/view/photo/s_ratio_poster/public/p2587085523.webp",
                        "id": "30243396",
                        "cover_y": 4096,
                        "is_new": false
                    }
                ]
            }

        })
    </script>

♥此文章部分来源网络,侵删。感谢大家观看,么么叽!在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
1 目标检测的定义 目标检测(Object Detection)的任务是找出图像中所有感兴趣的目标(物体),确定它们的类别和位置,是计算机视觉领域的核心问题之一。由于各类物体有不同的外观、形状和姿态,加上成像时光照、遮挡等因素的干扰,目标检测一直是计算机视觉领域最具有挑战性的问题。 目标检测任务可分为两个关键的子任务,目标定位和目标分类。首先检测图像中目标的位置(目标定位),然后给出每个目标的具体类别(目标分类)。输出结果是一个边界框(称为Bounding-box,一般形式为(x1,y1,x2,y2),表示框的左上角坐标和右下角坐标),一个置信度分数(Confidence Score),表示边界框中是否包含检测对象的概率和各个类别的概率(首先得到类别概率,经过Softmax可得到类别标签)。 1.1 Two stage方法 目前主流的基于深度学习的目标检测算法主要分为两类:Two stage和One stage。Two stage方法将目标检测过程分为两个阶段。第一个阶段是 Region Proposal 生成阶段,主要用于生成潜在的目标候选框(Bounding-box proposals)。这个阶段通常使用卷积神经网络(CNN)从输入图像中提取特征,然后通过一些技巧(如选择性搜索)来生成候选框。第二个阶段是分类和位置精修阶段,将第一个阶段生成的候选框输入到另一个 CNN 中进行分类,并根据分类结果对候选框的位置进行微调。Two stage 方法的优点是准确度较高,缺点是速度相对较慢。 常见Tow stage目标检测算法有:R-CNN系列、SPPNet等。 1.2 One stage方法 One stage方法直接利用模型提取特征值,并利用这些特征值进行目标的分类和定位,不需要生成Region Proposal。这种方法的优点是速度快,因为省略了Region Proposal生成的过程。One stage方法的缺点是准确度相对较低,因为它没有对潜在的目标进行预先筛选。 常见的One stage目标检测算法有:YOLO系列、SSD系列和RetinaNet等。 2 常见名词解释 2.1 NMS(Non-Maximum Suppression) 目标检测模型一般会给出目标的多个预测边界框,对成百上千的预测边界框都进行调整肯定是不可行的,需要对这些结果先进行一个大体的挑选。NMS称为非极大值抑制,作用是从众多预测边界框中挑选出最具代表性的结果,这样可以加快算法效率,其主要流程如下: 设定一个置信度分数阈值,将置信度分数小于阈值的直接过滤掉 将剩下框的置信度分数从大到小排序,选中值最大的框 遍历其余的框,如果和当前框的重叠面积(IOU)大于设定的阈值(一般为0.7),就将框删除(超过设定阈值,认为两个框的里面的物体属于同一个类别) 从未处理的框中继续选一个置信度分数最大的,重复上述过程,直至所有框处理完毕 2.2 IoU(Intersection over Union) 定义了两个边界框的重叠度,当预测边界框和真实边界框差异很小时,或重叠度很大时,表示模型产生的预测边界框很准确。边界框A、B的IOU计算公式为: 2.3 mAP(mean Average Precision) mAP即均值平均精度,是评估目标检测模型效果的最重要指标,这个值介于0到1之间,且越大越好。mAP是AP(Average Precision)的平均值,那么首先需要了解AP的概念。想要了解AP的概念,还要首先了解目标检测中Precision和Recall的概念。 首先我们设置置信度阈值(Confidence Threshold)和IoU阈值(一般设置为0.5,也会衡量0.75以及0.9的mAP值): 当一个预测边界框被认为是True Positive(TP)时,需要同时满足下面三个条件: Confidence Score > Confidence Threshold 预测类别匹配真实值(Ground truth)的类别 预测边界框的IoU大于设定的IoU阈值 不满足条件2或条件3,则认为是False Positive(FP)。当对应同一个真值有多个预测结果时,只有最高置信度分数的预测结果被认为是True Positive,其余被认为是False Positive。 Precision和Recall的概念如下图所示: Precision表示TP与预测边界框数量的比值 Recall表示TP与真实边界框数量的比值 改变不同的置信度阈值,可以获得多组Precision和Recall,Recall放X轴,Precision放Y轴,可以画出一个Precision-Recall曲线,简称P-R
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值