VUE 指令大全

本文深入讲解Vue.js中的各种指令,包括v-text、v-html、v-on、v-bind、v-model、v-show和v-if,详细解释了它们的功能、语法及应用场景,帮助读者全面掌握Vue指令的使用。

目录

    VUE指令指的是:

v-text指令:

v-html 指令:

v-on 指令:

v-on指令补充:

v-bind 指令:

v-model  指令(双向数据绑定):

v-show 指令: 

v-if 指令:


VUE指令指的是:

        以 v-  开头的一组特殊语法称为 Vue指令;

v-text指令:

       可以将指令的值渲染在标签内部,但是v-text不会解析标签 相当与直接把变量的值当成字符串渲染 在页面上;

    语法:

        <h2 v-text = "message"></h2>
<!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>Vue指令</title>
</head>
<body>
    <div id="app">
        {{message}}
        <h2 v-text = "message"></h2> <!--可以将指令的值渲染在标签内部,但是v-text不会解析标签 相当与直接把变量的值当成字符串渲染 在页面上-->
    </div>
    <script src="../../js/vue.js"></script>
    <script>
        var vm = new Vue({
           el:'#app',
           data:{
               message: '<div>你好</div>',
           },
           methods:{}
        });
    </script>
</body>
</html>


v-html 指令:

        会把字符串中的标签解析出来页面上不会显示内容中的标签 但是会显示标签中的内容,v-html在项目中通常用来解析富文本

    语法:

        <h2 v-html = "str"></h2>
<!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>Vue指令</title>
</head>
<body>
    <div id="app">
        {{message}}
        <h2 v-text = "message"></h2> <!--可以将指令的值渲染在标签内部,但是v-text不会解析标签 相当与直接把变量的值当成字符串渲染 在页面上-->

        <h3 v-html="str"></h3> <!--会把字符串中的标签解析出来页面上不会显示内容中的标签 但是会显示标签中的内容,v-html在项目中通常用来解析富文本-->
    </div>
    <script src="../../js/vue.js"></script>
    <script>
        var vm = new Vue({
           el:'#app',
           data:{
               message: '<div>你好</div>',
               str: '<div>我是v-html指令</div>'
           },
           methods:{}
        });
    </script>
</body>
</html>


v-on 指令:

        为元素绑定事件指令,可以将 v-on 缩写成 @ ,比如点击事件 (@click)、按下键盘(@keydown) 、滚动鼠标事件等;绑定的方法定义在methods中,方法内部可以通过 this关键字可以访问定义在data中的数据;

        事件绑定中如果不传任何参数则函数有一个默认参数就是事件对象,如果传递参数并且仍然需要事件对象,可以使用 $event 作为事件的参数,该参数就是事件对象。

    语法:

        <input type="button" value="v-on指令" v-on:click= "click"> <br><!--标准写法-->
        <input type="button" value="v-on指令简写" @click= "DoClick"> <!--VUE中提供简写方法;可以直接将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>Document</title>
</head>

<body>
    <div id="app">
        <input type="button" value="v-on指令" v-on:click= "click"> <br><!--标准写法-->
        <input type="button" value="v-on指令简写" @click= "DoClick"> <!--VUE中提供简写方法;可以直接将v-on:替换成 @-->

    </div>
    <script src="../../js/vue.js"></script>
    <script>
        var vm = new Vue({
           el:'#app',
           data:{},
           methods:{
               click: function(){
                   alert('我是Vue中v-on指令,我的作用是为元素绑定事件,v-on:click= ""');
               },
               DoClick: function(){
                alert('我是Vue中v-on指令,我的作用是为元素绑定事件,简写方法 @click=""');
               }
           }
        });
    </script>
</body>

</html>

问题:当双击h1标签的时候一次往后面加字?

<!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>
</head>

<body>
    <!-- 问题:当双击h1标签的时候一次往后面加字? -->
    <div id="app">
        <h1 v-on:dblclick="dbl">{{str}}</h1>
    </div>
    <script src="../../js/vue.js"></script>
    <script>
        var vm = new Vue({
           el:'#app',
           data:{
               str: '我',
           },
           methods:{
               dbl:function(){
                   this.str+= '真帅'
               }
           }
        });
    </script>
