首页 > 其他分享 >vue基础语法

vue基础语法

时间:2023-02-14 20:24:30浏览次数:39  
标签:style vue name url 标签 基础 语法 list var

1 插值语法

1.1 mvvm演示

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
    <script src="./js/vue.js"></script>
</head>
<body>

<div id="app">
    姓名:{{name}}
    <br>
    <input type="text" v-model="name">
    
</div>
</body>
    <script>
    var vm = new Vue({
        el: '#app',
        data: { // data中定义的变量,以后直接从vm实例直接可以拿到
            name: 'guts',
            age: 22
        }
    })
    </script>
</html>

1.1 插值语法

# 插值语法中可以放
	-变量,对象取值,数组取值
    -简单的js语法
    -函数()
    
# 插值不能写在标签的属性上,只能写在标签内部    
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
    <script src="./js/vue.js"></script>
</head>
<body>
    <div id="app">
        <p>名字:{{name}}</p>
        <p>年龄:{{age}}</p>
        <p>爱好:{{hobby}}---->第一个爱好:{{hobby[1]}}</p>
        <p>妻子:{{wife}}---->妻子的年龄:{{wife.age}}---{{wife['age']}}</p>
        <p>运算:{{10*2+3*4}}</p>
        <p>三目运算符【条件?'符合了':'不符合了'】:{{10>9?'大于':'小于'}}</p>
        <p>标签(默认不会渲染成标签):{{a_url}}</p>
        <p>函数()</p>
    </div>

</body>
<script>
    var vm = new Vue({
        el: '#app',
        data: {
            name: 'guts',
            age: 19,
            hobby: ['唱', '跳', 'rap', '篮球'],
            wife : {name: '尚怡洁', age: 18},
            // 运算
            a_url: '<a href="http://www.baidu.com">点我看美女</a>'
            // 三目运算符         三元表达式
        }
    })
</script>
</html>
    

2 文本指令

# 指令系统
	-v-xx 写在标签上,任意标签
    -v-xx="" ---> 原来插值语法中能写的,他都能写,不要再加{{}}
# 指令系统:vue提供的 都是 v-xx 写在标签属性上的,统称为指令,例如,a_url必须是data中定义的变量
	<p v-text="a_url"></p>

# v-text直接把字符串内容渲染在标签内部,等同于
	<p v-text="a_url"></p>
    <p>{{a_url}}</p>
    
# v_html 把字符串的内容渲染成标签,写在标签内部
	<p v-html="a_url"></p>
    
# v-show 等于布尔值,该标签是否显示  样式控制显示不显示:style="display: none;"
# v-if	等于布尔值,该标签是否显示	整个标签之间删除,效率低,在dom中删除标签
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
    <script src="./js/vue.js"></script>
</head>
<body>
<div id="app">
    <h2>v-text</h2>
    <p v-text="a_url"></p>
    <h2>v-html</h2>
    <p v-html="a_url"></p>
    <h2>v-show</h2>
    <img src="78d975c6c85032fee7c25f34e498585.jpg" alt="" v-show="show" width="300px" height="400px">
    <h2>v-if</h2>
    <div v-show="show_if">
        <img src="aaa.jpg" alt="" width="300px" height="400px">
    </div>
</div>
</body>
<script>
    var vm = new Vue({
        el: '#app',
        data: {
            a_url: '<a href="http://www.baidu.com">点我看美女</a>',
            show: true,
            show_if: true
        }
    })
</script>
</html>

3 属性指令

# 标签上的属性可以绑定变量,以后变量变化,属性的值跟着变化
	-href
    -src
    -name
    -class
    -style
    -height
    ...
    
# 语法
	v-bind:属性名="变量名"
# 可以简写成,以后都用简写
	:属性名="变量名"
        
 # 小案例:点击按钮,随机切换美女图片
 # 小案例:每隔1s钟换一个美女图片
	-定时器        

4 事件指令

# 事件指令是:点击事件,双击事件,滑动事件。。。。用的最多的是点击事件click
	v-on:事件名='函数'
    <button v-on:click="handleClick">点我看美女</button>
    函数必须写在methods的配置项中
    methods:{
        	'handleClick': function (){
                // alert('美女')
                console.log(this)  // this 就是当前vue实例,就是vm实例
                this.show=!this.show
            },
    }
	-点击button就会触发绑定函数(handleClick)的执行
    
