• Vue的学习(一)


    1、一个vue的简单实例:

     1 <!DOCTYPE html>
     2 <html lang="en">
     3 <head>
     4     <meta charset="UTF-8">
     5     <title>vue的简单实例</title>
     6     <script src="./lib/vue.js"></script>
     7     <style>
     8         .red {
     9             color: red;
    10             font-size: large;
    11         }
    12     </style>
    13 </head>
    14 <body>
    15 <div id="app">
    16     {{hello}}
    17     <h1 v-text="hello" :class="color"></h1><br/>
    18     <input type="text" v-model="hello" /><br/>
    19     <span>{{}}:输出的模式:</span>{{html}}<br/>
    20     <span>v-text:输出的模式:</span><span v-text="html"></span><br/>
    21     <span>v-html:输出的模式:</span><span v-html="html"></span><br/>
    22 </div>
    23 </body>
    24 <script>
    25     var vm = new Vue({
    26         el:'#app',
    27         data: {
    28             hello: 'MGY',
    29             html: '<h2 style="color: red;">你好,世界</h2>',
    30             color: 'red'
    31         }
    32     });
    33 </script>
    34 </html>

    解释:v-bind:class 可以简写成: :class 表示绑定 class 属性,所以 :class="color" 中的 color 是一个变量,该 :class 指令 可以与普通的 class 属性共存。

      v-model 指令实现表单 <input>、<textarea>、及 <select>元素的双向数据绑定。v-model 会忽略所有表单元素的 value、checked、selected 特性的初始值而总是将 Vue 实例的数据作为数据来源。如果想初始化值,可以通过 javaScript 在组件的 data 选项中声明初始值。

      v-model 在内部为不同的输入元素使用不同的属性并抛出不同的事件(实例:https://cn.vuejs.org/v2/guide/forms.html):

        text 和 textarea 元素使用 value 属性和 input 事件 {注意:在文本域插值(<textarea>{{text}}</textarea>)并不会生效,应用 v-model 来代替 }

        checkedbox 和 radio 使用 checked 属性和 change 事件

        select 字段将 value 作为 prop 并将 change 作为事件 {注意:如果 v-model 表达式的初始值未能匹配任何选项,<select> 元素将被渲染为 “未选中” 状态。在 iOS 中,这会使用户无法选择第一个选项。因为这样的情况下,iOS 不会触发 change 事件。因此,更推荐提供第一个值为空的禁用选项。}

      v-once 指令能执行一次性地插值,当数据改变时,插值处的内容不会更新。

      {{}}、v-text 与 v-html 的区别:{{}} 和 v-text 会将内容原样输出、而 v-html 会对里面包含 html 标签的,会以 html 标签的样式输出。{注意:你的站点上动态渲染的任意 HTML 可能会非常危险,因为它很容易导致 XSS 攻击。请只对可信内容使用 HTML 插值,绝不要对用户提供的内容使用插值}

    2、计算属性:

     1 <!DOCTYPE html>
     2 <html lang="en">
     3 <head>
     4     <meta charset="UTF-8">
     5     <title>vue的简单实例</title>
     6     <script src="lib/vue.js"></script>
     7 </head>
     8 <body>
     9 <div id="app">
    10     <input type="text" v-model="n1"> +
    11     <input type="text" v-model="n2"> =
    12     <input type="text" v-model="sum">
    13 </div>
    14 </body>
    15 <script>
    16     var vm = new Vue({
    17         el:'#app',
    18         computed: {
    19             // 计算属性的 getter
    20             sum: function () {
    21                 // `this` 指向 vm 实例
    22                 return this.n1*1 + this.n2*1;
    23             }
    24         },
    25         data: {
    26             n1: 0,
    27             n2: 0
    28         }
    29     });
    30 </script>
    31 </html>

      解释:这里我们声明了一个计算属性 sum。我们提供的函数将用作属性 vm.sum的 getter 函数。

    3、监听属性:

     1 <!DOCTYPE html>
     2 <html lang="en">
     3 <head>
     4     <meta charset="UTF-8">
     5     <title>vue的简单实例</title>
     6     <script src="lib/vue.js"></script>
     7 </head>
     8 <body>
     9 <div id="app">
    10     <input type="text" v-model="word" />
    11     <h1>
    12         结果:{{result}}
    13     </h1>
    14 </div>
    15 </body>
    16 <script>
    17     var vm = new Vue({
    18         el:'#app',
    19         watch: {
    20             word: function (newV, oldV) {
    21                 axios.get('9.php?word='+newV).then(function (response) {
    22                     app.result = response.data;
    23                 })
    24             }
    25         },
    26         data: {
    27             word: '',
    28             result: ''
    29         }
    30     });
    31 </script>
    32 </html>

    4、使用object与array来控制class:

     1 <!DOCTYPE html>
     2 <html lang="en">
     3 <head>
     4     <meta charset="UTF-8">
     5     <title>使用object与array控制class</title>
     6     <script src="./lib/vue.js"></script>
     7     <style>
     8         .green {color: green;}
     9         .color {color: red;}
    10         .font {font-size: 200px;}
    11     </style>
    12 </head>
    13 <body>
    14 <div id="app">
    15     <h1 class="green" :class="hd">后盾人</h1>
    16     <hr>
    17     <h2 :class="[success,font]">houdunren.com</h2>
    18 </div>
    19 </body>
    20 <script>
    21     var vm = new Vue({
    22         el:'#app',
    23         data: {
    24             hd: {font:true},
    25             success: 'color',
    26             font: 'font'
    27         }
    28     });
    29 </script>
    30 </html>

    5、在 class 写表达式控制类型:

     1 <!DOCTYPE html>
     2 <html lang="en">
     3 <head>
     4     <meta charset="UTF-8">
     5     <title>在 class 写表达式控制类型</title>
     6     <script src="./lib/vue.js"></script>
     7     <style>
     8         .success {color: green;}
     9         .error {color: red;}
    10     </style>
    11 </head>
    12 <body>
    13 <div id="app">
    14     <li v-for="v in news">
    15         <span v-bind:class="v.status?'success':'error'">{{v.status}}</span>
    16         <button v-on:click="changeStatus(v,false)" v-if="v.status">删除</button>
    17         <button v-on:click="changeStatus(v,true)" v-if="!v.status">恢复</button>
    18     </li>
    19 </div>
    20 </body>
    21 <script>
    22     var vm = new Vue({
    23         el:'#app',
    24         methods: {
    25             changeStatus: function (item, status) {
    26                 item.status = status;
    27             }
    28         },
    29         data: {
    30             news: [
    31                 {title: '后盾人', status: true},
    32                 {title: 'houdunren.com', status: true}
    33             ]
    34         }
    35     })
    36 </script>
    37 </html>

    6、使用vue来设计行级样式:

     1 <!DOCTYPE html>
     2 <html lang="en">
     3 <head>
     4     <meta charset="UTF-8">
     5     <title>使用vue来设计行级样式</title>
     6     <script src="./lib/vue.js"></script>
     7     <style>
     8     </style>
     9 </head>
    10 <body>
    11 <div id="app">
    12     <h1 :style="{color:'red',fontSize:size+'px'}">后盾人</h1>
    13     <h2 :style="style">后盾人</h2>
    14     <h3 :style="[hdcms]">houdunren.com</h3>
    15     <input type="number" v-model="size" />
    16 </div>
    17 </body>
    18 <script>
    19     var vm = new Vue({
    20         el:'#app',
    21         data: {
    22             red: 'green',
    23             size: 16,
    24             style: {
    25                 color: 'blue'
    26             },
    27             hdcms: {
    28                 color: 'yellow',
    29                 backgroundColor: 'blue'
    30             }
    31         }
    32     })
    33 </script>
    34 </html>

    7、v-if 的使用:

     1 <!DOCTYPE html>
     2 <html lang="en">
     3 <head>
     4     <meta charset="UTF-8">
     5     <title>v-if的使用</title>
     6     <script src="./lib/vue.js"></script>
     7     <style>
     8     </style>
     9 </head>
    10 <body>
    11 <div id="app">
    12     <input type="text" v-model="age" />
    13     <span v-if="age<20">小孩</span>
    14     <span v-else-if="age<30">青年</span>
    15     <span v-else-if="age<50">壮年</span>
    16     <span v-else>老年</span>
    17     <hr />
    18     <input type="checkbox" v-model="copyright" />接受协议 <br>
    19     <span v-if="!copyright">请先接受协议</span>
    20     <button v-else>注册</button>
    21 </div>
    22 </body>
    23 <script>
    24     var vm = new Vue({
    25         el:'#app',
    26         data: {
    27             copyright: false,
    28             age: 0
    29         }
    30     })
    31 </script>
    32 </html>

    8、使用key唯一令牌解决表单值混乱问题:

     1 <!DOCTYPE html>
     2 <html lang="en">
     3 <head>
     4     <meta charset="UTF-8">
     5     <title>使用key唯一令牌解决表单值混乱问题</title>
     6     <script src="./lib/vue.js"></script>
     7     <style>
     8     </style>
     9 </head>
    10 <body>
    11 <div id="app">
    12     <template v-if="regType=='mail'">
    13         邮箱:<input type="text" name="username" key="mail-register"/>
    14     </template>
    15     <template v-else>
    16         手机:<input type="text" name="username" key="phone-register"/>
    17     </template>
    18     <br/>
    19     <input type="radio" value="mail" v-model="regType"/>邮箱注册
    20     <input type="radio" value="phone" v-model="regType"/>手机注册
    21 </div>
    22 </body>
    23 <script>
    24     var vm = new Vue({
    25         el: '#app',
    26         data: {
    27             regType: 'mail'
    28         }
    29     })
    30 </script>
    31 </html>

    9、v-show与v-if的对比:

     1 <!DOCTYPE html>
     2 <html lang="en">
     3 <head>
     4     <meta charset="UTF-8">
     5     <title>v-if与v-show的对比</title>
     6     <script src="./lib/vue.js"></script>
     7     <style>
     8     </style>
     9 </head>
    10 <body>
    11 <div id="app">
    12     <h1 v-if="status">后盾人</h1>
    13     <h1 v-show="status">houdunren.com</h1>
    14     <input type="checkbox" v-model="status" />
    15 </div>
    16 </body>
    17 <script>
    18     var vm = new Vue({
    19         el: '#app',
    20         data: {
    21             status: true
    22         }
    23     });
    24 </script>
    25 </html>

      解释:v-show:会把元素隐藏掉,即把样式设置为隐藏的样式,而 v-if:直接把元素删除掉。所以 v-show 的性能比 v-if 好,但 v-if 的功能比 v-show 好,它有 v-if、v-else-if、v-else

    10、v-for 的使用:

     1 <!DOCTYPE html>
     2 <html lang="en">
     3 <head>
     4     <meta charset="UTF-8">
     5     <title>v-for的使用</title>
     6     <script src="./lib/vue.js"></script>
     7     <style>
     8     </style>
     9 </head>
    10 <body>
    11 <div id="app">
    12     <table border="1">
    13         <tr>
    14             <th>序号</th>
    15             <th>编号</th>
    16             <th>标题</th>
    17             <th>老师</th>
    18         </tr>
    19         <tbody>
    20         <!--field:表示一个对象  key:表示下标-->
    21         <tr v-for="(field, key) in news">
    22             <td>{{key+1}}</td>
    23             <td>{{field.id}}</td>
    24             <td>{{field.title}}</td>
    25             <td>{{name}}</td>
    26         </tr>
    27         </tbody>
    28     </table>
    29 </div>
    30 </body>
    31 <script>
    32     var vm = new Vue({
    33         el: '#app',
    34         data: {
    35             name: '向军老师',
    36             news: [
    37                 {id: 22, title: 'houdunren.com'},
    38                 {id: 66, title: '后盾人'}
    39             ]
    40         }
    41     });
    42 </script>
    43 </html>
  • 相关阅读:
    Java中的各种锁总结2
    Java中锁的总结学习
    双亲委派模型
    mybatis中使用in查询问题
    ArrayList、LinkedList、Vector 区别,优缺点,实现原理
    java value注解总结
    linux-系统启动流程
    linux-文本编辑器
    linux-LVM 逻辑卷
    nodejs + access 应用
  • 原文地址:https://www.cnblogs.com/maigy/p/12121912.html
Copyright © 2020-2023  润新知