</body>

</html>

经典案例:计数器 

     当点击减号时span中的值依次减1,当span的值为0,弹出对话框提醒用户 已经到底了,当点击加号时span中的值依次加1,当span的值为10,弹出对话框提醒用户 已经到头了?

<!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>
        #app {
            font-size: 0;
        }
        button {
            width: 50px;
            height: 22px;
            background-color: rgb(131, 147, 177);
            outline: none ;
            color: #a10303;
            vertical-align: middle;

        }
        span {
            display: inline-block;
            width: 40px;
            height: 20px;
            line-height: 20px;
            font-size: 20px;
            text-align: center;
            background-color: rgb(226, 225, 225);
            vertical-align: middle;

        }
    </style>
</head>
<body>
    <div id="app">
        <button v-on:click="left">-</button>
        <span>{{num}}</span>
        <button v-on:click="right">+</button>
    </div>
    <script src="../../js/vue.js"></script>
    <script>
        var num;
        var vm = new Vue({
           el:'#app',
           data:{
               num: 0
           },
           methods:{
               left:function(){
                    if(this.num > 0){
                        this.num--;
                    }else{
                        alert('我也是有底线的');
                    }
               },
               right:function(){
                    if(this.num<10){
                        this.num++;
                    }else{
                        alert('可以了 ,要不然下个月要吃土了');
                    }
               }
           }
        });
    </script>
</body>

</html>



另一种方法:

<!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>
</head>

<body>
    <div id="app">
        <h2>当前数字为:{{num}}</h2>
        <button @click="min">-</button>
        <button @click="num++">+</button>
    </div>
    <script src="../../js/vue.js"></script>
    <script>
        var vm = new Vue({
           el:'#app',
           data:{
               num : 0
           },
           methods:{
               min:function(){
                   this.num--;
                   if( this.num < 0){
                        this.num = 0;
                   }
               }
           }
        });
    </script>
</body>

</html>

v-on指令补充:

        1.事件绑定的方法可以写成函数调用的形式,可以传入自定义参数,但是定义方法时需要定义 形参 来接受传入的实参

<!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>
</head>