# 可以简写成,以后都用简写
	@事件名='函数'
    
# 小案例:点击按钮,随机切换美女图片
	-1 methods配置项中写成 这种形式  es6的对象写法
     	handleClick() {}
        如果函数中再套函数,如何内部不是箭头函数,this指向有问题,需要在外部定义一下
        var _this = this    
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
    <script src="./js/vue.js"></script>
</head>
<body>

<div id="app">

    <button @click="handleClick">点我看美女</button>
    <div>
        <img :src="url" alt="" width="600px"
             height="600px">
    </div>

</div>
</body>
<script>
    var vm = new Vue({
        el: '#app',
        data: {
            url: 'https://img2.woyaogexing.com/2023/02/13/0253c158c222e0db0ea0bf68df21d315.jpeg',
            url_list: [
                'https://img.lesmao.vip/k/1178/T/XIAOYU/951/951_001_dj7_3600_5400.jpg',
                'https://img.lesmao.vip/k/1178/T/XiuRen/6211/6211_001_k4r_3600_5400.jpg',
                'https://img.lesmao.vip/k/1178/T/XiuRen/6211/6211_004_g66_3600_5400.jpg',
                'https://img.lesmao.vip/k/1178/T/XiuRen/6165/6165_001_gwy_3600_5400.jpg',
                'https://img.lesmao.vip/k/1178/T/XIAOYU/948/948_020_xcx_3600_5400.jpg',
            ]
        },
        methods: {
            // 'handleClick': function () {
            //     // var i = Math.round(Math.random() * (this.url_list.length - 1))
            //     // this.url = this.url_list[i]
            //     // console.log(i)
            //     var _this=this
            //     setInterval(function () {
            //       console.log(_this)
            //         var i = Math.round(Math.random() * (_this.url_list.length - 1))
            //         _this.url = _this.url_list[i]
            //         console.log(i)
            //     }, 1000)
            // },

            // 简写成
            handleClick() {
                var _this = this  //
                setInterval(function () {
                    console.log(_this)
                    var i = Math.round(Math.random() * (_this.url_list.length - 1))
                    _this.url = _this.url_list[i]
                    console.log(i)
                }, 1000)
            },


        }
    })


    // 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()

</script>
</html>

5 class和style

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

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

# 数组的方法:很多,自己学    
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
    <script src="./js/vue.js"></script>
    <style>
        .font {
            font-size: 60px;
        }
        .red {
            background-color: red;
        }
        .green {
            background-color: green;
        }
        .font-color {
            color: yellow;
        }
    </style>
</head>
<body>
<div id="app">
    <h1>class</h1>
    <div :class="class_obj">我是div</div>

    <h1>style</h1>
    <div :style="style_obj">我是style----div</div>
</div>

</body>
<script>
    var vm = new Vue({
        el: '#app',
        data: {
            // class_str:'font',
            // class_list:['font'],
            class_obj: {font: true, green: false, 'font-color':false},
            // style_str: 'color: green;font-size:80px',
            // style_list: [{color:'yellow'}, {'font-size':'90px'}],
            // style_list: [{color: 'yellow'}, {fontSize:'90px'}], // 可以用驼峰
            style_obj: {color: 'yellow', fontSize: '80px'}
            // style_obj: {color: 'yellow', 'font-size': '80px'}
        },
    })
</script>
</html>

6 条件渲染

# v-if=条件  放在标签上,如果条件成立,该标签就显示,如果条件不成立,该标签就不显示
# v-else-if=条件  放在标签上,如果条件成立,该标签就显示,如果条件不成立,该标签就不显示
# v-else  放在标签上,上面条件都不成立,显示这个标签
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
    <script src="./js/vue.js"></script>
</head>
<body>
<div id="app">
    <h1>通过分数显示文字</h1>
    <div v-if="score>=90">优秀</div>
    <div v-else-if="score>=80&&score<90">良好</div>
    <div v-else-if="score>=60&&score<80">及格</div>
    <div v-else>不及格</div>
