• Vue基础


    1、采用cnd方式来使用vue。

    html:

     1 <!DOCTYPE html>
     2 <html>
     3 <head>
     4     <meta charset="UTF-8">
     5     <title>Vue</title>
     6     <link rel="stylesheet" type="text/css" href="style.css">
     7     <script src="https://cdn.jsdelivr.net/npm/vue@2.5.16/dist/vue.js"></script>
     8 </head>
     9 <body >
    10 <div id="vue-app">
    11     <h1>{{greet('night')}}</h1>
    12     <h1>{{name}}</h1>
    13     <div  v-bind:class="classtag">绑定属性</div>
    14     <input type="text" v-bind:value="value">
    15     <p v-html="website">
    16     </p>
    17 </div>
    18 <div id="ev_bind">
    19     <button @click="add">增加商品</button>
    20     <button v-on:click="del">减少商品</button>
    21     <button v-on:dblclick="add">双击增加</button>
    22     <button v-on:dblclick="del">双击减少</button>
    23     <p>目前购物车商品个数:{{shop}}</p>
    24     <div v-bind:class="ok" v-on:mousemove="deal">{{x}},{{y}}</div>
    25 </div>
    26 
    27 <div id="ke_ev">
    28     <input v-on:keyup.enter="KeyUp" placeholder="回车alter" />
    29 </div>
    30 <div id="data_bind">
    31     <h1>双向数据绑定</h1>
    32     name:<input type="text" name="" v-model="name"><span>{{name}}</span>
    33     age:<input type="text" v-model="age" /> <span>{{age}}</span>
    34 </div>
    35 <hr>
    36 <div id="compute_test">
    37     <button v-on:click="a++">点击增加a</button>
    38     <button @click="b++">点击增加b</button>
    39     <p>a is : {{a}}</p>
    40     <p>b is : {{b}}</p>
    41     <p>Add age  to A={{addToA}}</p>
    42     <p>Add age  to B={{addToB}}</p>
    43 </div>
    44 <div id="css_bind">
    45     <h1 v-bind:class="addCls">示例1</h1>
    46 </div>
    47 <div id="arr_bind">
    48     <h1 v-bind:class="[active,error]">示例2<h2>
    49 </div>
    50 <div id="three_bind">
    51     <h1 v-bind:class="error!=''?active:''">示例三</h1>
    52 </div>
    53 <div id="if-bind">
    54     <h1>if 条件判断</h1>
    55     <template v-if="flag">
    56         <h1>条件成立</h1>
    57     </template>
    58     <template v-else>
    59         <h5>条件不成立</h5>
    60     </template>
    61 </div>
    62 <div id="for_bind">
    63     <h1 v-bind:style="{background:sys}">for循环</h1>
    64     <ul>
    65         <template v-for="(p,index) in person" v-if="p">
    66             <li>{{index}}----{{p}}</li>
    67         </template>
    68     </ul>
    69     <ul>
    70         <template v-for='(v,i) in fav'>
    71             <li>{{v.name}}---{{v.age}}</li>
    72             
    73         </template>
    74     </ul>
    75 </div>
    76 <hr>
    77 <h1>Vue多实例</h1>
    78 <div id="app_one">
    79     <h4>{{title}}</h4>
    80 </div>
    81 <div id="app_two">
    82     <h4>{{title}}</h4>
    83     <button v-on:click="Ch aneTitle">点击修改app_one title</button>
    84 </div>
    85 <div id="com_bind">
    86     <h1>组件使用:</h1>
    87     <com_con></com_con>
    88 </div>
    89 <script type="text/javascript" src="app.js"></script>
    90 </body>
    91 </html>

    js注释和解释:

      1 // 创建vue对象。
      2 new Vue({
      3     el:"#vue-app",
      4     data:{
      5         name:"米斯特刘",
      6         classtag:"primary",
      7         value:'ok',
      8         website:"<a href='www.baidu.com'>个人网站</a>"
      9     },
     10     methods:{
     11         greet:function (time) {
     12             // body...
     13             return "good"+time+' '+this.name+"!"
     14         }
     15     }
     16 })
     17 // el:是该Vue对象作用的dom根容器的对象。绑定vue对象数据的使用范围,除了这个范围无法使用。
     18 // data:是数据绑定。{{}} 是引用vue对象数据的模板语言。也可以是单个表达式,这里不能流控制,需要使用三元表达式。
     19 // methods:vue对象绑定函数的关键字。也是key vlaue形式。value后面跟的是匿名函数。前端调用直接函数名字()形式,如果想引用vue对象的data中的属性值,我们可以使用this.属性名字(在vue中
     20 // 我们不用this.data.属性名,直接是this.属性名字)
     21 // v-bind:属性名字="data中的key" ---->绑定属性。缩写为:
     22 // v-html="data中的属性key"---->绑定标签。
     23 // 绑定事件,使用v-on:事件名称="函数()"其中括号可以省略,在vue中默认情况下,事件后面是函数。在属性调用的时候,需要区别属性名称和函数,所以函数需要带有括号。而事件默认就是函数。可以不带括号。
     24 // 单击事件:click 双击事件:dblclick 鼠标移动:mousemove....js中的时间都支持。
     25 //@事件名称 也是绑定事件的一种方法。是v-on的缩写。
     26 new Vue({
     27     el:"#ev_bind",
     28     data:{
     29         shop:31,
     30         ok:"addst",
     31         x:0,
     32         y:0
     33     },
     34     methods:{
     35         add:function(){
     36             this.shop++
     37         },
     38         del:function(){
     39             this.shop--
     40         },
     41         deal:function(event){
     42             // 自动传入事件
     43             this.x=event.clientX;
     44             this.y=event.clientY;
     45         }
     46     }
     47 }
     48 )
     49 
     50 //数据双向绑定:比如我们的input标签,我们在输入内容的时候,后台获取的内容,也随之更改,这叫做单向绑定,如果我们的更改后台绑定数据,前端展示的数据也更改随之变化,这种方式叫做双向数据绑定。
     51 // 指令:ref和v-model  两种方式。
     52 // 建立使用v-model方式。 v-model="属性",其中属性要和data里的属性保持一致。 
     53 new Vue({
     54     el:"#data_bind",
     55     data:{
     56         name:"",
     57         age:""
     58     }
     59 })
     60 // vue提供了键盘的输入的监听事件,常见的有:.enter .tab .delete (捕获“删除”和“退格”键) .esc .space .up .down .left .right
     61 new Vue(
     62     {
     63     el:"#ke_ev",
     64     data:{
     65         ok:"ok"
     66     },
     67     methods:{
     68         KeyUp:function(){
     69             alert(123)
     70         }
     71     }
     72 })
     73     
     74 //compute属性即计算属性。
     75 // methods和compute的区别: 
     76 // 计算属性,在被调用的时候只执行发生变化的dom的属性,如果虚拟dom属性不发生变化的话,不会更改该属性。
     77 // methods:无论dom是否发生变化都会被执行。
     78 // 计算属性和普通属性的绑定是一样的,也是使用双大括号:{{}}
     79 new Vue({
     80     el:"#compute_test",
     81     data:{
     82         a:0,
     83         b:0,
     84         age:20
     85     },
     86     computed:{
     87         addToA:function(){
     88             return this.a+this.age;
     89         },
     90         addToB:function(){
     91             return this.b+this.age;
     92         }
     93 
     94     }
     95 }
     96     )
     97 //动态绑定css和class
     98 // 使用指令v-bind
     99 // 通过data数据的绑定,val值的true和false 来决定是否显示class。一般结合计算属性进行绑定。
    100 new Vue({
    101     el:'#css_bind',
    102     data:{
    103         active:true,
    104         error:false
    105     },computed:{
    106         addCls:function(){
    107             return {
    108                 active:this.active,
    109                 error:this.error
    110             }
    111         }
    112     }
    113 })
    114 // 通过数组方式进行绑定。
    115 new Vue({
    116     el:"#arr_bind",
    117     data:{
    118         active:"active",
    119         error:"error"
    120     }
    121 })
    122 // 通过三元表达来判断是否添加class
    123 new Vue({
    124     el:"#three_bind",
    125     data:{
    126         active:"active",
    127         error:""
    128     }
    129 })
    130 //条件判断:v-if、v-else-if、v-eles指令。
    131 // 其中v-else 紧跟v-if 和v-else-if后面。
    132 new Vue({
    133     el:"#if-bind",
    134     data:{
    135         flag:false
    136     }
    137 })
    138 // 其中template 标签,是vue特有的标签,在页面并不存在的标签,属于模拟标签,一般用条件判断和for循环。
    139 // for循环。
    140 // 语法:item in items 不同于jquery的$.each() 在vue里,循环中的元素,最后一个元素是索引。你如{item,index} or {val,key,index}
    141 
    142 new  Vue({
    143     el:"#for_bind",
    144     data:{
    145         person:['tom','lili','jack'],
    146         fav:[{'name':'tom','age':22},{'name':'cc','age':21}],
    147         sys:"red"
    148     }
    149 })
    150 // 关于什么时候用{{}},什么时候用{}
    151 // {{}}:是模板语法,我们在单独插值的时候使用。
    152 // {}:是类似字典的含义,当我们的在html在绑定属性的时候,比如说css的时候,需要使用{}:<h1 v-bind:style="{background:sys}">for循环</h1>
    153 
    154 
    155 // 多实例
    156 // 在多实例的情况下,如果将一vue实例修改另一个vue实例的data数据呢?
    157 // 首先看下多实例:
    158 var  app_one=new Vue({
    159     el:"#app_one",
    160     data:{
    161         title:"this is app one"
    162     }
    163 })
    164 
    165 var app_two=new Vue({
    166     el:"#app_two",
    167     data:{
    168         title:"this is app two"
    169     },
    170     methods:{
    171         ChaneTitle:function(){
    172             app_one.title="被app_two修改了。"
    173         }
    174     }
    175 })
    176 // 如果app_two修改app_one的title呢?
    177 //调用:app_one.title即是app_one的title.类似于this.title 这里this就是app_one
    178 
    179 // 组件:所谓的组件,就是公共部分,可以被反复调用的部分。
    180 // 语法:   Vue.component('名称(这个名称是直接当做标签在html被调用的作用域使用.),{data:function(){return {xxx}},template:"模板"})
    181 // 注意:1)名称是被调用的标签。
    182 //         2)data:一定是函数,通过返回对象,来保证调用实例的各个之间的数据隔离,五不影响。
    183 //         3)template:是模板,这个后面跟的是html标签的字符串。需要注意的是:只有一个根标签。
    184 
    185 Vue.component('com_con',{
    186     data:function(){
    187         return {
    188             name:"tom",
    189             age:22
    190         }
    191     },
    192     methods:{
    193         changeAge:function(){
    194             this.age++
    195         }
    196     },
    197     template:`<p>{{name}}----{{age}}
    198         <button v-on:click="changeAge">点击增加年龄</button>
    199     </p>`
    200 })
    201 
    202 
    203 new Vue({
    204     el:"#com_bind",
    205 })
  • 相关阅读:
    Codeforces 1167E(思路、数据处理)
    Codeforces 185D(发现性质、欧拉定理)
    BUPT2017 springtraining(16) #4 ——基础数论
    Codeforces Round #404 (Div. 2)——ABCDE
    BUPT2017 springtraining(15) #3
    BUPT2017 springtraining(16) #3 ——搜索与动态规划
    BUPT2017 springtraining(16) #2 ——基础数据结构
    Codeforces Round #413(Div. 1 + Div. 2, combined)——ABCD
    BUPT2017 springtraining(16) #1 ——近期codeforces简单题目回顾
    Codeforces Round #400 (Div. 1 + Div. 2, combined)——ABCDE
  • 原文地址:https://www.cnblogs.com/evilliu/p/9202650.html
Copyright © 2020-2023  润新知