Vue2.0-指令与过滤器(上)

Vue 2.0 学习笔记(二) Vue基础入门(1):Vue的数据驱动视图与双向绑定特性,MVVM工作原理,Vue调试工具,Vue指令与Vue过滤器 阅读详情

Vue2.0-指令与过滤器(上)

1.什么是Vue

官方给出的概念:Vue是一套用于构建用户界面的前端框架
在这里插入图片描述

1.1如何构建用户界面

利用Vue往html页面中填充数据,非常方便

1.2框架
  • 框架是一套现成的解决方案,程序员只能遵守框架的规范,去编写自己的业务。
  • 要学习Vue,就是在学习Vue框架中规定的语法。
  • Vue的指令、组件(是对UI结构的复用)、路由、Vuex

2.Vue的特性

Vue框架的特性,主要体现在两个方面:
(1)数据驱动视图
(2)双向数据绑定

2.1数据驱动视图

在使用了Vue的页面中,Vue会监听数据的变化,从而自动重新渲染页面的结构。示意图如下:
在这里插入图片描述

好处:当页面数据发生变化时,页面会自动重新渲染
注意:数据驱动视图时单向的数据绑定

2.2双向数据绑定

在网页中,from表单负责采集数据,Ajax负责提交数据。
在填写表单时,双向数据绑定可以辅助开发者在不操作DOM的前提下,自动将用户填写的数据同步到数据源中。
在这里插入图片描述

好处:开发者不再需要手动操作DOM元素,来获取表单元素的最新值

3.MVVM

MVVM是Vue实现数据驱动视图和数据双向绑定的核心原理。MVVM指的是 Model、View 和 ViewModel,它把每个HTML页面都拆分成了这三个部分。
在这里插入图片描述

在MVVM概念中:
Model 表示当前页面渲染时所依赖的数据源
View 表示当前页面所渲染的DOM结构
ViewModel 表示Vue的实例,它是 MVVM 的核心

4.Vue的基础使用

4.1基本使用步骤

(1)导入Vue.js的script脚本文件
(2)在页面中声明一个将要被Vue所控制的DOM区域
(3)创建VM实例对象(Vue实例对象)

<body>
    <!-- 2.在页面声明一个将要被 Vue 所控制的 DOM 区域 -->
    <div id="app">{{username}}</div>
    <!-- 1.导入 Vue.js 的script 脚本文件 -->
    <script src="../Vue/vue.js"></script>
    <script>
        // 3.创建 vm 实例对象(Vue实例对象)
        const vm=new Vue({
            //3.1 el 属性是固定写法,指定当前vm实例要控制页面的哪个区域
            el:'#app',
            //3.2 data 对象要渲染到页面的数据 
            //指定 Model 数据源
            data:{
                username:'zh'
            }
        })
    </script>
</body>

上述代码与 MVVM 的对应关系
在这里插入图片描述

5.Vue的指令与过滤器

5.1Vue指令

指令是Vue为开发者提供的模板语法,用于辅助开发者渲染页面的基本结构
Vue中的指令按照不同的用途可以分为6大类:
(1)内容渲染指令
(2)属性绑定指令
(3)事件绑定指令
(4)双向绑定指令
(5)条件渲染指令
(6)列表渲染指令

5.2内容渲染指令

内容渲染指令用来辅助开发者渲染DOM元素的文本内容,常用的内容渲染指令有如下3个:

  • v-text
  • {{}}
  • v-html
    v-text
    用法示例:
<body>
    <div id="app">
        <p v-text="username">姓名:</p>
        <p v-text="age">年龄:</p>
        <p v-text="sex">性别:</p>
    </div>
    <script src="../Vue/vue.js"></script>
    <script>
        const vm=new Vue({
            el:'#app',
            data:{
                username:'zh',
                age:'22',
                sex:'男'
            }
        })
    </script>
    <!-- 运行结果:zh 22 男 -->
</body>

v-text缺点:会覆盖元素内部原有的值

{{ }}插值表达式
Vue提供{{}}语法,专门用来解决v-text会覆盖默认文本内容的问题。这种{{}}语法叫做插值表达式。
使用{{ }}插值表达式,将对应的值渲染到元素的内容节点中
同时保留元素自身的默认值

<body>
    <div id="app">
        <p>姓名:{{username}}</p>
        <p>年龄:{{age}}</p>
        <p>性别:{{sex}}</p>
    </div>
    <script src="../Vue/vue.js"></script>
    <script>
        const vm=new Vue({
            el:'#app',
            data:{
                username:'zh',
                age:'22',
                sex:'男'
            }
        })
    </script>
    <!-- 运行结果:姓名:zh 年龄:22 性别:男 -->
</body>

