前端框架开始学习Vue

 定义基本Vue代码结构



1 v-text,v-cloak,v-html命令

默认 v-text没有闪烁问题,但是会覆盖元素中原本的内容,插值表达式只会替换自己的占位符,

<!DOCTYPE html>
<html>
    <head>
        <meta charset="UTF-8">
        <title></title>
    </head>
    <script src="vue.js">
    </script>
    <style type="text/css">
        [v-cloak]{
            display: none;
        }
    </style>
    <body>
        <div id="app">
            <p v-cloak="">{{msg}}</p>
        </div>
        <script type="text/javascript">
            var vm = new Vue({
                el:‘#app‘,
                data:{
                    msg:"123"
                }
            })
        </script>
    </body>
</html>

--使用v-cloak解决插值表达式闪烁的问题

以上两种 方法会默认转义成文本输出

如果需要输出成网页元素就需要 v-html

<div v-html="msg2"></div>



2 v-bind 使用【Vue中提供了 v-on:事件绑定机制】 缩写是【:】

v-bind : 是vue中,提供的用于绑定属性的指令<input type="button" name="" id="" value="按钮" v-bind:title="msg3" /><input type="button" name="" id="" value="按钮" v-bind:title="msg3+‘123‘" />\注意:   v-bind:指令可以被简写为 : 要绑定的属性  v-bind中,可以写合法的js表达式
<input type="button" name="" id="" value="按钮" :title="msg3" /> #这样也是可以的



3 v-on指令【Vue中提供了 v-on:事件绑定机制】 缩写是【@】

<body>
        <div id="app">
            <input type="button" value="按钮2" v-on:click="show" />
            <input type="button" value="按钮2" v-on:mouseover="show" />
        </div>
        <script type="text/javascript">
            var vm = new Vue({
                el:‘#app‘,
                data:{
                    msg3:‘大家都是好学生‘
                },
                methods:{ //这个methods属性中定义了当前Vue实例所有可用的方法
                    show:function(){alert(‘hello‘)}
                }
            })
        </script>
    </body>

--使用v-on:绑定事件,此绑定了点击事件和鼠标覆盖事件

事件修饰符:

  .stop 阻止冒泡

<body>
        <div id="app">
            <div class="inner" @click="div1Handler">
                <input type="button" value="惟他" @click.stop="btnHandler"/>
            </div>
        </div>
        <script type="text/javascript">
            var vm = new Vue({
                el:‘#app‘,
                data:{

                    },
                methods:{
                    div1Handler(){
                        console.log(‘inner div 事件‘)
                    },
                    btnHandler(){
                        console.log(‘按钮事件‘)
                    }
                        }
            })
        </script>
    </body>

--阻止冒泡

  .prevent 阻止默认事件

<body>
        <div id="app">
            <a href="http://www.baidu.com" @click.prevent="linkClick">有问题,去百度</a>
        </div>
        <script type="text/javascript">
            var vm = new Vue({
                el:‘#app‘,
                data:{

                    },
                methods:{
                    linkClick(){
                        console.log(‘触发连接点击事件‘)
                    }
                        }
            })
        </script>
    </body>

--阻止事件

  .capture 添加事件侦听器时使用事件捕获模式

<body>
        <div id="app">
            <div class="inner" @click.capture="divHandler">
                <input type="button" name="" id="" value="按钮" @click="btnHandler" />

            </div>
        </div>
        <script type="text/javascript">
            var vm = new Vue({
                el:‘#app‘,
                data:{

                    },
                methods:{
                    divHandler(){
                        console.log(‘class触发‘)
                    },
                    btnHandler(){
                        console.log(‘按钮触发‘)
                    }
                        }
            })
        </script>
    </body>

--从外到里,进行捕获事件

  .self 只当事件在该元素本身(比如不是子元素)触发时触发回调

<body>
        <div id="app">
            <div class="inner" @click.self="divHandler">
                <input type="button" name="" id="" value="按钮" @click="btnHandler" />

            </div>
        </div>
        <script type="text/javascript">
            var vm = new Vue({
                el:‘#app‘,
                data:{

                    },
                methods:{
                    divHandler(){
                        console.log(‘class触发‘)
                    },
                    btnHandler(){
                        console.log(‘按钮触发‘)
                    }
                        }
            })
        </script>
    </body>

--实现只有点击当前元素时候才会触发事件处理函数

  .once 事件只触发一次

