zoukankan      html  css  js  c++  java
  • vue基础知识

    vue基础语法

    介绍:Vue是一套用于构建用户界面的渐进式框架
    Vue核心库只关注视图层,不仅容易上手,还便于与第三方既有项目整合
    vue官网

    Hello World

    1.引入vue.js
    2.创建一个带有id的dom
    3.编写vue实例,el挂载点对应HTMLdom,data表示vue实例中的数据

     1 <div id="app">
     2     {{hello}}
     3 </div>
     4 <!-- 开发环境版本,包含了有帮助的命令行警告 -->
     5 <script src="https://cdn.jsdelivr.net/npm/vue/dist/vue.js"></script>
     6 <script>
     7     var app= new Vue({
     8         el:"#app",
     9         data:{
    10             hello:"Hello world"
    11         }
    12     })
    13 </script>

    指令

    1. v-text
    更新元素的 textContent(标签内文字)。

    v-text=””可以与{{}}替换使用

    1、v-text没有vue因网速过慢导致加载的问题

    2、{{}}前后可以加值,而v-text会覆盖元素中原来的内容

    3、{{}}和v-text不能识别html语言,需要使用html

    代码

     1     <body>
     2     <div id="app">
     3         <h2 v-text="msg"></h2>
     4         <p >{{msg}}</p>
     5      
     6     </div>
     7     <script>
     8        var vm =  new Vue({
     9            el: '#app',
    10            data:{
    11                msg:'养老院智能服务系统'
    12            }
    13        })
    14     </script>
    15     </body>
    2.v-html

    更新元素的 innerHTML (html标签会被编译)

    代码展示

     1 <body>
     2 <div id="app">
     3     <h2 v-html="msg"></h2>
     4     <p >{{msg}}</p>
     5  
     6 </div>
     7 <script>
     8    var vm =  new Vue({
     9        el: '#app',
    10        data:{
    11            msg:'<h2 style="color: maroon">养老院智能服务系统</h2>'
    12        }
    13    })
    14 </script>
    15 </body>
    3.v-show

    根据表达式bool值,切换元素的 display 属性。

     1 <div id="app">
     2     <div v-show="ok" v-html="hello"></div>
     3     <div v-show="no" v-html="hello"></div>
     4 </div>
     5 <script>
     6     var app = new Vue({
     7         el:"#app",
     8         data:{
     9             ok:true,
    10             no:false,
    11             hello:"<h1>Hello Vue</h1>"
    12         }
    13     })
    14 </script>

    4.v-if、v-else、v-else-if

    多个元素 通过条件判断展示或者隐藏某个元素

     1 <div id="app">
     2     <input v-model="score">
     3     <div v-if="score>=90">优秀</div>
     4     <div v-else-if="score>=80&&score<90">良好</div>
     5     <div v-else-if="score>=70&&score<80">一般</div>
     6     <div v-else>较差</div>
     7 </div>
     8 <script>
     9     var app = new Vue({
    10         el:"#app",
    11         data:{
    12             score:100,
    13         }
    14     })
    15 </script>

    v-show 和 v-if的区别

    • v-show本质就是标签display设置为none,控制隐藏(适用于频繁切换显示)
    • v-if是动态的向DOM树内添加或者删除DOM元素

    v-for

    v-for 指令基于一个数组来渲染一个列表。v-for 指令需要使用 item in items 形式的特殊语法,其中 items 是源数据数组,而 item 则是被迭代的数组元素的别名。

     1 <div id="app">
     2     <ul>
     3         // item为当前遍历元素 index为下标 
     4         <li v-for="item in fruits">{{item}}</li>
     5         <li v-for="(item,index) in fruits">{{index}}-----{{item}}</li>
     6         <li v-for="item in myFruits">{{item.cname}}----{{item.ename}}</li>
     7         <li v-for="(item,index) in fruits" :key="index">{{item}}</li>
     8     </ul>
     9 </div>
    10 <script>
    11     var vue = new Vue({
    12         el:"#app",
    13         data:{
    14             fruits:['apple','orange','aaa'],
    15             myFruits:[{
    16                 cname:"苹果",
    17                 ename:"apple"
    18             },{
    19                 cname:"橙子",
    20                 ename:"orange"
    21             },{
    22                 cname:"AAA",
    23                 ename:"aaa"
    24             }]
    25         }
    26     })
    27 </script>

    key 的作用:使得vue提高性能

    v-for与v-if一同使用

    不推荐在同一元素上使用 v-ifv-for

    当它们处于同一节点,v-for 的优先级比 v-if 更高,这意味着 v-if 将分别重复运行于每个 v-for 循环中。性能不好

    如果你的目的是有条件地跳过循环的执行,那么可以将 v-if 置于外层元素
    <ul v-if="todos.length"> <li v-for="todo in todos"> {{ todo }} </li> </ul> <p v-else>No todos left!</p>

    5.v-on:绑定事件

    常用事件:click/mouseover/mouseup/

     1 <body>
     2 <div id="app">
     3     <h2 v-html="msg"></h2>
     4     <input type="button" value="点击报名" id="submit" v-on:click="result">
     5  
     6 </div>
     7 <script>
     8    var vm =  new Vue({
     9        el: '#app',
    10        data:{
    11            msg:'<h2 style="color: maroon">养老院智能服务系统</h2>'
    12        },
    13        methods:{
    14            result:function(){
    15                alert('报名成功')
    16            }
    17        }
    18  
    19    })
    20 </script>
    21 </body>

    6.v-model 双向数据绑定

    当文本输入框的内容发生变化时 会同步修改绑定的数据

    如果直接修改data里面的值 也会同步修改文本输入框里面的文本

    注意:只有指定的表单元素可以使用(input select textarea)

     1 <!DOCTYPE html>
     2 <html lang="en">
     3 <head>
     4   <meta charset="UTF-8">
     5   <title>Title</title>
     6 </head>
     7 <body>
     8 
     9 <div id="app">
    10   <!--<input type="text" v-model="message">-->
    11   <!--<input type="text" :value="message" @input="valueChange">-->
    12   <input type="text" :value="message" @input="message = $event.target.value">
    13   <h2>{{message}}</h2>
    14 
    15   <!-- 简单双向绑定 -->
    16   <input type="text" v-model = 'm'>{{m}}
    17 </div>
    18 
    19 <script src="../js/vue.js"></script>
    20 <!-- v-model 实现表单和数据的双向绑定 -->
    21 <script>
    22   const app = new Vue({
    23     el: '#app',
    24     data: {
    25       message: '你好啊'
    26     },
    27     methods: {
    28       valueChange(event) {
    29         this.message = event.target.value;
    30       }
    31     }
    32   })
    33 </script>
    34 <!-- <script>
    35   // 双向绑定
    36 const app = new Vue({
    37   el: '#app',
    38   data : {
    39     m: 'hi'
    40   }
    41 });
    42 </script> -->
    43 </body>
    44 </html>

    修饰符

      <--.trim:去掉开始和结尾的空格 -->

     <input type="text" v-model.trim="num2">
  • 相关阅读:
    Linux Namespace : IPC
    Linux Namespace : UTS
    Linux Namespace : 简介
    《Two Dozen Short Lessons in Haskell》(二十四)代数类型
    为期近五个月的英语培训班总结
    GTD实践2周年后一些体会
    读书笔记2013第10本:《学得少却考得好Learn More Study Less》
    读书笔记2013第9本:《注意力曲线----打败分心与焦虑》
    《Two Dozen Short Lessons in Haskell》(二十二)递归
    GIF图片合集(用于网络请求图片用)
  • 原文地址:https://www.cnblogs.com/zycs/p/14151493.html
Copyright © 2011-2022 走看看