{{ }}插值表达式,在实际开发中用的最多,只是内容的占位符,不会覆盖原来的内容
v-html
v-text指令和插值表达式只能渲染纯文本的内容。如果要把包含HTML标签的字符串渲染为页面的HMTL元素,则需要用到v-html这个指令:

<body>
    <div id="app">
        <p>姓名:{{username}}</p>
        <p>年龄:{{age}}</p>
        <p>性别:{{sex}}</p>
        <div v-html="info"></div>
    </div>
    <script src="../Vue/vue.js"></script>
    <script>
        const vm=new Vue({
            el:'#app',
            data:{
                username:'zh',
                age:'22',
                sex:'男',
                info:'<h4 style="color:red;font-weight:bold;">欢迎使用Vue</h4>'
            }
        })
    </script>
</body>

v-html指令的作用:可以把带有标签的字符串,渲染成页面的真正HTML元素

5.2.1属性绑定指令

如果需要为元素的属性动态绑定属性值,则需要用到 v-bind 属性绑定指令。

<body>
    <div id="app">
        <!-- v-bind: 指令还可以简写为 : -->
        <input type="text" v-bind:placeholder="tips">
    </div>
    <script src="../Vue/vue.js"></script>
    <script>
        const vm=new Vue({
            el:'#app',
            data:{
                tips:'请输入账号'
            }
        })
    </script>
</body> 

注意:插值表达式{{ }}只能用来内容节点,不能用到元素属性节点当中
因此在Vue中可以使用v-bind: 指令,来为元素的属性进行动态绑定值,也可以简写为 :

5.2.3在插值表达式和属性绑定中编写JS语句

在插值运算符中不仅仅支持插入内容节点,还支持插入JavaScript表达式的运算

<body>
    <div id="app">
        <div>1+2的结果是:{{1+2}}</div>
        <div>{{tips}}的反转结果为:{{tips.split('').reverse().join('')}}</div>
        <div :title="'box'+ index">这是一个DIV</div>
    </div>
    <script src="../Vue/vue.js"></script>
    <script>
        const vm=new Vue({
            el:'#app',
            data:{
                tips:'请输入账号',
                index:3
            }
        })
    </script>
</body>

在使用v-bind属性绑定七点,如果绑定内容需要进行动态拼接,则字符串外部应该包裹单引号,例如:

<div :title"'box'+index">这是一个字符串</div>
5.3事件绑定指令

vue提供了 v-on 事件绑定指令,用来辅助操作DOM元素绑定事件监听。
v-on:也可以简写为 @
在我们的事件绑定时如果没有添加小括号将会默认有一个事件对象
e
,我们可以在methods里面的事件函数括号内将e传入,并可以访问事件的源target,然后通过e.target.style对一些样式进行操作。

<body>
    <div id="app">
        <p>count的值为:{{count}}</p>
        <button v-on:click="addCount">+1</button>
        <button @click="delCount">-1</button>
    </div>
    <script src="../Vue/vue.js"></script>
    <script>
        const vm=new Vue({
            el:"#app",
            data:{
                count:0
            },
            //methods 的作用 绑定定义事件的处理函数
            methods: {
                addCount(){
                    this.count+=1
                },
                delCount(){
                    this.count-=1
                }
            }
        })
    </script>
</body>

注意:原生DOM对象有 onclick、oninput、onkeyup等原生事件,替换为Vue的事件绑定后,格式为:v-on:click、v-on:input、v-on:keyup

5.3.1绑定事件并传入参数
<body>
    <div id="app">
        <p>count的值为:{{count}}</p>
        <!-- 2.在绑定相应处理函数后可以传入实参 -->
        <!-- 在绑定事件时可以为事件添加括号也可以不添加 添加括号就是为了传入参数 不添加则不需要传入参数 -->
        <button v-on:click="addCount(1)">+1</button>
        <button @click="delCount">-1</button>
    </div>
    <script src="../Vue/vue.js"></script>
    <script>
        const vm=new Vue({
            el:"#app",
            data:{
                count:0
            },
            //methods 的作用 绑定定义事件的处理函数
            methods: {
                //1.我们可以在定于 methods 之后 对里面的函数进行参数传入
                addCount(n){
                    this.count+=n
                },
                delCount(){
                    this.count-=1
                }
            }
        })
    </script>
</body>
5.3.2事件绑定- $event

vue 提供了内置变量,名字叫做 $event 他就是原生DOM的事件对象e

<body>
    <div id="app">
        <p>num的值为:{{num}}</p>
        <button @click="add(1,$event)">+1</button>
    </div>
    <script src="../Vue/vue.js"></script>
    <script>
        const vm=new Vue({
            el:'#app',
            data:{
                num:0
            },
            methods: {
                add(n,e){
                    this.num+=n;
                    console.log(e);
                    if(this.num%2===0){
                        e.target.style.backgroundColor='red'
                    }else{
                        e.target.style.backgroundColor=''
                    }
                }
            },
        })
    </script>
