首页 > 其他分享 >vue 插值语法、文本指令、属性指令、事件指令、class和style、条件渲染、列表渲染

vue 插值语法、文本指令、属性指令、事件指令、class和style、条件渲染、列表渲染

时间:2023-02-14 22:37:02浏览次数:57  
标签:baidu style name 渲染 url 标签 app 指令 var

vue

vue介绍

vue 是一套用于构建用户界面的渐进式框架 js框架

M-V-VM 架构思想  MVC MTV MVVC MVP移动端

-M:model 数据层	js的数据
-V:View  视图层	html,css
-VM:ViewModel	vue做出来介于M和V之间的一层 以后不需要手动进行dom操作了

作用:以后页面变 js变量就变 js变量变 页面就变 

组件化开发、单页面开发

组件化开发 以后都是写出一个个组件 组件的组合成页面
单页面开发:一个html页面 

版本

1.x:使用的较少
2.x:普遍使用
3.x:新项目可能会使用 语法上有差异 但是vue3完全兼容vue2

vue写法

在html中引入 写vue语法

<script>
    var vm = new Vue({
        el: '#app',
        data:{
            
        }
    })
</script>

#固定写法

插值语法

1.M-V-VM演示

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
    <script src="https://cdn.bootcdn.net/ajax/libs/jquery/3.6.1/jquery.js"></script>
    <link rel="stylesheet" href="bootstrap.css">
    <script src="bootstrap.js"></script>
    <script src="https://cdn.jsdelivr.net/npm/[email protected]/dist/vue.js"></script></script>
    
</head>
<body>
<div id="app">
    <p>{{name}}</p>
</div>
</body>

<script>
    var vm = new Vue({
        el: '#app',
        data:{
            name:'joyce'
        }
    })
</script>
</html>

2.插值语法

#用法:
	在html标签中插入{{变量名}} 可以直接读取到data中的所有数据
    
#插值语法中可以放
	变量 --- 对象取值,数组取值
    简单的js语法
    函数()
    
#插值语法不能写在标签的属性上 只能写在标签内部

代码:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
    <script src="https://cdn.bootcdn.net/ajax/libs/jquery/3.6.1/jquery.js"></script>
    <link rel="stylesheet" href="bootstrap.css">
    <script src="bootstrap.js"></script>
    <script src="https://cdn.jsdelivr.net/npm/[email protected]/dist/vue.js"></script></script>

</head>
<body>
<div id="app">
    <p>姓名:{{name}}</p>
    <p>年龄:{{age}}</p>
    <p>爱好:{{hobby[0]}}</p>#数组可以用索引取值
    <p>朋友:{{friend.name}}</p>#或{{friend['name']}} 字典用对象取值 也可以直接点
    <p>网址:{{url}}</p> #默认不会渲染成标签
    <p>三目运算符:{{1>2?'成立':'不成立'}}</p>#?成立执行:后面的 不成立执行?后面的

</div>
</body>
<a href=""></a>
<script>
    var vm = new Vue({
        el: '#app',
        data:{
            name:'akLian',
            age:23,
            hobby:['game','eat','sleep'],
            friend:{name:'joyce',age:24},
            url:'<a href="http://www.baidu.com">点我</a>'
            //三目运算符  --- python叫三元表达式
        }
    })
</script>
</html>

文本指令

#指令系统 v-xxx
 vue提供的 都是以 v-开头 写在标签属性上的 统称为指令 例如<p v-text="url"></p> 其中"url"必须是data中定义的变量

v-text

#直接把字符串内容渲染在标签内部 (普通字符串)通过转义字符转成了文本
    <p v-text="url"></p>
         等同于
    <p>{{url}}</p>c

v-html

#v-html会将其当html标签解析后输出(标签)

	<p v-html="url"></p>

v-show

#等于布尔值 该标签事否显示 样式控制显示不显示
	<p v-show=false>{{name}}</p>
	<p style="display: none;">akLian</p>
#v-show=false时 隐藏 
	<p v-show=true>{{name}}</p>
#v-show=true时 正常显示

v-if

#等于布尔值 该标签是否显示 整个标签都删除 效率低 在dom中删除标签
	<p v-if=true>{{name}}</p>
    <p v-if=false>{{name}}</p>

属性指令

#标签上的属性可以绑定变量 以后变量变化 属性的值跟着变化

#语法:
	v-bind:属性名="变量名"
	<img v-bind:src="photo" alt="">
#简写:
	:属性名-'变量名'

事件指令

 #事件指令是:点击事件、双击事件等等.....网页click用的最多
    v-on:click(事件名) = '函数'
    <button v-on:click="click"></button>
#函数必须写在methods的配置项中
    <script>
    var vm = new Vue({
        el: '#app',
        data:{
            show:true,
        },
        methods:{
            'click':function () {
                this.show =! this.show //取反
            }
        }
    })
</script>

#点击button就会触发绑定函数(click)的执行

#可以简写成 @click(事件名)='函数'

小案例:点击按钮,随即切换美女图片

#methods配置项中携程这种形式
handleClick(){}
如果函数中再套函数 如果内部不是箭头函数 this指向有问题 需要在外部定义一下 
var _this = this

代码:

