首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >(第一季)Vue2.0-内部指令

(第一季)Vue2.0-内部指令

作者头像
楠楠
发布于 2018-09-11 03:49:02
发布于 2018-09-11 03:49:02
83310
代码可运行
举报
文章被收录于专栏:郭少华郭少华
运行总次数:0
代码可运行

github地址

案例地址 github

vue2.0起步

介绍

Vue (读音 /vjuː/,类似于 view) 是一套用于构建用户界面的渐进式框架。与其它大型框架不同的是,Vue 被设计为可以自底向上逐层应用。Vue 的核心库只关注视图层,不仅易于上手,还便于与第三方库或既有项目整合。另一方面,当与现代化的工具链以及各种支持类库结合使用时,Vue 也完全能够为复杂的单页应用提供驱动。

下载

vue2.0官网

下载.png

引入到页面

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
<script type="text/javascript" src="/js/vue.js"></script>

安装web服务器

npm install -g live-server 启动服务:live-server

live-server.png

第一个vue程序(声明式渲染)

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
    <div id="app">
            {{message}}
    </div>

    <script type="text/javascript">
        var app=new Vue({
             //绑定id为app的元素-实例与html元素绑定
            el:'#app',
            //数据源
            data:{
                //数据源里的对象
                message:'Hello Vue!'
            }

        })
    </script>

条件渲染(v-if v-else-if v-else v-show)

v-if v-else-if

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
    <div id="app">
        //v-if绑定isLogin数据源,数据源为true时,页面显示选中的复选框
        <div v-if="isLogin">
                <input type="checkbox"  checked>记住密码
        </div>
         //为false时显示不选中的复选框
        <div v-else >
                 <input type="checkbox" >记住密码 
        </div>
          
    </div>
    <script type="text/javascript">
        var app = new Vue({
            el:'#app',
            data:{
                isLogin:true
            }
        })
    </script>

v-else-if 2.1.0 新增

v-else-if,顾名思义,充当 v-if 的“else-if 块”,可以连续使用:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
        //判断条件
       <div v-if="isEn== 'A' ">
            A
        </div>
        <div v-else-if="isEn== 'B'">
            B
        </div>
        <div v-else-if="isEn== 'C'">
           C
        </div>
        <div v-else>
           D
        </div>

    <script type="text/javascript">
        var app = new Vue({
            el:'#app',
            data:{
                isEn:'A'
            }
        })
    </script>

v-show

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
    <div id="app">
        //true显示false不显示但与if不同的是,v-show无论true还是false,都已经加载了,但v-if是无预加载的.
        <div v-show="isDisplay">
                <input type="button" value="登陆">
        </div>
    </div>

    <script type="text/javascript">
        var app = new Vue({
            el:'#app',
            data:{
                isDisplay:true
            }
        })
    </script>

v-show 的元素始终会被渲染并保留在 DOM 中。v-show 只是简单地切换元素的 CSS 属性 display。

v-if与v-show的区别? v-if 是“真正”的条件渲染,因为它会确保在切换过程中条件块内的事件监听器和子组件适当地被销毁和重建。 v-if 也是惰性的:如果在初始渲染时条件为假,则什么也不做——直到条件第一次变为真时,才会开始渲染条件块。 相比之下,v-show 就简单得多——不管初始条件是什么,元素总是会被渲染,并且只是简单地基于 CSS 进行切换。 一般来说,v-if 有更高的切换开销,而 v-show 有更高的初始渲染开销。因此,如果需要非常频繁地切换,则使用 v-show 较好;如果在运行时条件很少改变,则使用 v-if 较好。

列表循环(v-for)

简单的数组循环

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
<div id="app">
        <ul>
            <!--v-for放到要循环的标签上面-->
            <li v-for="item in items">
                {{item}}
            </li>
        </ul>
    </div>
    
  <script type="text/javascript">
        var app=new Vue({
            el:'#app',
            data:{
                //数组对象
                items:[5,6,8,2,9]
            }
        })
  </script>

排序

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
    <div id="app">
        <ul>
            <!--换成新命名的sortItems-->
            <li v-for="item in sortItems">
                {{item}}
            </li>
        </ul>
    </div>
    
    <script type="text/javascript">
        var app= new Vue({
            el:'#app',
            data:{
                items:[51,61,81,21,91,3]
            },
            computed:{
                //从新命名不能与items冲突
                sortItems:function(){
                    return this.items.sort(function(a,b){
                        return a-b;
                    })
                }
            }
        })