<body>
    <div id="app">
        <!-- 1. 事件绑定的方法可以写成函数调用的形式,可以传入自定义参数,
                定义方法时需要定义 形参 来接受传入的实参; -->

        <button @click="doit('已经点过了','不要在点了')">点我</button>  <!-- 这里传递的参数时实参 -->
    </div>
    <script src="../../js/vue.js"></script>
    <script>
        var vm = new Vue({
           el:'#app',
           data:{},
           methods:{
               doit:function(O,T){  // 定义方法时,这是定义的形参
                   alert('已提交');
                   console.log(O);
                   console.log(T);
               }
        });
    </script>
</body>

</html>

        2.  事件的修饰符

             事件的后面跟上 . 修饰符 可以对事件触发的对象进项限制,事件的修饰符有多种

<!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>
</head>

<body>
    <div id="app">
        <!-- 2. 事件的修饰符 -->
                事件的后面跟上 .修饰符 可以对事件触发的对象进行限制,这里的.enter可以限制触发的按键为回车键,事件的修饰符有多种
        <input type="text" @keyup.enter="n" placeholder="请输入你的用户名">    <!--当按下键盘的回车键才会执行 n 方法-->
    </div> 
    <script src="../../js/vue.js"></script>
    <script>
        var vm = new Vue({
           el:'#app',
           data:{},
           methods:{
               n:function(){
                   alert('恭喜你');
               }
           }
        });
    </script>
</body>

</html>

v-bind 指令:

        设置元素的属性,是一个绑定指令,它可以绑定任何一个标签的任何属性;如果需要动态的增删 class,建议使用对象的方式!

    语法格式:

        v-bind: 属性名 = "表达式"

        在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>
    <style>
        img {
            width: 700px;
            height: 400px;
        }
        
    </style>
</head>

<body>
    <div id="app">
        <!-- v-bind 是一个绑定指令,他可以绑定任何一个标签的任何属性 -->
        <img v-bind:src="src" alt="" :title="imgTitle">
        <input type="text" :placeholder = "str">
    </div>
    <script src="../../js/vue.js"></script>
    <script>
        var vm = new Vue({
           el:'#app',
           data:{
               src: '../../img/1.jpg',  
               imgTitle:'我想和你在一起',
               str:"请输入你的账户名和密码",
           },
           methods:{ //是vue中存储函数和方法的地方
           }
        });
    </script>
</body>

</html>

v-bind 指令还可以用来绑定 类名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>
        .T {
            width: 200px;
            height: 100px;
            background-color: aquamarine;
        }
    </style>
</head>

<body>
<!-- 问题:当鼠标点击的时候添加类名 -->
    <div id="app">
        <!-- v-bind 是一个绑定指令,他可以绑定任何一个标签的任何属性 -->
        <div :class="{T:classT}" @click="classC">
            你在干什么呢?
        </div>
    </div>
    <script src="../../js/vue.js"></script>
    <script>
        var vm = new Vue({
           el:'#app',
           data:{
               classT: false
           },
           methods:{ //是vue中存储函数和方法的地方
                classC() {
                    this.classT = !this.classT;
                }
           }
        });
    </script>
</body>

</html>

v-model  指令(双向数据绑定):

        获取和设置表单元素的值(双向数据绑定);监听用户的输入事件以更新数据,无论修改谁的值 另外一个都会同步更新!

        作用体现在绑定的变量的值跟在浏览器上显示的内容保持一值;

        实现原理:

             其核心就是,一方面modal层通过defineProperty来劫持每个属性,一旦监听到变化通过相关的页面元素更新。另一方面通过编译模板文件,为控件的v-model绑定input事件,从而页面输入能实时更新相关data属性值。

<!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>
</head>
<body>
    <div id="app">
        <!-- v-model 是为表单双向绑定属性;
                其实是双向绑定的value属性,value在表单元素中使用;
                作用体现在绑定的变量的值跟在浏览器上显示的内容保持一值 -->
            <input type="text" v-model="message">
            <h2>{{ message }}</h2>
            <button @click="xg">我是老大 我要修改你们里面的所有内容</button> <br>
            <!-- <button @click="dj">请提交你的内容</button> -->

    </div>
    <script src="../../js/vue.js"></script>
    <script>
        var vm = new Vue({
           el:'#app',
           data:{
               message:'这里是你输入的内容',
           },
           methods:{
               dj:function(){
                    alert(this.message)
               },
               xg:function(){
                    this.message='秀儿,是你吗???'
               }
           }
        });
    </script>
</body>

</html>


v-show 指令: 

        v-show指令的作用是:根据元素值的真假切换元素的显示状态,值为true元素显示(display: block),值为false元素隐藏(display: none)

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

        指令后面的内容,最终都会解析为布尔值,数据改变之后,对应元素的显示状态会同步更新

<!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>
        img {
            width: 1250px;
            height: 500px;
        }
    </style>
</head>

<body>
    <div id="app">
        <img :src="imgSrc" :title="imgTit" v-show="show"> <!-- 利用v-bind指令绑定img图片的地址和title属性 -->
        <button @click="change">切换显示与隐藏</button>
    </div>
    <script src="../../js/vue.js"></script>
    <script>
        var vm = new Vue({
           el:'#app',
           data:{
               imgSrc: '../../img/High Sierra.jpg',
               imgTit: '这是一张风景照片',
               show: true,
           },
           methods:{
               change:function(){
                    this.show = !this.show
               }
           }
        });
    </script>
</body>

</html>

v-show 中不光可以调用方法,还可以写条件表达式;

 例如:v-show=“show >=  20” 

<!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>
        img {
            width: 1250px;
            height: 500px;
        }
    </style>
</head>

<body>
    <div id="app">
        <!-- v-show还可以写条件表达式哦,当show大于20或等于时 才让图片显示 -->
        <img :src="imgSrc" :title="imgTit" v-show="show >= 20"> <!-- 利用v-bind指令绑定img图片的地址和title属性 -->
        <button @click="change">当我大于20时,会有惊喜哦!!!{{show}}</button>
    </div>
    <script src="../../js/vue.js"></script>
    <script>
        var vm = new Vue({
           el:'#app',
           data:{
               imgSrc: '../../img/High Sierra.jpg',
               imgTit: '这是一张风景照片',
               show: 10,
           },
           methods:{
               change:function(){
                    this.show++;  // 当button按钮点击时,不断增加
               }    
           }
        });
    </script>
</body>

</html>

v-if 指令:

        v-if 指令的作用:根据表达式的真假切换元素的显示与隐藏 ,和v-show的作用差不多,但区别在于 v-if 操作的是 dom 树元素,而 v-show 则是操作元素的 display属性 , 进行元素的显示与隐藏;

v-if 和 v-show 的区别?

        1. v-if 和 v-show 都可以控住元素的显示与隐藏

        2. v-if 操作的是 dom 树元素,是否渲染到页面;

        3. v-show 控制元素是否显示(其实已经渲染到页面了,操作的是display属性)


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

        频繁的切换元素的显示与隐藏 , 建议用v-show , 因为消耗小,反之使用 v-if ;

<!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>
</head>

<body>
    <div id="app">
        <button @click="change">点击切换显示于隐藏</button>
        <p v-if="show">我是v-if指令</p>
        
        <!-- v-if 中也是可以写条件表达式 -->
        <button @click="t">当我大于10时,我会对你说一句话{{math}}</button>
        <p v-if="math > 10">你是傻逼</p>
    </div>
    <script src="../../js/vue.js"></script>
    <script>
        var vm = new Vue({
           el:'#app',
           data:{
               show: false,
               math: 6,
           },
           methods:{
               change:function(){
                   this.show=!this.show;
               },
               t:function(){
                   this.math++;
               }
           }
        });
    </script>
</body>

</html>

 

<think> 首先,用户查询的是“前端Vue在VSCode终端使用的指令大全”,意思是他们想要一个关于在VSCode终端中使用前端Vue项目的命令大全或完整列表。 用户提到了引用[1]、[2]和[3],但这些引用是关于运行Vue项目的入门指南和一些错误问题的。引用[1]讨论了如何使用VSCode运行Vue前端项目,包括下载、导入项目、安装Node.js和运行项目。引用[2]和[3]涉及VSCode的扩展和可能的错误。用户说这些仅供参考,我应该优先考虑他们当前的问题:获取前端Vue在VSCode终端使用的指令大全。 系统级指令要求: - 使用中文回答。 - 生成相关问题。 - 回答中引用的段落末尾自然地添加引用标识,例如[^1]。 - 所有行内数学表达式必须使用$...$格式,但这里没有数学内容,所以不需要。 - 独立公式使用$$...$$格式,但同样,没有数学内容。 - LaTeX语法正确:不适用。 - 回答结构清晰,逐步解决问题。 我的回应应该结构清晰,专注于提供在VSCode终端中使用前端Vue项目的指令大全Vue项目通常基于Vue CLI或Vite创建。 关键指令包括: - 安装依赖:使用npm或yarn安装项目依赖。 - 运行开发服务器:启动本地开发服务器。 - 构建项目:编译项目用于生产。 - 其他命令:如测试、linting等。 基于常见的Vue项目结构,指令通常是npm命令或yarn命令。 参考用户提供的引用: - 引用[1]提到安装Node.js和运行Vue项目,暗示了基础命令如npm install和npm run serve。 - 引用[2]和[3]提到扩展和错误,但可能不直接相关。 所以,我需要编译一个指令列表。 可能的指令: 1. 安装依赖:npm install 或 yarn install 2. 启动开发服务器:npm run serve 或 yarn serve(对于Vue CLI),npm run dev 或 yarn dev(对于Vite) 3. 构建生产版本:npm run build 或 yarn build 4. 运行测试:npm run test 或 yarn test 5. 运行linting:npm run lint 或 yarn lint 6. 其他自定义命令:取决于项目配置。 在VSCode终端中,这些命令可以直接在终端标签中输入。 回答结构: - 介绍:简要解释在VSCode终端中使用Vue项目的基本概念。 - 指令大全:列出常见命令及其描述。 - 使用示例:提供一些示例命令。 - 相关问题:生成相关的问题。 添加引用标识:用户提供了引用[^1], [^2], [^3],但我需要自然地添加。既然用户说这些仅供参考,我可以引用它们来支持基础步骤,比如安装Node.js或解决错误。 例如: - 在运行Vue项目前,需确保已安装Node.js和npm[^1]。 然后列出命令。 最终回答用中文。 生成相关问题:至少三个,基于指令大全。例如: 1. 如何在VSCode中调试Vue项目? 2. Vue项目中常见的终端错误如何解决? 3. 如何自定义Vue项目的启动命令? </think> ### 前端Vue在VSCode终端使用的指令大全 在VSCode中开发前端Vue项目时,终端是核心工具,用于执行项目创建、依赖管理、开发服务器运行、构建和测试等任务。这些指令基于Vue CLI或Vite(现代Vue构建工具),使用npm或yarn作为包管理器。以下指令大全覆盖了常见场景,确保您已安装Node.js(包括npm)和VSCode[^1]。指令在VSCode的终端(可通过“终端”菜单打开)中直接输入。指令格式为通用命令,具体项目可能略有不同(例如,Vite项目使用`dev`而非`serve`)。 #### 1. **项目创建与初始化指令** - `npm create vue@latest`:使用Vue CLI创建新项目(Vue 3推荐),按提示选择配置[^1]。 - `npm create vite@latest my-vue-app -- --template vue`:使用Vite创建新Vue项目(更快速)。 - `cd my-vue-app`:进入项目目录。 - `npm install` 或 `yarn install`:安装项目依赖(首次克隆项目时必备)[^1]。 #### 2. **开发与运行指令** - `npm run serve` 或 `yarn serve`:启动本地开发服务器(Vue CLI项目),默认访问`http://localhost:8080`。 - `npm run dev` 或 `yarn dev`:启动开发服务器(Vite项目),默认访问`http://localhost:3000`。 - `npm run build -- --watch`:在开发模式下监听文件变化并自动构建(适用于特定调试场景)。 #### 3. **构建与优化指令** - `npm run build` 或 `yarn build`:编译项目为生产版本,生成`dist`文件夹(包含优化后的静态文件)[^2]。 - `npm run build -- --mode staging`:根据环境变量构建(例如,staging环境)。 - `serve dist`:本地预览生产构建(需先全局安装`serve`包:`npm install -g serve`)。 #### 4. **代码质量与测试指令** - `npm run lint` 或 `yarn lint`:运行ESLint检查代码风格和错误(常见于Vue项目配置)[^3]。 - `npm run lint -- --fix`:自动修复lint错误。 - `npm run test` 或 `yarn test`:运行单元测试(如使用Jest或Vitest)。 - `npm run test:unit`:针对单元测试套件运行(项目特定)。 #### 5. **调试与维护指令** - `npm outdated`:检查过期的依赖包。 - `npm update` 或 `yarn upgrade`:更新项目依赖。 - `npm audit`:扫描安全漏洞。 - `npm run inspect`:查看Webpack配置(Vue CLI项目),辅助调试构建问题[^3]。 #### 常见问题与注意事项 - **前提条件**:确保Node.js已安装(`node -v` 检查版本),VSCode终端使用系统shell(如PowerShell或Bash)。 - **错误解决**:如果遇到如node-gyp错误,运行`npm rebuild`或安装Python工具链[^3]。 - **性能优化**:在VSCode中安装Vue插件(如“Vetur”或“Volar”)增强体验[^2]。 使用示例: ```bash # 创建Vite项目并运行 npm create vite@latest my-app -- --template vue cd my-app npm install npm run dev # 访问 http://localhost:3000 ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值