</div>
</body>
<script>
    var vm = new Vue({
        el: '#app',
        data: {
            score: 99
        },
    })
</script>
</html>

7 列表渲染

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
    <script src="./js/vue.js"></script>
    <link rel="stylesheet" href="https://stackpath.bootstrapcdn.com/bootstrap/3.4.1/css/bootstrap.min.css"
          integrity="sha384-HSMxcRTRxnN+Bdg0JdbxYKrThecOKuH5zCYotlSAcp1+c8xmyTe9GYg1l9a69psu" crossorigin="anonymous">
</head>
<body>
<div id="app">
    <div class="container-fluid">
        <div class="row">
            <div class="col-md-6 col-md-offset-3">
                <div class="text-center">
                    <h1>v-if+v-for 显示购物车</h1>
                    <button @click="handleClick" class="btn btn-danger">点我展示</button>
                </div>
                <div v-if="show">
                    <table class="table table-hover">
                        <thead>
                        <tr>
                            <th>id</th>
                            <th>商品名</th>
                            <th>商品价格</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: '钢笔', price: '29'},
                {id: 2, name: '铅笔', price: '29'},
                {id: 3, name: '文具盒', price: '298'},
                {id: 4, name: '彩笔', price: '298'}
            ]
        },
        methods: {
            handleClick() {
                this.show = !this.show
            }
        }
    })
</script>
</html>

补充:

# 解释器
# ide:集成开发环境,快速开发
	-pycharm
    -goland
    -vscode
    
    
    
# dtl:django template language  djagno的模板语法

标签:style,vue,name,url,标签,基础,语法,list,var
From: https://www.cnblogs.com/DragonY/p/17120771.html

相关文章

  • 前端发展史 vue介绍 vue的快速使用
    上节回顾#1jwt源码分析-签发: 登录----》ObtainJSONWebToken--->post--->serializer.is_valid()--->走了校验---》正常登录逻辑可以拿到序列化类的validate中......
  • python基础学习的第三天
    一、pycharm软件的基本使用安装pycharm语言使用英文版本基本使用1.修改主题背景![](https://img2023.cnblogs.com/blog/3095768/202302/3095768-20230214173111510......
  • markdown语法
    一、标题略二、字体一般加粗斜体斜体加粗删除线三、引用这是引用的内容这也是引用的内容四、分割线五、图片六、超链接这里是超链接名七、列表这是......
  • 数据库基础操作 - 5(索引及数据库设计规范)
    7、索引MySQL管饭对索引的定义为:索引(Index)是帮助MySQL高效获取数据的数据结构。提取句子主干,就可以得到索引的本质:索引是数据结构。7.1、索引的分类在一个表中,主键......
  • 数据库基础操作 - 4
    6、事物6.1、什么是事物要么都成功,要么都失败一一一一一1、SQL执行A给B转账A1000-->200B2002、SQL执行B收到A的钱A800B400一一一一一将一组SQL放......
  • Vue中使用this.$router.resolve打开新页面
    方法一:resolve会返回一个跳转路由对象if(id&&orgCode){lettext=this.$router.resolve({path:path,query:{......
  • 10.4汇编语言的语法是“操作码+操作数”
       在汇编语言中,1行表示对CPU的一个指令。汇编语言指令的语法结构是操作码+操作数(也存在只有操作码没有操作数的指令)。   能够使用任何形式的操作码,是由CPU的......
  • vue简介及基础语法
    vue简介及基础语法前端编程从最初的html、css、js散件编写页面,到后来ajax异步请求的出现,在不断发展,在Angular框架出现之后,出现了前端工程化的概念,而现在时下最主流的框架......
  • vuex页面刷新数据丢失
    一:数据丢失的原因vuex存储的数据只是在页面中,相当于全局变量,页面刷新的时候vuex里的数据会重新初始化,导致数据丢失。因为vuex里的数据是保存在运行内存中的,当页面刷新时......
  • Vue实现字符串换行
    今天在做的时候需要用到字符串换行,在网上找了一下,换行是通过添加white-space:pre-wrap属性,通过\n进行换行在这里记录一下<stylelang="scss"scoped>::v-deep.el-tab......