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

Vue基础语法

时间:2022-11-17 19:36:32浏览次数:40  
标签:el Vue app 基础 HelloWorld 语法 new data

基本结构helloworld

el来匹配元素,#依据id匹配,.依据class匹配

data设置数据

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>HelloWorld</title>
</head>
<body>
    <div id="app">
        {{ message }}
    </div>
</body>
</html>
<script src="https://cdn.jsdelivr.net/npm/vue@2/dist/vue.js"></script>
<script>
    var app = new Vue({
    el: '#app',
    data: {
    message: 'Hello World!'
    }
})
</script>

{{}}插值表达式

替换指定内容,如上面的HelloWorld

v-text

 设置标签的内容(textContent);

会替换全部内容;

内部支持表达式;

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>HelloWorld</title>
</head>
<body>
    <div id="app">
        <h2 v-text="message+'!'">HelloWorld!</h2>
        <h2>{{ message + "!"}}HelloWorld!</h2>
    </div>
        
</body>
</html>
<script src="https://cdn.jsdelivr.net/npm/vue@2/dist/vue.js"></script>
<script>
var app = new Vue({
    el:"#app",
    data:{
        message:"HelloWorld"
    }
})
</script>

v-html

 v-html指令的作用是,设置元素的innerHTML;

其中的HTML语法结构会被解析为标签解析为HTML的样式;

与v-text的区别:v-text无论什么内容是什么,都是解析为纯文本;

解析文本时,使用v-text,解析HTML结构时,用v-html;

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>HelloWorld</title>
</head>
<body>
    <div id="app">
        <p v-html="content"></p>
    </div>
</body>
</html>
<script src="https://cdn.jsdelivr.net/npm/vue@2/dist/vue.js"></script>
<script>
    var app = new Vue({
    el: '#app',
    data: {
    content: "<a href='http://www.baidu.com'>去百度</a>"
    }
})
</script>

v-on

 v-on:事件名="方法名" 

 为元素绑定事件;

可简写为@;

绑定的方法定义在methods属性中;

方法内部通过this关键字可以访问定义在data中的数据;

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>HelloWorld</title>
</head>
<body>
    <div id="app">
        <input type="button" value="点击事件v-on:click" v-on:click="doShow"><br>
        <input type="button" value="点击事件简写@click" @click="doShow"><br>
        <input type="button" value="双击事件v-on:dblclick" v-on:dblclick="doShow"><br>
        <input type="button" value="双击事件简写@dblclick" @dblclick="doShow"><br>
        <input type="button" value="取数据,且数据++" @click="doAdd"><br>
    </div>
</body>
</html>
<script src="https://cdn.jsdelivr.net/npm/vue@2/dist/vue.js"></script>
<script>
    var app = new Vue({
    el: '#app',
    data: {
        num: 0
    },
    methods:{
        doShow:function(){
            // 弹窗
            alert("当前num为" + this.num);
        },
        doAdd:function(){
            alert(this.num + "++");
            this.num++;
        }
    }
})
</script>

事件绑定的方法可以传参;

事件后使用.修饰符可以对事件限制;

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>HelloWorld</title>
</head>
<body>
    <div id="app">
        <input type="button" value="点击" @click="doClick('玛七朵', ++num) " @keyup.enter="doClick('玛七朵', ++num)">
    </div>
</body>
</html>
<script src="https://cdn.jsdelivr.net/npm/vue@2/dist/vue.js"></script>
<script>
    var app = new Vue({
        el: '#app',
        data: {
            num: 0,
        },
        methods:{
            doClick:function(name, num){
                alert(name + "点击第" + num + "次");
            }
        }
})
</script>

v-show

 根据表达式的真假,切换元素的显示与隐藏;

其原理是修改元素的display,实现显示与隐藏;

v-show指令后的内容会被解析为布尔值;

值为true显示,为false隐藏;

数据改变时,对应的元素的显示状态也会同步更新;

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>HelloWorld</title>
</head>
<body>
    <div id="app">
        <span v-show="isShow">能看见吗?</span><br>
        <input type="button" value="切换" @click="changeIsShow"></input>
    </div>
</body>
</html>
<script src="https://cdn.jsdelivr.net/npm/vue@2/dist/vue.js"></script>
<script>
    var app = new Vue({
        el: "#app",
        data: {
            isShow: false
        },
        methods:{
            changeIsShow:function(){
                this.isShow = !this.isShow;
            }
        }
    })
</script>

v-if

 根据吧表达式的真假,切换元素的显示与隐藏(其原理操作dom元素);

表达式的值为true时,元素存在于dom树中,false会从dom树中移除;

频繁切换元素的显示状态用v-show,反之用v-if,v-show的切换消耗性能更小;

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>HelloWorld</title>
</head>
<body>
    <div id="app">
        <span v-if="isShow">能看见吗?</span><br>
        <input type="button" value="切换" @click="changeIsShow"></input>
    </div>
</body>
</html>
<script src="https://cdn.jsdelivr.net/npm/vue@2/dist/vue.js"></script>
<script>
    var app = new Vue({
        el: "#app",
        data: {
            isShow: false
        },
        methods:{
            changeIsShow:function(){
                this.isShow = !this.isShow;
            }
        }
    })