对象循环输出

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
<div id="app">
     <table>
            <tr><th>姓名</th><th>年龄</th></tr>
            <tr v-for="student in students">
                <td>{{student.name}}</td>
                <td>{{student.age}}</td>
            </tr>
  </table>
</div>
    
 <script type="text/javascript">
        var app=new Vue({
            el:'#app',
            data:{
                students:[
                    {name:'张三',age:30},
                    {name:'李四',age:20},
                    {name:'王五',age:10}
                ]
            }
        })
 </script>

输出索引序号

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
<div id="app">
<table>
            <tr><th>序号</th><th>姓名</th><th>年龄</th></tr>
            <tr v-for="(student,index) in students">
                <td>{{index+1}}</td>
                <td>{{student.name}}</td>
                <td>{{student.age}}</td>
            </tr>
        </table>
</div>
    
 <script type="text/javascript">
        var app=new new Vue({
            el:'#app',
            data:{
                students:[
                    {name:'张三',age:30},
                    {name:'李四',age:20},
                    {name:'王五',age:10}
                ]
            }
        })
 </script>

对象排序

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
<div id="app">
     <table>
            <tr><th>姓名</th><th>年龄</th></tr>
            <tr v-for="student in sortStudents">
                <td>{{student.name}}</td>
                <td>{{student.age}}</td>
            </tr>
  </table>
</div>
    
 <script type="text/javascript">
        var app=new Vue({
            el:'#app',
            data:{
                students:[
                    {name:'张三',age:30},
                    {name:'李四',age:20},
                    {name:'王五',age:10}
                ]
            },
            computed:{
                sortStudents:function(){
                  return sortByKey(this.students,'age');
                }
            }
        })

        //数组对象方法排序:
        function sortByKey(array,key){
                return array.sort(function(a,b){
                var x=a[key];
                var y=b[key];
                return ((x<y)?-1:((x>y)?1:0));
            });
        }
 </script>

v-for迭代对象

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
<div id="app">
      <ul>
            <li v-for='animal in animals'>
                {{animal}}
            </li>
        </ul>
</div>
    
 <script type="text/javascript">
        var app= new Vue({
            el:'#app',
            data:{
               animals:{
                    name:'狗',
                    cry:'汪汪'
                }
            }
        })
 </script>

键名键值索引显示

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
<div id="app">
     <ul>
            <li v-for="(value,key,index) in animals">
                {{index}} - {{key}} - {{value}}
            </li>
        </ul>
</div>
    
 <script type="text/javascript">
        var app= new Vue({
            el:'#app',
            data:{
               animals:{
                    name:'狗',
                    cry:'汪汪'
                }
            }
        })
 </script>

v-text&v-html

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
    <div id="app">
        <span>{{message}}</span>
        <!-- v-text可以 -->
        <span v-text="message"></span>
        <!--v-html 输出HTML标签-->
        <span v-html="link"></span>
    </div>
    <script type="text/javascript">
        var app=new Vue({
            el:'#app',
            data:{
                message:'hello world!',
                link:'<a href="http://www.baidu.com">百度</a>'
            }

        })
    </script>
 </script>

v-on 绑定事件监听

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
<div id="app">
        本场比赛得分:{{fenshu}}
        <p>
            <button v-on:click="jiafen">加分</button>
            <!--@缩写语法-->
            <button @click="jianfen">减分</button>
        </p>
        <p>
            <!--keyup键盘监听事件当按下enter时触发事件或者写成enter健的值13-->
            <input type="text" v-on:keyup.enter="onEnter" >
           
        </p>
    </div>

    <script type="text/javascript">
        var app= new Vue({
            el:'#app',
            data:{
                fenshu:0
            },
            //可以写多个方法
            methods: {
                jiafen:function(){
                    this.fenshu++;
                },
                jianfen:function(){
                    this.fenshu--;
                },
                onEnter:function(){
                  this.fenshu= this.fenshu+2;
                }
            }
        })
    </script>

全部按键别名

.enter .tab .delete (捕获 "删除" 和 "退格" 键) .esc .space .up .down .left .right .ctrl .alt .shift .meta

按键对应的编码

image.png

v-model 指令

v-model 指令在表单控件元素上创建双向数据绑定。

