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

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/vue@2.7.14/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/vue@2.7.14/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>
#想循环那个列表就在哪个上面加
posted @ 2023-02-14 22:16  李李大冒险  阅读(53)  评论(0编辑  收藏  举报
  1. 1 不可撤销
  2. 2 小年兽 程嘉敏
  3. 3 迷人的危险3 FAFA
  4. 4 山楂树之恋 程佳佳
  5. 5 summertime cinnamons / evening cinema
  6. 6 不谓侠(Cover 萧忆情Alex) CRITTY
  7. 7 神武醉相思(翻自 优我女团) 双笙(陈元汐)
  8. 8 空山新雨后 音阙诗听 / 锦零
  9. 9 Wonderful U (Demo Version) AGA
  10. 10 广寒宫 丸子呦
  11. 11 陪我看日出 回音哥
  12. 12 春夏秋冬的你 王宇良
  13. 13 世界が终わるまでは… WANDS
  14. 14 多想在平庸的生活拥抱你 隔壁老樊
  15. 15 千禧 徐秉龙
  16. 16 我的一个道姑朋友 双笙(陈元汐)
  17. 17 大鱼 (Cover 周深) 双笙(陈元汐)
  18. 18 霜雪千年(Cover 洛天依 / 乐正绫) 双笙(陈元汐) / 封茗囧菌
  19. 19 云烟成雨(翻自 房东的猫) 周玥
  20. 20 情深深雨濛濛 杨胖雨
  21. 21 Five Hundred Miles Justin Timberlake / Carey Mulligan / Stark Sands
  22. 22 斑马斑马 房东的猫
  23. 23 See You Again Wiz Khalifa / Charlie Puth
  24. 24 Faded Alan Walker
  25. 25 Natural J.Fla
  26. 26 New Soul Vox Angeli
  27. 27 ハレハレヤ(朗朗晴天)(翻自 v flower) 猫瑾
  28. 28 像鱼 王贰浪
  29. 29 Bye Bye Bye Lovestoned
  30. 30 Blame You 眠 / Lopu$
  31. 31 Believer J.Fla
  32. 32 书信 戴羽彤
  33. 33 柴 鱼 の c a l l i n g【已售】 幸子小姐拜托了
  34. 34 夜空中最亮的星(翻自 逃跑计划) 戴羽彤
  35. 35 慢慢喜欢你 LIve版 戴羽彤
  36. 36 病变 戴羽彤
  37. 37 那女孩对我说 (完整版) Uu
  38. 38 绿色 陈雪凝
  39. 39 月牙湾 LIve版 戴羽彤
像鱼 - 王贰浪
00:00 / 04:45
An audio error has occurred, player will skip forward in 2 seconds.

作词 : 周有才

作曲 : 周有才

这是一首简单的歌

没有什么独特

试着代入我的心事

它那么幼稚

像个顽皮的孩子

多么可笑的心事

只剩我还在坚持

谁能看透我的眼睛

让我能够不再失明

我要记住你的样子

像鱼记住水的拥抱

像云在天空中停靠

夜晚的来到

也不会忘了阳光的温暖

我要忘了你的样子

像鱼忘了海的味道

放下所有梦和烦恼

却放不下回忆的乞讨

多么可笑的心事

只剩我还在坚持

谁能看透我的眼睛

让我能够不再失明

记住你的样子

像鱼记住水的拥抱

像云在天空中停靠

夜晚的来到

也不会忘了阳光的温暖

我要忘了你的样子

像鱼忘了海的味道

放下所有梦和烦恼

却放不下回忆的乞讨

只剩自己就好