</script>

v-bind

 设置元素的属性(比如:src、class等);

完整写法:v-bind:属性名;

简写::属性名;

当需要动态的增删class时,建议使用对象的方式;

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>HelloWorld</title>
    <style>
        .active{
            border: 2px solid pink;
        }
    </style>
</head>
<body>
    <div id="app">
        <h1>百度还是哔哩哔哩</h1>
        <img v-bind:src="url" :class="{active:isActive}"><br>
        <input type="button" value="切换" @click="changeUrl">
    </div>
</body>
</html>
<script src="https://cdn.jsdelivr.net/npm/vue@2/dist/vue.js"></script>
<script>
    var app = new Vue({
        el: "#app",
        data: {            
            baiduUrl: "https://www.baidu.com/favicon.ico",
            bilibiliUrl: "https://www.bilibili.com/favicon.ico?v=1",
            url: "https://www.baidu.com/favicon.ico",
            isActie: false
        },
        methods:{
            changeUrl:function(){
                this.isActive = !this.isActive;
                this.url = this.url == this.baiduUrl ? this.bilibiliUrl : this.baiduUrl;
            }
        }
    })
</script>

v-for

 根据数据生成列表结构;

<!DOCTYPE html> <html lang="en"> <head>     <meta charset="UTF-8">     <title>HelloWorld</title> </head> <body>     <div id="app">         <ul>             <li v-for="(item, index) in array">                 数组下标{{index}}元素:{{item}}             </li>         </ul>     </div> </body> </html> <script src="https://cdn.jsdelivr.net/npm/vue@2/dist/vue.js"></script> <script>     var app = new Vue({         el: '#app',         data: {             array: ["!!!", "@@@", "###", "$$$"]         } }) </script>

v-model

 获取和设置表单元素的值(双向数据绑定);

绑定的数据会和表单元素值相关联,绑定元素随着表单元素而改变;

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>HelloWorld</title>
</head>
<body>
    <div id="app">
        <input type="text" v-model="msg" @keyup.enter="getMsg">
    </div>
</body>
</html>
<script src="https://cdn.jsdelivr.net/npm/vue@2/dist/vue.js"></script>
<script>
    var app = new Vue({
        el: '#app',
        data: {
            msg: ""
        },
        methods:{
            getMsg(){
                alert(this.msg);
            }
        }
})
</script>

标签:el,Vue,app,基础,HelloWorld,语法,new,data
From: https://www.cnblogs.com/yozi/p/16899161.html

相关文章

  • Jenkins之流水线语法
    目录1流水线1.1简介1.2声明式流水线简介1.3脚本化流水线简介2声明式流水线2.1规范2.2Sections2.2.1Agent2.2.1.1any2.2.1.2none2.2.1.3label2.2.1.4node2.2.1.......
  • vscode打开vue项目突然所有.vue文件第一行报错解决
    yarn重新安装项目所有依赖,并重启vscode后,突然所有.vue文件第一行<template>处报错Parsingerror:Cannotreadpropertiesofundefined(reading'jsx')解决方案:在vscod......
  • vue3 SvgIcon配置
    1、安装依赖插件vite-plugin-svg-iconsyarnaddvite-plugin-svg-icons-D2、安装glob不安装会提示Error:Cannotfindmodule'fast-glob'yarnaddfast-glob-D3、......
  • 手把手,完整的从0搭建vite-vue3-ts项目框架:配置less+svg+pinia+vant+axios
    项目同步git:https://gitee.com/lixin_ajax/vue3-vite-ts-pinia-vant-less.git  为避免赘述,过于基础的点会直接省略或贴图,比如创建文件夹/文件的路径/路由一类配置相......
  • vue cli代理运行在mac平台偶尔请求失败问题
    1.问题Proxyerror:Couldnotproxyrequest/chart/updatefromxxx.xx.xx.xx:xxxxtohttp://xxx.xx.xx.xx:xxxx.Seehttps://nodejs.org/api/errors.html#errors_com......
  • 尚硅谷vue课程之vue中的数据代理
    <!DOCTYPEhtml><htmllang="en"><head><metacharset="UTF-8"><scriptsrc="https://cdn.jsdelivr.net/npm/[email protected]/dist/vue.js"></script><title>......
  • 11.5 基础语法
    基础语法数据类型强类型语言:所有变量都必须先定义后才能使用基本类型:​ 整数类型:byte,short,int,long​ 浮点数:float,double​ 字符:char​ boolean:true,false引......
  • 盘点对Salesforce从业者最重要的6个基础认证!
    Salesforce认证一直备受业内人士的重视,拥有值得信赖的含金量。成为Salesforce认证专家不仅表明了专业技能的熟练程度,也是对个人和专业发展的保障。此外,大多数Salesforce......
  • linux基础
    Linux1.linux介绍1.1linux发行版介绍1.redhat红帽子系统,收费,全世界用的最多的系统2.centos,全世界用的第二多的服务端操作系统,和redhat用法一模一样,名字不一样而已,免......
  • JavaScript语法-特殊语法、流程控制语句
    JavaScript语法-特殊语法<!DOCTYPEhtml><htmllang="en"><head><metacharset="UTF-8"><title>特殊语法</title><script>//1、语句以;结尾.......