<body>
        <div id="app">
            <div class="inner" @click.self.once="divHandler">
                <input type="button" name="" id="" value="按钮" @click.once="btnHandler" />

            </div>
        </div>
        <script type="text/javascript">
            var vm = new Vue({
                el:‘#app‘,
                data:{

                    },
                methods:{
                    divHandler(){
                        console.log(‘class触发‘)
                    },
                    btnHandler(){
                        console.log(‘按钮触发‘)
                    }
                        }
            })
        </script>
    </body>

-- .once只触发一次事件处理函数

.self 只会阻止自己身上冒泡行为的触发,并不会真正阻止冒泡的行为




4 使用Vue完成一个跑马灯效果

<!DOCTYPE html>
<html>
    <head>
        <meta charset="UTF-8">
        <title></title>
    </head>
    <script type="text/javascript" src="vue.js">
    </script>
    <body>
        <div id="app">
            <input type="button" name="" id="" value="浪起来" v-on:click="lang"/>
            <input type="button" name="" id="" value="低调" @click="stop"/>
            <h4>{{msg}}</h4>
        </div>
        <script type="text/javascript">
            // 注意:在vm 实例中,如果想要获取data上的数据 或者想要调用
            //  methods中的方法     ,必须通过this.数据属性名 或this.方法名 来进行访问
            // 这里的this表示 我们new 出来 的 vm 实例对象

            var vm = new Vue({
                el:‘#app‘,
                data:{
                    msg:‘猥琐发育,别浪~~!‘,
                    intervalId:null
                },
                methods:{
                    lang(){
                        if (this.intervalId!=null)return;
                        // 箭头函数是解决this指向的问题
                        this.intervalId=setInterval(()=>{
                        //console.log(_this.msg)
                        // 获取到头的第一个字符
                        var start = this.msg.substring(0,1)
                        // 获取到后面的所有字符
                        var end = this.msg.substring(1)
                        // 重新拼接得到新的字符串,并赋值给this.msg
                        this.msg=end +start
                        },400)
                    },
                    stop(){ //停止定时器
                        clearInterval(this.intervalId)
                        this.intervalId=null;
                    }
                }
            })
            // 分析:
            // 1 给浪起来按钮绑定点击事件 用 v-on
            // 2 在按钮事件处理函数中,写相关的业务逻辑代码:拿到
            //    msg 然后调用字符串的 substring来进行字符串截取操作
            // 3 为了实现点击下按钮,自动截取的功能,需要实现定时功能
        </script>
    </body>
</html>




5 v-model双向绑定

v-bind 只能实现数据的单向绑定,从M 自动绑定到 V,无法实现双向绑定<input type="text" name="" id="" v-bind:value="msg3" />
使用 v-model指令,可以实现表单元素和Model中数据双向数据绑定注意:v-model 只能运用在表单元素中input(radio,text,address,email...)  select checkbox<input type="text" name="" id="" v-model="msg3" />

    <body>
        <div id="app">
            <input type="text" v-model="n1" />

            <select name="" id="" v-model="opt">
                <option value="+">+</option>
                <option value="-">-</option>
                <option value="*">*</option>
                <option value="/">/</option>
            </select>
            <input type="text" v-model="n2" />
            <input type="button" value="=" @click="calc"/>
            <input type="text" name="" id="" v-model="result" />
        </div>
        <script type="text/javascript">
            var vm = new Vue({
                el:‘#app‘,
                data:{
                    n1:0,
                    n2:0,
                    result:0,
                    opt:‘+‘
                    },
                methods:{
                    calc(){ //计算器算数方法
//                        switch(this.opt){
//                            case "+":
//                            this.result = parseInt(this.n1)+parseInt(this.n2)
//                            break;
//                            case "-":
//                            this.result = parseInt(this.n1)-parseInt(this.n2)
//                            break;
//                            case "*":
//                            this.result = parseInt(this.n1)*parseInt(this.n2)
//                            break;
//                            case "/":
//                            this.result = parseInt(this.n1)+parseInt(this.n2)
//                            break;
//                        }
                        // 投机取巧法,正式开发中,尽量少用
                        var codeStr = ‘parseInt(this.n1)‘+this.opt+‘parseInt(this.n2)‘
                        this.result=eval(codeStr)
                    },

                        }
            })
        </script>
    </body>

---用v-model双向绑定实现计算器的基本功能

原文地址:https://www.cnblogs.com/Skyda/p/10216747.html

时间: 2024-11-07 02:33:17

前端框架开始学习Vue的相关文章

前端框架开始学习Vue(二)

1 根据关键字实现数组的过滤 <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title></title> <link rel="stylesheet" type="text/css" href="css3.3.7/bootstrap.css"/> </head> <

前端框架MVVM和VUE的理解和应用