</body>
5.3.3事件修饰符

在事件处理函数中调用event.preventDefault()或event.stopPropagation()是非常常见的需求,因此,vue提供了时间修饰符的概念,在帮助操作对事件的触发进行控制。常用的5个事件修饰符如下:
在这里插入图片描述

.prevent

<body>
    <div id="app">
        <a href="http://www.baidu.com" @click.prevent="show">跳转</a>
    </div>
    <script src="../Vue/vue.js"></script>
    <script>
        const vm=new Vue({
            el:'#app',
            data:{
                num:0
            },
            methods: {
                show(e){
                    //原生阻止默认行为
                    // e.preventDefault();
                    console.log('点击了');
                }
            },
        })
    </script>
</body>

在这里插入图片描述

.stop阻止冒泡

<body>
    <div id="app">
        <a href="http://www.baidu.com" @click.prevent="show">跳转</a>
    <div style="height: 150px;background-color: orange;padding-left: 100px;line-height: 150px;" @click="divHander">
        <button @click.stop="btn">按钮</button>
    </div>
    </div>
    <script src="../Vue/vue.js"></script>
    <script>
        const vm=new Vue({
            el:'#app',
            data:{
                num:0
            },
            methods: {
                show(e){
                    //原生阻止默认行为
                    // e.preventDefault();
                    console.log('点击了');
                },
                btn(){
                    
                    console.log('btn');
                },
                divHander(){
                    console.log('divHandler');
                }
            },
        })
    </script>
</body>
5.3.4按键修饰符

在监听键盘事件时,我们经常需要判断详细的按键。此时,可以为键盘相关的事件添加按键修饰符。例如:
按ESC清除输入框内的内容

<body>
    <div id="app">
        <input type="text" @keyup.esc="clearInput">
    </div>
    <script src="../Vue/vue.js"></script>
    <script>
        const vm=new Vue({
            el:'#app',
            data:{
                
            },
            methods: {
                clearInput(e){
                    e.target.value=" ";
                }
            }
        })
    </script>
</body>

常见的键盘事件有 @keyup.esc 和 @keyup.enter

5.4双向绑定指令

Vue 提供了v-model双向数据绑定指令,用来辅助在不操作DOM元素的情况下,快速获取到表单数据
所谓的双向绑定就是你在输入框里对输入的信息进行更改时,Vue实例里面的data数据源所对应的数据也将发生改变,如果data里面的数据发生改变,同样的在input里面的内容也将发生改变。

<body>
    <div id="app">
        <P>{{username}}</P>
        <input type="text" v-model="username">
    </div>
    <script src="../Vue/vue.js"></script>
    <script>
        const vm=new Vue({
            el:'#app',
            data:{
                username:'zh'
            },
            methods: {
                
            }
        })
    </script>
</body>

无论我们是修改input里面的数据还是修改data数据源里面的数据,两者之间都是相互对应的,相互渲染的
在这里插入图片描述

但是,如果我们利用 v-bind 来绑定输入框的内容,当我们修改输入框内容时,数据源的数据将不会发生改变。

<body>
    <div id="app">
        <P>{{username}}</P>
        <input type="text" v-model="username">
        <input type="text" :value="username">
    </div>
    <script src="../Vue/vue.js"></script>
    <script>
        const vm=new Vue({
            el:'#app',
            data:{
                username:'zh'
            },
            methods: {
                
            }
        })
    </script>
</body>

在这里插入图片描述

因此我们可以得知,v-model 对于数据的绑定是双向的,而v-bind对数据的绑定则是单向的,只能从数据源的变化到页面内,而不能从页面的变化到数据源。

5.4.1v-model指令的修饰符

为了方便用户输入的内容进行处理,vue为v-model指令提供了3个修饰符。
在这里插入图片描述

.number
我们正常情况下的数据,在输入框内输入新的数值后将会变成字符串的拼接,因此为了保证能够正常的运算,我们可以在v-model后面加上.number来将输入的字符串转换成数值

<body>
    <div id="app">
        <input type="text" v-model.number="num1">+<input type="text" v-model.number="num2">=<span>{{num1+num2}}</span>
    </div>
    <script src="../Vue/vue.js"></script>
    <script>
        const vm=new Vue({
            el:'#app',
            data:{
                num1:1,
                num2:2
            },
            methods: {
                
            }
        })
    </script>
</body>

.trim
当我们在输入框内输入值的两端有空格时,可以利用.trim来清除空格,如果空格出现在内容中间则无法清除