v-model.png

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
    <div id="app">
        <p>原始文本信息: {{message}} </p>
        <h2>文本框</h2>
        <p>v-model:<input type="text" v-model="message"></p>
        <p>v-model.lazy:<input type="text" v-model.lazy="message"></p>
        <p>v-number:<input type="text" v-model.number="message"></p>
        <p>v-trim:<input type="text" v-model.trim="message"></p>
        <h2>文本域</h2>
        <textarea v-model="message"></textarea>
        <h2>多选框绑定一个值</h2>
        <input type="checkbox" id="isTrue" v-model="isTrue">
        <label for="isTrue">{{isTrue}}</label>
        <h2>多选框绑定一数组</h2>
        <input type="checkbox" id="zs" value="张三" v-model="web_names">
        <label for="zs">张三</label>
        <input type="checkbox" id="ls" value="李四" v-model="web_names">
        <label for="ls">李四</label>
        <input type="checkbox" id="ww" value="王五" v-model="web_names">
        <label for="ww">王五</label>
        <p>{{web_names}}</p>
        <h2>单选框的绑定</h2>
        <input type="radio"  id="one" value="男"  v-model="sex">
        <label for="one"></label>
        <input type="radio"  id="two" value="女"  v-model="sex">
        <label for="two"></label>
        <p>你选择的性别是:{{sex}}</p>
        <h2>select列表</h2>
        <select  v-model="selected">
            <option value="">请选择网站</option>
            <option value="www.baidu.com">百度</option>
            <option value="www.google.com">谷歌</option>
        </select>
        <p>你选中的网站是:{{selected}}</p>
    </div>
    <script type="text/javascript">
        var app =  new Vue({
            el:'#app',
            data:{
                message:'hello world',
                isTrue:true,
                web_names:[],
                sex:'男',
                selected:''
            }
        })
    
    </script>

修饰符

  • .lazy 懒加载每发生变化时输入框的值与数据进行同步变成鼠标离开时
  • .number 自动将用户的输入值转为数值类
  • .trim 去掉首尾的空格

v-bind指令标签属性赋值

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
   <style>
        .classA{
            color: chartreuse
        }
        .classB{
            color: red
        }
        .classC{
            font-size: 10%;
        }
    
  </style>


    <h1>v-bind实例</h1>
    <hr>
    <div id="app">
        <!--v-bind:src动态绑定了src的值-->
        <p><img v-bind:src="imgSrc"  width="200px"></p>
         <!--:href缩写语法-->
        <p><a :href="url" target="_blank" >郭少华</a></p>
        <hr>
        <div :class="className">
            绑定class
        </div>
        <hr>
         <!--判断如果isOK为正确的时候classA样式生效-->
        <input type="radio" value="正确" id="zq" v-model="isOk">
        <label for="zq">正确</label>
        <input type="radio" value="错误" id="cw" v-model="isOk">
        <label for="cw">错误</label>
        
         <div :class="{classA:isOk=='正确' }">
            绑定class中的判断
        </div>
        <hr>
         <!--绑定多个class样式绑定class数组-->        
        <div :class="[ysA,ysC]">
             绑定class数组
        </div>
        <hr>
         <!--三元运算符-->
         <div :class="isOk=='正确'?ysA:ysB">
            class中的三元运算符
        </div>
        <hr>
        <!--color是CSS的写法后面是对应的绑定-->
        <div :style="{color:red,fontSize:font}">
            绑定style
        </div>

         <!--color是CSS的写法后面是对应的绑定-->
         <div :style="styleObject">
                绑定style对象
         </div>

    </div>
    <script type="text/javascript">
        var app =  new Vue({
            el:'#app',
            data:{
                imgSrc:'http://isujin.com/wp-content/uploads/2017/12/wallhaven-594603.jpg',
                url:'http://www.guoshaohua.cn',
                className:'classA',
                isOk:'正确',
                ysA:'classA',
                ysB:'classB',
                ysC:'classC',
                red:'red',
                font:'20px',
                styleObject:{
                    color:'green',
                    fontSize:'40px'
                }
            }
        })
    </script>

其他内部指令(v-pre & v-cloak & v-once)

v-pre指令

在模板中跳过vue的编译,直接输出原始值.在标签中加入v-pre就不会输出vue中的data值了。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
<div id="app">
        <!--显示{{message}}原始文本-->
        <div v-pre>
            {{message}}
        </div>
    </div>

    <script type="text/javascript">
        var app =  new Vue({
            el:'#app',
            data:{
                message:'hello world'
            }
        })
    </script>

v-cloak指令