<script>
    var vm = new Vue({
        el: '#app',
        data: {
            url: 'https://img2.baidu.com/it/u=1604119766,3957090543&fm=253&fmt=auto&app=138&f=JPEG?w=546&h=500',
            url_list: [
                'https://img2.baidu.com/it/u=1166303631,1917184457&fm=253&fmt=auto&app=138&f=JPEG?w=499&h=494',
                'https://img2.baidu.com/it/u=2229888682,2986344751&fm=253&fmt=auto&app=138&f=JPEG?w=500&h=625',
                'https://img2.baidu.com/it/u=382417669,3760900398&fm=253&fmt=auto&app=138&f=JPEG?w=211&h=308',
                'https://img2.baidu.com/it/u=1835608370,987682292&fm=253&fmt=auto&app=138&f=JPEG?w=640&h=360',
            ]
        },
        methods: {
            'handleClick': function () {
                    var i = Math.round(Math.random() * (_this.url_list.length - 1))//随机生成一个数组里面个数的数 从0开始 所以数组长度-1
                    _this.url = _this.url_list[i]
            }
        }
    })
</script>

案例2:自动变换图片setInterval(function () {},1000)1000=1秒

<script>

    var vm = new Vue({
        el: '#app',
        data: {
            url: 'https://img2.baidu.com/it/u=1604119766,3957090543&fm=253&fmt=auto&app=138&f=JPEG?w=546&h=500',
            url_list: [
                'https://img2.baidu.com/it/u=1166303631,1917184457&fm=253&fmt=auto&app=138&f=JPEG?w=499&h=494',
                'https://img2.baidu.com/it/u=2229888682,2986344751&fm=253&fmt=auto&app=138&f=JPEG?w=500&h=625',
                'https://img2.baidu.com/it/u=382417669,3760900398&fm=253&fmt=auto&app=138&f=JPEG?w=211&h=308',
                'https://img2.baidu.com/it/u=1835608370,987682292&fm=253&fmt=auto&app=138&f=JPEG?w=640&h=360',
            ]
        },
        methods: {
            'handleClick': function () {
                var _this = this
                setInterval(function () {
                    var i = Math.round(Math.random() * (_this.url_list.length - 1))
                    _this.url = _this.url_list[i]
                }, 100)

            }
        }
    })

</script>

es6对象写法

 // es 6 的对象写法
    var hobby = ['篮球', '足球']
    var f = function (a, b) {
        console.log('匿名函数')
        console.log(a + b)
    }
    // var d={'name':"lqz",age:19,'hobby':hobby}
    // var d={'name':"lqz",age:19,hobby:hobby}
    // var d = {'name': "lqz", age: 19, hobby}   // es6 的简写形式
    // var d = {'name': "lqz", age: 19, f}   // es6 的简写形式
    var d = {'name': "lqz", age: 19, handleClick(){
      console.log('xxxxx')
      }}   // es6 的简写形式
    console.log(d)
    d.handleClick()

class和style

# 本身他俩都是属性指令,但是他们比较特殊,应用更广泛,单独再讲

# class:推荐用数组  
	:class='变量'   
    变量可以是字符串,数组,对象
    
    <style>
        .font{
            font-size: 50px;
        }

        .red{
            background-color: blue;
        }
        .colour{
            color: hotpink;
        }
    </style>
    
    </head>
    <body>
    <div id="app"   >
        <h1 :class="class_obj">哈哈哈哈</h1>


    </div>
    </body>
    
     class_str:'red'
     class_list:['red'] #推荐使用
     class_obj:{"font":true,red:true}
    

    
# style:推荐用对象
	:style='变量'   
    变量可以是字符串,数组,对象

    
	<h1 :style="style_obj">hahah </h1>
        
    style_str:'color:red'
    style_list:[{color:'green'}]
    style_obj:{color:'yellow'}
    
    
    
    
# 数组的方法:很多,自己学

条件渲染

# v-if=条件  放在标签上,如果条件成立,该标签就现实,如果条件不成立,该标签就不显示
# v-else-if=条件  放在标签上,如果条件成立,该标签就现实,如果条件不成立,该标签就不显示
# v-else     放在标签上,上面条件都不成立,显示这个标签

代码:

</head>
<body>
<div id="app"   >
    <div v-if="a>=80">优秀</div>
    <div v-else-if="a>=60&&a>=80">良好</div>
    <div v-else>不及格</div>

</div>
</body>


<script>

    var vm = new Vue({
        el: '#app',
        data: {
            a :33
        }
    })

列表渲染

v-for 


<body>
<div id="app">
    <div class="container-fluid">
        <div class="row">
            <div class="col-md-6 col-md-offset-3 text-center">
                <h1>购物车</h1>
    <button @click="handleClick">点我</button>
    <div v-if="show" >
    <table class="table" class="tab-content" >
      <thead>
        <tr>
          <th>id</th>
          <th>Name</th>
          <th>Price</th>
        </tr>
      </thead>
      <tbody>
        <tr v-for="item in good_list" >
          <th scope="row">{{item.id}}</th>
          <td>{{item.name}}</td>
          <td>{{item.price}}</td>
        </tr>

      </tbody>
    </table>
    </div>
        </div>
    </div>

    </div>



</div>
</body>


<script>

    var vm = new Vue({
        el: '#app',
        data: {
            show:false,
            good_list:[
                {id:1,name:'物品1',price:'123元'},
                {id:1,name:'物品2',price:'12元'},
                {id:1,name:'物品3',price:'23元'},
                {id:1,name:'物品4',price:'13元'},
            ]


        },
       methods:{
            handleClick(){
                this.show =! this.show
            }
         }
    })

</script>
#想循环那个列表就在哪个上面加

标签:baidu,style,name,渲染,url,标签,app,指令,var
From: https://www.cnblogs.com/lzy199911/p/17121069.html

相关文章