<body>
    <div id="app">
        <input type="text" v-model.trim="username">
        <button @click="add">点击获取</button>
    </div>
    <script src="../Vue/vue.js"></script>
    <script>
        const vm=new Vue({
            el:'#app',
            data:{
                username:'zh',
                num1:1,
                num2:2
            },
            methods: {
                add(){
                    console.log(`"${this.username}"`);
                }
            }
        })
    </script>
</body>
5.5条件渲染指令

条件渲染指令用来协助开发者按需控制DOM的显示与隐藏。条件渲染指令分别为:v-if、v-show
v-show
v-show的原理是:动态为元素添加或移除display:none样式,来实现元素的显示和隐藏
如果频繁的切换元素的显示状态,用v-show性能会更好
v-if
v-if的原理是:每次动态的创建或移动元素,从而使得元素显示或者隐藏
如果刚进入页面的时候,某些元素默认不需要被展示,而且后期这个元素也可能不会被展示出来,则v-if性能会更好一些

<body>
    <div id="app">
        <p v-if="flag">这是v-if</p>
        <p v-show="flag">这是v-show</p>
    </div>
    <script src="../Vue/vue.js"></script>
    <script>
        const vm=new Vue({
            el:'#app',
            data:{
                flag:true,
            },
            methods: {

            }
        })
    </script>
</body>

当我们在控制台将flag的值改为false时,两个p标签的内容都将隐藏
在这里插入图片描述

在这里插入图片描述

v-else
v-if可以单独使用,或者配合v-else指令一起使用
注意:v-else指令必须配合v-if指令一起使用,否则它将不会被识别
v-else-if
v-else-if指令,顾名思义,充当v-if的"else-if块",可以连续使用

<div v-if="type === 'A'">优秀</div>
<div v-else-if="type === 'B'">一般</div>
<div v-else="type === 'C'">差劲</div>

**注意:**v-else-if指令必须配合v-if指令一起使用,否则它将不会被识别

5.6列表渲染指令

vue提供了v-for列表渲染指令,用来帮助基于一个数组来循环渲染一个列表结构。v-for指令需要使用 item in items 形成的特殊语法,其中:
items 是待循环的数组
item 是被循环的每一项

<body>
    <div id="app">
        <table>
            <thead>
                <td>索引</td>
                <td>ID</td>
                <td>姓名</td>
            </thead>
            <tbody>
                <tr v-for="item in list">
                    <td>0</td>
                    <td>{{item.id}}</td>
                    <td>{{item.name}}</td>
                </tr>
            </tbody>
        </table>
    </div>
    <script src="../Vue/vue.js"></script>
    <script>
        const vm=new Vue({
            el:'#app',
            data:{
                list:[
                    {id:1,name:'zh'},
                    {id:2,name:'zh1'},
                    {id:3,name:'zh2'}
                ]
            },
            methods: {

            }
        })
    </script>
</body>

在这里插入图片描述

v-for指令还支持一个可选的第二个参数,即当前项的索引,语法格式为 (item,index) in items

<body>
    <div id="app">
        <table>
            <thead>
                <td>索引</td>
                <td>ID</td>
                <td>姓名</td>
            </thead>
            <tbody>
                <tr v-for="(item,index) in list">
                    <td>{{index}}</td>
                    <td>{{item.id}}</td>
                    <td>{{item.name}}</td>
                </tr>
            </tbody>
        </table>
    </div>
    <script src="../Vue/vue.js"></script>
    <script>
        const vm=new Vue({
            el:'#app',
            data:{
                list:[
                    {id:1,name:'zh'},
                    {id:2,name:'zh1'},
                    {id:3,name:'zh2'}
                ]
            },
            methods: {

            }
        })
    </script>
</body>

在这里插入图片描述

注意:v-for指令中的item项和index索引都是形参,可以根据需要进行重命名。例如(user,i) in userlist

5.6.1v-for指令中的key属性

官方建议:只要用到了 v-for 指令,那么一定要绑定一个 :key 属性
而且尽量把 id 作为 key 的值
官方对 key 的值类型是有要求的,规定只能是字符串或者数字类型
key的注意事项:
1.key的之只能是字符串或数字类型
2.key的值必须具有唯一性(key不能重复)
3.建议把数据项id属性的值作为key的值(因为id属性的值具有唯一性)
4.使用index的值当作key的值没有任何意义(因为index的值不具有唯一性)
5.建议使用v-for指令时一定要指定key的值