在vue渲染完指定的整个DOM后才进行显示。它必须和CSS样式一起使用

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
 <div v-cloak>
    渲染完成之后才显示!
 </div>

v-once指令

在第一次DOM时进行渲染,渲染完成后视为静态内容,跳出以后的渲染过程。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
 <div id="app">
        <!--v-once只进来渲染一次值一直是hello world-->
        <div v-once>第一次绑定的值:{{message}}</div>
        <input type="text"  v-model="message">
        <div>{{message}}</div>
    </div>

    <script type="text/javascript">
        var app =  new Vue({
            el:'#app',
            data:{
                message:'hello world'
            }
        })
    </script>
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2018.01.23 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
1 条评论
热度
最新
安装不了
安装不了
回复回复点赞举报
推荐阅读
编辑精选文章
换一批
【第一季】Vue2.0内部指令
学习这套课程你需要的前置知识: HTML的基础知识,你需要达到中级水平,写前端页面的结构代码完全没有问题。 CSS的基础知识,最好做过半年以上的切图和布局,最好了解CSS3的知识。 Javascript的基础知识,对基本语法掌握,这个要求不高,因为遇到难的我会在视频中讲解。 node.js初级知识,只需要会npm的使用和项目初始化就可以了 如果你对上面三个知识还不了解,建议不要冒进学习,会影响你的学习热情。但你已经是科班出身或者在培训班毕业后想继续学习,是完全没有难度的。 学习方法:学完视频之后,一定
用户1212940
2018/01/23
1.3K0
【第一季】Vue2.0内部指令
(13)打鸡儿教你Vue.js
一小时复习 vue.js是一个JavaScriptmvvm库,是以数据驱动和组件化的思想构建的,相比angular.js,vue.js提供了更加简洁,更加容易理解的api,如果习惯了jquery操作dom。
达达前端
2019/07/03
3130
(13)打鸡儿教你Vue.js
后端人眼中的Vue(二)
​ 和插值表达式({{}})一样,用于获取vue实例中data属性声明的数据。用法是在哪个标签上获取就直接在哪个标签上定义v-text或者是v-html。相当于javascript中的innerText。直接将获取的数据直接渲染到指定标签中。
上分如喝水
2023/01/08
2.5K0
后端人眼中的Vue(二)
Vue.js 快速上手精华梳理-快速上手核心重点【热门收藏】
vuecli文档 https://cli.vuejs.org/zh/ https://cli.vuejs.org/zh/guide/installation.html
瑞新
2022/01/21
9880
Vue.js 快速上手精华梳理-快速上手核心重点【热门收藏】
vue入门教程(一)「建议收藏」
Vue 是一套用于构建用户界面的渐进式框架。与其它大型框架不同的是,Vue 被设计为可以自底向上逐层应用。Vue 的核心库只关注视图层,不仅易于上手,还便于与第三方库或既有项目整合。另一方面,当与现代化的工具链以及各种支持类库结合使用时,Vue 也完全能够为复杂的单页应用提供驱动。
全栈程序员站长
2022/09/05
1.5K0
史上最详细vue的入门基础
Vue可以自底向上逐层的应用简单应用:只需一个轻量小巧的核心库复杂应用:可以引入各式各样的Vue插件
楠羽
2022/11/18
9840
史上最详细vue的入门基础
Vue成神之路之内部指令
vue.js——开发版本:包含完整的警告和调试模式 vue.min.js——生产版本:删除了警告,进行了压缩
小胖
2018/12/14
2.7K0
Vue3 常用指令
要进行文本全部替换,则可以用 v-text 来进行,比如下面的“测试”将会被 message 的内容所替代;
村雨遥
2022/10/28
5290
02 . Vue入门基础之条件渲染,列表渲染,事件处理器,表单控件绑定
如果想注册局部指令,组件中接受一个directives的选项,位于vue实例参数里面,局部指令只能在本组件使用
iginkgo18
2020/11/24
4.7K0
02 . Vue入门基础之条件渲染,列表渲染,事件处理器,表单控件绑定
【VUE】基础用法(属性与事件的绑定,条件渲染等)
在填写表单时,双向数据绑定可以辅助开发者在不操作DOM的前提下,自动把用户填写的内容同步到数据源中。
坚毅的小解同志的前端社区
2022/12/13
1.7K0
【VUE】基础用法(属性与事件的绑定,条件渲染等)
Vue学习笔记(一)
MVVM 的工作原理:ViewModel 作为 MVVM 的核心,它把当前页面的数据源(Model)和页面的结构(View)连在一起。
赤蓝紫
2023/01/01
4.4K0
Vue学习笔记(一)
Vue实践--指令
1. v-text     v-text主要用来更新textContent,可以等同于JS的text属性。
问天丶天问
2019/01/28
1.3K0
JavaScript-Vue
通过我们学习的html+css+js已经能够开发美观的页面了,但是开发的效率还有待提高,那么如何提高呢?我们先来分析下页面的组成。一个完整的html页面包括了视图和数据,数据是通过请求 从后台获取的,那么意味着我们需要将后台获取到的数据呈现到页面上,很明显, 这就需要我们使用DOM操作。正因为这种开发流程,所以我们引入了一种叫做MVVM(Model-View-ViewModel)的前端开发思想,即让我们开发者更加关注数据,而非数据绑定到视图这种机械化的操作。那么具体什么是MVVM思想呢?
张哥编程
2024/12/13
1960
JavaScript-Vue
【编程鹿】学Vue.js这一篇就够了「万字学会|通俗易懂」上篇
在MVVM之前,开发人员从后端获取需要的数据模型,然后要通过DOM操作Model渲染到View中。而后当用户操作视图,我们还需要通过DOM获取View中的数据,然后同步到Model中。
鹿老师的Java笔记
2020/12/02
12.8K0
【编程鹿】学Vue.js这一篇就够了「万字学会|通俗易懂」上篇
Vue
1、Vue.js目前最火的的一个前端框架,三大主流前端框架之一。 2、Vue.js是一套构建用户界面的框架(一套完整的解决方案,对项目侵入性大,中途需要跟换框架则需要重构整个项目),只关注视图层,易上手,有配套的第三方类库。 3、提高开发效率,帮助减少不必要的dom操作;双向数据绑定,通过框架提供的指令,前端只需要关注业务逻辑,不再关心dom如何渲染。
xiaozhangStu
2023/08/23
2890
vue初
指令总结 v-bind 可以绑定属性,包括class style,而已省略,使用:替代 在1vue.0中有三种修饰符,.sync,.once,.camel,在2.0中能够废弃了前面两个 .camel将绑定的特性的名称转化为驼峰法则命名
河湾欢儿
2018/09/06
1.1K0
Vue常用内置指令
v-show指令根据表达式的真假,显示或隐藏HTML元素。   使用v-show指令,元素本身是要被渲染的,至于是否显示是通过设置CSS样式属性display来控制的,如果表达式的值为false,则设置样式:"display:none"
别团等shy哥发育
2023/02/25
4660
Vue常用内置指令
Vue.js——60分钟快速入门(转载) Vue.js介绍声明该文是转载的,欢迎转载,支持尊重版权,原文作者:keepfool,原文地址:http://www.cnblogs.com/keepfo
Vue.js是当下很火的一个JavaScript MVVM库,它是以数据驱动和组件化的思想构建的。相比于Angular.js,Vue.js提供了更加简洁、更易于理解的API,使得我们能够快速地上手并使用Vue.js。
lin_zone
2018/08/15
1.2K0
Vue.js——60分钟快速入门(转载)
		Vue.js介绍声明该文是转载的,欢迎转载,支持尊重版权,原文作者:keepfool,原文地址:http://www.cnblogs.com/keepfo
vue指令和用法?
vue基本指令 本质就是自定义属性 Vue中指令都是以 v- 开头 v-cloak 防止页面加载时出现闪烁问题 v-text v-text指令用于将数据填充到标签中,作用于插值表达式类似,但是没有闪动问题 如果数据中有HTML标签会将html标签一并输出 注意:此处为单向绑定,数据对象上的值改变,插值会发生变化;但是当插值发生变化并不会影响数据对象的值 <div id="app"> <!-- 注意:在指令中不要写插值语法 直接写对应的变量名称 在 v-text
青梅煮码
2023/01/16
1.3K0
2.vue常用指令
注意:写插值语句的时候,只有的id=app的元素下面才可以使用插值语句,所以,尽可能创建一个标签,将所要渲染的数据,都写入当前标签中
张哥编程
2024/12/13
2230
2.vue常用指令
相关推荐
【第一季】Vue2.0内部指令
更多 >
交个朋友
加入[腾讯云] DeepSeek开发者交流群
前沿技术深度讨论 发展开发者人脉圈
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验