前端框架vue

Posted 飞虎的自留地

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了前端框架vue相关的知识,希望对你有一定的参考价值。

vue学习

基础使用

vue属于前端框架,和框架中的模板语言比较类似,下面开始做一个简单的vue做成的网页。

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <meta http-equiv="X-UA-Compatible" content="ie=edge">
    <title>Document</title>
    <script src="../js/vue.js"></script>
    <script>
    window.onload=function ({
        var vm = new Vue({
            el:'.he',
            data:{
                content:'第一个vue对象'
            }
        })

    }
    
</script>
</head>
<body>
    <p class="he">{{content}}</p>
</body>
</html>
  • 首先要在script里导入js.vue.js文件。

  • 设置window.onload 可以提前加载html代码,在运行完html再运行js文件。

  • 设置new Vue对象,el:绑定标签,此处通过类标签进行绑定,id标签使用#进行绑定。

  • 在html代码下添加{{}}括号,代表数据要在vue中添加,此时html代码中是{{content}},vue中content:第一个vue对象。此时就会在网页显示这行字。

模板语法

V-bind和V-on命令,

v-bind可以绑定标签内的属性,简写为:
v-on可以绑定时间,简写为@
代码示意:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <meta http-equiv="X-UA-Compatible" content="ie=edge">
    <title>02-vue的基本操作</title>
    <script src="js/vue.js"></script>
    <script>
        window.onload = function ({

            // 2.创建vue对象
            var vm = new Vue({
                el:'.box',
                data:{
                    message:"hello  Vue!",
                    linkName:'百度链接',
                    linkUrl:'http://www.baidu.com'
                },
                methods:{
                    fnClick:function(){
                        alert('v-on: 3.操作方法 ')
                    }
                }
            })
        }
    
</script>
</head>
<body>
    <div class="box">

           <!--  v-on: 3.操作方法 -->
           <button v-on:click="fnClick">操作方法</button>
            <!-- v-bind: 2.操作属性  -->
            <a v-bind:href="linkUrl" target="_blank">{{linkName}}</a>
            <!-- 1.操作数据 标签包裹的内容 -->
            <p>{{message}}</p>

    </div>



</body>
</html>
  • v-on绑定了点击事件,在v-on:click=”fnclick“,fnclick属于方法,所以在vue中添加了methods,将方法fnclick添加进去。

三目运算

三目运算通常运用在‘二选一’的情景下,代码示意:

#css文件
    <style>
        .red{color: red}
        .green{color: green}
    
</style>
#vue设置
isRed:false,
#html文件设置
 <p :class="isRed?'red':'green'">三目运算三元运算</p>

此刻在vue设置isred为ture就执行redcss文件,false就执行绿色css文件。

计算属性和倾听属性

计算属性是因为把一些运算表达式放在html代码中相对比较乱,html和js代码混合使用。此时发明了计算属性,在vue添加一个:computed:{这里面写运算表达式}
倾听属性:在vue中添加watch:{这里面添加函数,函数需要传入两个参数,第一次是当前值,第二个是变化后的值}。

class和style绑定

class绑定有很多很多方法,掌握其中一个就可以,
下面是字符串class绑定:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <meta http-equiv="X-UA-Compatible" content="ie=edge">
    <title>Document</title>
    <style>
    .red{
            color:red;

        }
        .font{
            font-size50px;
        }
        .line{
            text-decoration: underline;
        }
    
</style>
    <script src="../js/vue.js"></script>
<script>

    window.onload= function ({

        var vm = new Vue({
            el:".box",
            data:{

                classstr:"red line font",



            },
               style02:{
                        "text-decoration":"underline"
                    }

        })

    }
</script>
</head>
<body>
    <div class="box">

        <p :class="classstr">1字符串class绑定</p>
       <p :style="style02">style的操作样式</p>


    </div>
</body>
</html>

在class哪里进行v-bind,设置class=某个字符串,在vue中添加字符串等于css的名称,从而给标签绑定了css.
style绑定:
style绑定类似于把css文件写到了vue中,我也不知道这有什么写的,也不方便啊。
通过标签中style=‘一个字符串’就可以应用了这个style。代码示意在上述代码写了。<p :style="style02">style的操作样式</p>这句代码绑定了style02,所以就有了下划线。

条件渲染

1.v-show 用于标签是否显示用的,例如:v-show=‘isshow’假如在vue data中,isshow=TURE则显示,=false则隐藏。
2.v-if v-else-if:
v-if=‘number=1’
v-else-if ='number=2'
在vue中data number=1展示第一条数据,number=2展示第二条数据。

列表渲染

v-for 类似于python中的列表遍历。
vue中data下写一个列表:例如dataList:['a','b','c','d','e'],
在html代码中进行列表渲染:<div class="box">        <div v-for="item in dataList">  {{item}}</div>
此时网页就会依次打出abcde

事件的处理

事件处理主要是阻止表单提交和防止事件冒泡:
事件冒泡:就是一个子标签和一个父标签,假设有点击事件,你点击子标签,就会向父标签传递。

  <div class="box">

        <!-- 阻止提交事件 submit.prevent -->
            <!-- <form @submit.prevent = "" action=""> -->
            <form  action="">
                    <input type="text" name="user">
                    <input @click.stop.prevent = "" type="submit" >

                </form>

        <!-- 阻止冒泡事件  stop -->
            <div @click="fnFather" class="father" style="background:red">
                    father
                    <div  @click.stop="fnSon" class="son" style="background:green">son</div>
            </div>
</div>
过滤器

过滤器这个在sql语句里面也有,意思差不多,还是上代码来解释吧~

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <meta http-equiv="X-UA-Compatible" content="ie=edge">
    <title>01-vue的基本使用</title>
    <script src="js/vue.js"></script>
    <script>
        window.onload = function ({


           var vm = new Vue({
               el:'.box',
               data:{
                   age:30
               },
               filters:{
                //    判断年龄
                    ageFilter:function (age{

                                    if (age > 18) {
                                    return "成年人"
                                } else {
                                    return "小孩子"
                                }
                        }

               }


           })


        }
    
</script>
</head>
<body>

    <div class="box">


       <p>{{age | ageFilter}}</p>
    </div>

</body>
</html>

过滤器就是在html代码{{}}里面添加一个大竖杠|,后面的就是过滤器,在vue中做逻辑判断,然后在{{}}里面展示.

双向绑定v-model

v-model一般用于input和select下拉菜单使用。

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <meta http-equiv="X-UA-Compatible" content="ie=edge">
    <title>v-model</title>
    <script src="../js/vue.js"></script>
    <script>
    window.onload = function ({

        var vm = new Vue({
el:".box",
data:{
meg:[]

}


        })

    }
    
</script>
</head>
<body>
    <div class="box">
        <!-- <input type="text"v-model="meg">
        <p>{{meg}}</p> -->


       <select name="" id=""v-model='meg'><option value="石家庄">石家庄</option>
       <option value="保定">保定</option>
       <option value="衡水">衡水</option>
       <option value="沧州">沧州</option></select>
       <input type="checkbox" name="like"value="游泳" id="" v-model='meg'>游泳
       <input type="checkbox" name="like"value="唱歌" id="" v-model='meg'>唱歌
       <p>{{meg}}</p>
    </div>
</body>
</html>
实例生命周期

我理解的实例生命周期类似于flask框架下的钩子函数,或者是django框架下的中间件。需要理解,但是平时不写也没有问题。

阶段 描述
beforeCreate 组件刚被创建
created 创建后
beforeMount 挂载前调用
mounted 实例挂载到dom之后被调用,可以当成是vue对象的ready方法来使用
beforeUpdate 数据发生变化前调用
updated 数据发生变化后调用
beforeDestroy 销毁前
destroyed 销毁后
禅定时刻

最近看了一本彭浩翔写的书,《一些无可厚非的小事》,书名和封面极其烂,但是不影响书的内容,书里面的内容大多都是由很短的一篇文章组成,不像散文那么飘逸的看不懂,没有看长篇小说那种压力,确实值得一读。对了,彭浩翔是一个香港导演,《志明与春娇》你应该听说过,不过我更喜欢他的《买凶拍人》~


以上是关于前端框架vue的主要内容,如果未能解决你的问题,请参考以下文章

代码中怎么看出使用了vue框架

前端VUE页面快速生成

前端 Vue

[vscode]--HTML代码片段(基础版,reactvuejquery)

vue前端框架实用基础篇

vue项目微信端清理缓存问题解决