市面上很多开源的程序里面用的前端框架以前大多用的MVVM的框架,后面逐渐的都被VUE的框架代替了,像一些比较活跃的开源程序更新轨迹上就可以看到一开始用的是MVVM模式,后期更新为VUE的框架,类似开源商城DSMall3.0之前手机端用的是MVVM模式,在3.0之后便更换成VUE的框架了,那MVVM和VUE个有什么不同呢?一.对于MVVM的理解??MVVM?是 Model-View-ViewModel 的缩写.Model代表数据模型,也可以在Model中定义数据修改和操作的业务逻辑.View?代表

【实习40天-60天】odoo前端框架的学习

前言 Odoo 是一个开源框架,针对 ERP 的需求发展而来,适合定制出符合客户各种需求的 ERP 系统和电子商务系统 但是正因为是框架,且是一个集成框架,别人的界面与代码早已完成 所以在别人的代码上修改(二次开发),对我来说是一个很大的挑战 odoo前端的组成 odoo运用的框架 odoo前端是一个很老的框架,名叫 backbone,在以前也是很流行的 backbone的特点:轻,兼容性好.缺点:相比流行框架比起来学习成本高 但当年用来实现 MVC 的选型:jquery, underscore

主流前端框架对比:Vue.js , React, Angular.js

个人认为Vue.js的文档最恳切.我认为结合文档和遇到问题Google答案的匹配度来讲:Vue.js > ReactJS > AngularJS > Angular 2 如何使用Vue.js? 1.安装 (1)script 如果项目直接通过script加载CDN文件,代码示例如下: <script src="http://webapp.didistatic.com/static/webapp/shield/z/vue/vue/1.0.24/vue.min.js"

七周七种前端框架四:Vue.js 组件和组件通信

基本是按照官网的 Guide 全部梳理了一遍:http://vuejs.org/guide/index.html 这里我们以一个 Todo List 应用为例来把相关的只是都串起来,这篇里面的全部代码都在github上 https://github.com/lihongxun945/vue-todolist Vue 实例 一个 Vue 应用是由一个 root vue instance 引导启动的,而 Vue instance 是这么创建的: var vm = new Vue({ // optio

Web前端框架学习成本比较及学习方法

就项目中自己用过的前端框架的学习成本比较与学习心得分享 刚工作时间不长只用过这几个框架下面是难易程度比较: 不论哪个web前端框架, 究其本质都是把页面的数据传递给后台服务器语言(如java)进行处理, 后台取出的数据把它显示在页面上不就这么简单么; 弄清楚这其中的提交方式(特别点就ajax方式), 参数传递, 事件机制然后在看懂API; 那么不管用什么web框架开发都是很顺心的, API在手通吃所有;  前提是一定要看懂API , 总是去问别人不会有多大进步的, 自己多看API文档; 学习成本

前端工程师必须了解的主流前端框架

现在前端工程师的工作已经不想几年前那样,仅仅写一些页面调整一下样式就可以拿到高薪了.由于前端技术的发展,以及企业对前端工程师的要求越来越高,现在前端工作也越来越复杂.不过只要掌握目前比较流行的主流框架,完全可以轻松应对老板提出的各种需求.今天就和大家聊聊前端工程师必须了解的主流前端框架. 已经从事前端工作,或者正在学习前端开发的朋友们都知道.HTML/CSS/JS是前端开发的基本功.其中HTML负责结构,网页想要表达的内容由html书写.CSS负责样式,网页的美与丑由它来控制,JS负责交互,用户

1.VUE前端框架学习记录一

VUE前端框架学习记录一文字信息没办法描述清楚,主要看编码实战里面,有附带有一个完整可用的Html页面,有需要的同学到脑图里面自取.脑图地址http://naotu.baidu.com/file/f0a6c2f23b97d0371032c408e7659917?token=2fd9d925d380fc1d 原文地址:https://www.cnblogs.com/jtfr/p/11185262.html

前端框架Vue学习的心得记录(过渡&amp;动画)

目标:深入了解Vue框架(2.x版本)的组件 方法:通过看Vue的官方手册(Vue官方网站) 内容:本博客记录一些学习Vue中的心得,便于日后启发.(过渡&动画)(未完成,待继续) 注:遇到一些不懂的函数等,可以看官网的API参考. 正文; 一.概述 Vue 在插入.更新或者移除 DOM 时,提供多种不同方式的应用过渡效果. 包括以下工具: 在 CSS 过渡和动画中自动应用 class 可以配合使用第三方 CSS 动画库,如 Animate.css 在过渡钩子函数中使用 JavaScript 直