vuejs从入门到精通(三)笔记,学习:尚硅谷Vue2.0+Vue3.0全套教程 directives:{big(){ //自定义的指令也是方法, 存在两个参数,element:DOM元素本身;指令方法内部去控制html的一些修改:fbind: {// 指令与元素成功绑定时// 指令所在元素被插入页面时// 指令所在模板被重新解析时相当于,函数式,执行了对象式的 bind和update方法, 只是缺少了inserted// 当被绑定的元素插入到 DOM 中时……// 聚焦元素el.focus()})1、可以写局部指令 和 全局指令。 阅读详情

相关推荐

Vue | (二)Vue核心(下) | 尚硅谷Vue2.0+Vue3.0全套教程

学习链接:尚硅谷Vue2.0+Vue3.0全套教程丨vuejs从入门到精通,本文对应p26-p52,博客参考尚硅谷公开笔记,补充记录实操。

知识库搭建ing 1512

vue2.0 小记

事件修饰符 .self 点击自己才会触发,包括冒泡情况也会跳过 .capture 冒泡顺序倒置 绑定类名 :class="[‘classname’,flag ? ‘classname’ : ‘’,{‘classname’ : flag}]" {‘需要绑定的类名’:是否绑定} 该对象也可以在data中声明赋值 绑定样式 :style="{color:‘red’,‘font-size’:‘16px’}" 样式的名称带-,必须用’'括起来;多个对象绑定时:style="[obj1,obj2]" v-on绑定事件

超级小东的博客 287

从补码原理到实践:RISC-V中addi指令的符号扩展机制详解

本文深入解析了RISC-V架构中addi指令的符号扩展机制。从补码的数学原理出发,详细阐述了12位立即数在指令编码中如何通过符号位进行扩展,并结合lui指令,揭示了加载任意32位立即数的正确方法与实践陷阱,帮助开发者编写高效可靠的底层代码。

weixin_29161719的博客 139

Vue2.0-指令与过滤器(下)

Vue-指令与过滤器(下) 文章目录Vue-指令与过滤器(下)1.过滤器1.1私有过滤器和全局过滤器1.3过滤器传参 1.过滤器 过滤器是Vue为开发者提供的功能,常用于文本的格式化,同样他也是一个函数。过滤器可以用在两个地方:插值表达式和v-bind属性绑定 过滤器应该被添加在JavaScript表达式的尾部,由 "管道符 | " 进行调用 <body> <div id="app"> <p>message:{{message | capi}}&l

Java_young_man的博客 396

PaddleOCRv5训练自己的模型-微调文字识别模型

本文介绍了使用PaddleOCR微调文字识别模型的具体步骤。首先需要按照官方格式准备数据集,包括图片和标注文件。然后进行模型训练,包括环境安装、预训练模型下载、配置文件修改等关键环节,特别针对训练中可能出现的类别数不匹配问题提供了三种解决方案。文章还详细说明了模型导出为静态图格式的方法,以及如何调用训练好的模型进行推理。整个过程涉及多个技术细节,如早停机制设置、断点续训方法等,为需要提升OCR识别精度的开发者提供了实用指导。

weixin_43827982的博客 3176

systemView的安装使用

systemView的安装使用

qq_33712422的博客 3958

5.1 Vue2.0-vue简介及指令与过滤器

5.1 Vue2.0-vue简介及指令与过滤器

学习交流记录 717

OpenClaw实操:给网站装上“智能眼睛”?手把手教你用OpenClaw实时监控网站

本文介绍如何在Windows系统使用OpenClaw构建智能网站监控助手。手把手教你通过配置本地AI模型,让openclaw构建的ai助手自动检测指定网页的内容变化,理解更新重要性,并及时通过邮件、微信、Telegram等渠道发出预警,让你第一时间掌握关键信息,彻底告别手动刷新。

plawuyue的博客 2162

php中文和vue,vue.1和vue.2区别是什么

vue.1和vue.2区别:1、在vue2中使用【v-for】指令时它可以添加重复的内容;2、vue2中跟vue1中有一个很大的区别就是没有过滤器;3、两者使用组件之间的通讯时也不同。【相关文章推荐:vue.js】vue.1和vue.2区别:区别1:在vue2中使用v-for指令时它可以添加重复的内容,就像可以添加相同的留言内容,下面我们来看一下在写代码的时候首先要引入的是vue2js文件。htm...

weixin_35964171的博客 186

关于机器人精度的总结(重复精度和绝对精度区分)

机械臂是工业生产中的重要设备,在焊接码垛 以及 非 接触测量等 领域中有 着重要应 用。然而由于机械臂本体制造中存在机械制造公差装配误差导致的运动学参数误差以及电机转角与关节转角间减速比误差等,导致机械臂存在。因此需要对机械臂进行标定,提高机械臂的绝对定位精度。ABB系列某款机器人精度参数表。

大胡子大叔的专栏 1万+

12、激光制造中人工智能与机器学习的应用及挑战

本文探讨了人工智能与机器学习在激光制造中的应用,重点分析了图像分类技术在质量检测中的多种方法及其性能对比,包括基于贝叶斯分类、卷积神经网络(CNN)和多尺度CNN的技术。同时,文章指出了AI在激光制造中面临的五大挑战:鲁棒性、安全性、可解释性、责任归属和可预测性,并提出了相应的解决思路。此外,还介绍了激光制造的主要应用技术如切割、焊接和增材制造的流程、优势与局限性,并通过对比表格直观展示不同技术的特点。最后展望了未来激光制造向智能化、自动化和可持续化发展的趋势。

rgv234567的博客 136

vue1.0和vue2.0的区别(二)

这篇我们继续之前的vue1.0和vue2.0的区别(一)继续说 四.循环   学过vue的同学应该知道vue1.0是不能添加重复数据的,否则它会报错,想让它重复添加也不是不可以,不过需要定义别的东西 而vue2.0默认就支持添加重复数据,而且vue2.0还去掉了$index和$key这两个东西换成在循环里定义    v-for="val in array" 这是vue1...

weixin_30881367的博客 93

国科大学习资料--高级软件工程-复习题概念解释答案

国科大学习资料–高级软件工程(罗铁坚 魏峻 刘丹)-复习题概念解释答案 1. 敏捷开发方法与Scrum方法 a.敏捷是一种强调轻量的过程方法论,它强调拥抱变化而不是与之对抗,通过有效的沟通发挥群体的智慧。敏捷方法采用迭代/增量开发的过程模型。敏捷宣言是:个体和交互高于流程和工具;工作的软件高于详尽的文档;客户合作高于合同谈判;响应变化高于遵循计划。 虽然右边的也有价值,但是认为左边的更有价值。 b.Scrum(Schwaber和Beedle)是管理两个披萨规模(4-9人)的软件开发团队的方法,它高频率的短会

无名何许人的博客 1442

vue2.0基础知识学习心得

vue2.0基础知识学习心得 概述: 首先vue是建立在JS之上的一种框架。所以vue中的一切指令、事件和组件都是JS中方法、事件和对象的延伸和包装。结合JS知识,看清vue中新概念的在JS中的本质,有助于同时加强对vue和JS两者的理解。 不难看出Vue就是一个精心设置的类,其中包括了component()方法自定义组件,也包括了filter()自定义过滤器。而组件其本质也是一个类。 一.组件 ...

yth_m_123的博客 389

畅游Diffusion数字人(20):FLAME代码解读与实现

​ 之前的博客《畅游Diffusion数字人(17):更强大的人脸和表情表达方法 FLAME:Learning a model of facial shape and expression》讲解了FLAME的原理,这篇博客主要讲解一下FLAME的代码实现。

沉迷单车的追风少年 1131

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

VUE 2.0 基础入门(二)vue基础入门

VUE 2.0 基础入门(二)

ElysiaAILab 423

Devexpress16.2.6破解工具

Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具

VUE2.0学习总结

VUE2.0学习 vue介绍 vue是什么? https://vuefe.cn/guide vue也是一个数据驱动框架,做spa页面的 vue如果不做页面可以当做一个单独使用的js库,做双向数据绑定用 Vue的核心库只关注视图层,但是vue并不只关注视图,和angular一样也有指令,过滤器...

chucaiju4190的博客 138

华为的C语言编程规范.pdf

华为技术有限公司内部技术规范。本规范制定了编写C语言程序的基本原则、规则和建议。从代码的清晰、简洁、可测试、安全、程序效率、可移植各个方面对C语言编程作出了具体指导。

深度学习工具包 DeepLearningToolbox

深度学习工具包Deprecation notice.-----This toolbox is outdated and no longer maintained.There are much better tools available for deep learning than this toolbox, e.g. [Theano](http://deeplearning.net/software/theano/), [torch](http://torch.ch/) or [tensorflow](http://www.tensorflow.org/)I would suggest you use one of the tools mentioned above rather than use this toolbox.Best, Rasmus.DeepLearnToolbox================A Matlab toolbox for Deep Learning.Deep Learning is a new subfield of machine learning that focuses on learning deep hierarchical models of data.It is inspired by the human brain's apparent deep (layered, hierarchical) architecture.A good overview of the theory of Deep Learning theory is[Learning Deep Architectures for AI](http://www.iro.umontreal.ca/~bengioy/papers/ftml_book.pdf)For a more informal introduction, see the following videos by Geoffrey Hinton and Andrew Ng.* [The Next Generation of Neural Networks](http://www.youtube.com/watch?v=AyzOUbkUf3M) (Hinton, 2007)* [Recent Developments in Deep Learning](http://www.youtube.com/watch?v=VdIURAu1-aU) (Hinton, 2010)* [Unsupervised Feature Learning and Deep Learning](http://www.youtube.com/watch?v=ZmNOAtZIgIk) (Ng, 2011)If you use this toolbox in your research please cite [Prediction as a candidate for learning deep hierarchical models of data](http://www2.imm.dtu.dk/pubdb/views/publication_details.php?id=6284)```@MASTERSTHESIS\{IMM2012-06284, author = "R. B. Palm", title = "Prediction as a candidate for learning deep hierarchical models of data", year = "2012",}```Contact: rasmusbergpalm at gmail dot comDirectories included in the toolbox-----------------------------------`NN/` - A library for Feedforward Backpropagation Neural Networks`CNN/` - A library for Convolutional Neural Networks`DBN/` - A library for Deep Belief Networks`SAE/` - A library for Stacked Auto-Encoders`CAE/` - A library for Convolutional Auto-Encoders`util/` - Utility functions used by the libraries`data/` - Data used by the examples`tests/` - unit tests to verify toolbox is workingFor references on each library check REFS.mdSetup-----1. Download.2. addpath(genpath('DeepLearnToolbox'));Example: Deep Belief Network---------------------```matlabfunction test_example_DBNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit RBM and visualize its weightsrand('state',0)dbn.sizes = [100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);figure; visualize(dbn.rbm{1}.W'); % Visualize the RBM weights%% ex2 train a 100-100 hidden unit DBN and use its weights to initialize a NNrand('state',0)%train dbndbn.sizes = [100 100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);%unfold dbn to nnnn = dbnunfoldtonn(dbn, 10);nn.activation_function = 'sigm';%train nnopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.10, 'Too big error');```Example: Stacked Auto-Encoders---------------------```matlabfunction test_example_SAEload mnist_uint8;train_x = double(train_x)/255;test_x = double(test_x)/255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit SDAE and use it to initialize a FFNN% Setup and train a stacked denoising autoencoder (SDAE)rand('state',0)sae = saesetup([784 100]);sae.ae{1}.activation_function = 'sigm';sae.ae{1}.learningRate = 1;sae.ae{1}.inputZeroMaskedFraction = 0.5;opts.numepochs = 1;opts.batchsize = 100;sae = saetrain(sae, train_x, opts);visualize(sae.ae{1}.W{1}(:,2:end)')% Use the SDAE to initialize a FFNNnn = nnsetup([784 100 10]);nn.activation_function = 'sigm';nn.learningRate = 1;nn.W{1} = sae.ae{1}.W{1};% Train the FFNNopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.16, 'Too big error');```Example: Convolutional Neural Nets---------------------```matlabfunction test_example_CNNload mnist_uint8;train_x = double(reshape(train_x',28,28,60000))/255;test_x = double(reshape(test_x',28,28,10000))/255;train_y = double(train_y');test_y = double(test_y');%% ex1 Train a 6c-2s-12c-2s Convolutional neural network %will run 1 epoch in about 200 second and get around 11% error. %With 100 epochs you'll get around 1.2% errorrand('state',0)cnn.layers = { struct('type', 'i') %input layer struct('type', 'c', 'outputmaps', 6, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %sub sampling layer struct('type', 'c', 'outputmaps', 12, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %subsampling layer};cnn = cnnsetup(cnn, train_x, train_y);opts.alpha = 1;opts.batchsize = 50;opts.numepochs = 1;cnn = cnntrain(cnn, train_x, train_y, opts);[er, bad] = cnntest(cnn, test_x, test_y);%plot mean squared errorfigure; plot(cnn.rL);assert(er<0.12, 'Too big error');```Example: Neural Networks---------------------```matlabfunction test_example_NNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);% normalize[train_x, mu, sigma] = zscore(train_x);test_x = normalize(test_x, mu, sigma);%% ex1 vanilla neural netrand('state',0)nn = nnsetup([784 100 10]);opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samples[nn, L] = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.08, 'Too big error');%% ex2 neural net with L2 weight decayrand('state',0)nn = nnsetup([784 100 10]);nn.weightPenaltyL2 = 1e-4; % L2 weight decayopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex3 neural net with dropoutrand('state',0)nn = nnsetup([784 100 10]);nn.dropoutFraction = 0.5; % Dropout fraction opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex4 neural net with sigmoid activation functionrand('state',0)nn = nnsetup([784 100 10]);nn.activation_function = 'sigm'; % Sigmoid activation functionnn.learningRate = 1; % Sigm require a lower learning rateopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex5 plotting functionalityrand('state',0)nn = nnsetup([784 20 10]);opts.numepochs = 5; % Number of full sweeps through datann.output = 'softmax'; % use softmax outputopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex6 neural net with sigmoid activation and plotting of validation and training error% split training data into training and validation datavx = train_x(1:10000,:);tx = train_x(10001:end,:);vy = train_y(1:10000,:);ty = train_y(10001:end,:);rand('state',0)nn = nnsetup([784 20 10]); nn.output = 'softmax'; % use softmax outputopts.numepochs = 5; % Number of full sweeps through dataopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, tx, ty, opts, vx, vy); % nntrain takes validation set as last two arguments (optionally)[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');```[![Bitdeli Badge](https://d2weczhvl823v0.cloudfront.net/rasmusbergpalm/deeplearntoolbox/trend.png)](https://bitdeli.com/free "Bitdeli Badge")

Vue 2.0:v-html 指令不再支持使用过滤器,还有哪些处理 HTML 内容的方法?

在 Vue 2.0 中,v-html 指令移除了对过滤器的支持,这导致许多开发者在使用富文本时遇到困难。本文通过流程图和代码示例,详细介绍如何利用计算属性、方法和第三方库安全地处理 HTML 内容。

✨ 欢迎来到【Seal ^_^ 的优快云博客】!✨ 788

Vue.js 前端开发 第一张到第四章总结

vue2.0生命周期图 重要生命周期解释 beforeCreate 组件属性计算前,el和data未初始化 create data数据绑定,dom未生成,el不存在 beforeMount 完成el和data初始化(虚拟dom生成) Mount 完成挂载 建议生命周期各个钩子函数可以做的事情 beforeCreate 加loading效果 ...

ljlhnick的博客 264

el x修改激活的菜单_Vue3.0文档 VS Vue2.x文档 有哪些不同

尤大宣布 Vue3.0 已经进入候选阶段【贺电】!!!现在也可以提前试用,通过 Vite 直接初始化一个项目。另外 Vue3.0 的文档也已经上线,感兴趣的小伙伴可以先睹为快。另外指路 ➡️ 之前发布过的 Vue3 的部分 API手册。概览Vue3.0 新功能Composition API----组合式 API,包括setup()等Reactivity API----响应式系统 API,包括ref...

weixin_35831256的博客 809

Vue.js 从 Vue 1.x 迁移

从 Vue 1.x 迁移 FAQ 哇,非常长的一页!是否意味着 Vue 2.0 已经完全不同了呢,是否需要从头学起呢,Vue 1.0 的项目是不是没法迁移了? 非常开心地告诉你,并不是!几乎 90% 的 API 和核心概念都没有变。因为本节包含了很多详尽的阐述以及许多迁移的例子,所以显得有点长。不用担心,你不必从头到尾把本节读一遍! 我该从哪里开始项目迁移呢? 首先,在当前项...

GarfieldEr007的专栏 903

Vue2.0

初识Vue 引入Vue 的两个源文件 <script type="text/javascript" src="../js/vue.js"></script> <script type="text/javascript" src="../js/vue.min.js"></script> 大致模块-> root容器、Vue实例、 <div id='#root'>{{uname}},{{address}}</div>

jxmchou的博客 350

vue-12个知识点

vue-知识点(周总结) 一.vue.js 1.下载Vue2.0的两个版本: 官方网站:Vue.js 开发版本:包含完整的警告和调试模式 生产版本:删除了警告,进行了压缩 2.指令: 解释:指令 (Directives) 是带有 v- 前缀的特殊属性 作用:当表达式的值改变时,将其产生的连带影响,响应式地作用于 DOM 2-1:v-text 更新DOM对象的 textContent <h1 v-text="msg"></h1>

qq_56732117的博客 271

vue 3.0 的学习记录

声明 这篇文章只是记录自己3.0的学习,有问题欢迎指出。 安装3.0 查看版本 vue -V 卸载并安装3.0版本 //卸载3.0之前的版本 npm uninstall vue-cli -g //卸载3.0以上的版本 npm uninstall -g @vue/cli //安装 最新版本 npm install -g @vue/cli vue3.0 3.0官方文档 创建3.0项目 vue create 项目名 组合式API ...

weixin_41897680的博客 372

vue面试题

1、vue生命周期钩子函数详解 https://blog.csdn.net/weixin_40918145/article/details/122808752https://blog.csdn.net/weixin_40918145/article/details/122808752

weixin_40918145的博客 558

vue2.0中过滤器的使用

vue2.0过滤器的使用规则: vue.js在2.0版本中,相对于1.0版本做了比较大的改动,2.0版本中,过滤器只用于插入文本中({{}})。1.0版本中指令(如:v-for,v-on等)里边的过滤器现在都放在计算属性中。同时1.0版本中的所有内置过滤器(如:capitalize等)全部取消了。下边通过一个实际的例子说明2.0版本中过滤器的用法。

wang-ccnu的博客 2万+
上一篇: ES6基础总结(下)
下一篇: Vue2.0-指令与过滤器(下)
评论 2
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值