• vue基础


      1 <!DOCTYPE html>
      2 <html lang="en">
      3 
      4 <head>
      5     <meta charset="UTF-8">
      6     <meta name="viewport" content="width=<device-width>, initial-scale=1.0">
      7     <title>Document</title>
      8     <style>
      9         .active {
     10             color: rgba(0, 110, 255, 0.712)
     11         }
     12 
     13         .delete {
     14             background: rgba(255, 166, 0, 0.842);
     15         }
     16 
     17         .error {
     18             font-size: 34px;
     19         }
     20 
     21         .seen {
     22             width: 100px;
     23             height: 100px;
     24             background: red;
     25         }
     26     </style>
     27 </head>
     28 
     29 <body>
     30     <div id="app">
     31         <!-- {{}} 用于标签体内显示数据 -->
     32         <h1>{{message}}</h1>
     33 
     34         <!-- v-once 一次性插值 -->
     35         <p v-once>{{message}}</p>
     36 
     37         <!-- 表达式 -->
     38         <p v-once>{{num+1}}</p>
     39 
     40         <!-- v-model进行数据的双向绑定 -->
     41         <input type="text" v-model="message">
     42 
     43         <!-- 双大括号将数据以普通文本方式进行输出 -->
     44         <p>普通文本输出:{{htmls}}</p>
     45         <!-- 输出真正的html指令 v-html -->
     46         <!-- v-html:
     47             1.如果输出的内容是html数据,双大括号将数据以普通文本方式进行输出
     48             为了输出真正html的效果,就需要使用v-html指定
     49             2.为了防止XSS攻击(不会识别js)
     50          -->
     51         <p>html渲染输出:<span v-html="htmls"></span></p>
     52 
     53         <!-- 元素绑定指令  -->
     54         <img v-bind:src="imgUrl"><br>
     55         <img :src="imgUrl"><br>
     56         <a :href="xurl">跳转到百度</a><br>
     57 
     58 
     59         <!-- 点击按钮,调用函数 -->
     60         <button @click="reduce">-</button>
     61         <input type='text' v-model="nums">
     62         <button @click="plus">+</button><br>
     63         <p></p>
     64 
     65         <!-- 
     66             1.函数没有缓存,每次都会被调用
     67             2.计算属性有缓存,只有当计算属性体内的属性值被更改之后才会被调用,不然不会被调用
     68             3.函数只支持单向
     69             4.计算属性默认情况下,只有getter函数,而没有setter函数,所以只支持单向
     70             如果需要双向绑定,则需要自定义setter函数
     71          -->
     72         <!-- 函数 -->
     73         数学:<input type="text" v-model="mathematics"><br>
     74         英语:<input type="text" v-model="english"><br>
     75         总得分(函数)-单向绑定:<input type="text" v-model="sum()"><br>
     76 
     77         <!-- 绑定计算属性后面不加小括号 -->
     78         总得分(计算属性)-单向绑定:<input type="text" v-model="sum1"><br>
     79         总得分(计算属性)-双向绑定:<input type="text" v-model="sum2"><br>
     80 
     81         <!-- 监听 -->
     82         总得分(监听数学属性)-通过watch选项监听:<input type="text" v-model="sum3"><br>
     83         总得分(监听英语属性)-通过vm实例调用:<input type="text" v-model="sum4"><br>
     84         <!-- <button @click="sum">计算</button> -->
     85 
     86         <!-- class 列表样式数据绑定 -->
     87         <div>
     88             <h3>class 绑定 v-bind:class 或 :class</h3>
     89             <p class="active">固定绑定class</p>
     90             <p>动态绑定class</p>
     91             <p v-bind:class="activeclass">字符串表达式</p>
     92             <p :class="{delete:isDelete,active:isActive}">对象表达式</p>
     93             <p :class="['delete','active','error']">数组表达式</p>
     94 
     95             <h3>Style绑定,v-bind:style或者:style</h3>
     96             <p :style="{color:activeColor,fontSize:fonrSize+'px'}">Style绑定</p>
     97         </div>
     98 
     99 
    100         <!-- 
    101             v-if 如果初始值为假,则什么也不做,条件为真,都会重新渲染
    102             v-show 不是初始值条件是什么,都会重新渲染
    103             如果非常频繁的切换,则使用v-show,运行后条件很少改变,则使用v-if较好
    104          -->
    105         <div>
    106             <h3>v-if 条件渲染</h3>
    107             <input v-model="state" type="checkbox">勾选显示红色方块
    108             <p v-if="state" class="seen"></p>
    109             <p v-else="state">隐藏内容</p>
    110 
    111             <h3>v-show 条件渲染</h3>
    112             <p v-show="state" class="seen"></p>
    113         </div>
    114 
    115 
    116         <!-- 迭代数组 -->
    117         <div>
    118             <h3>迭代数组</h3>
    119             <ul>
    120                 <!-- e为数组别名,index为下标,下标从0开始, 
    121                     注意:使用key特殊属性,它会基于key的变化重新排列元素顺序,并且会移除key不存在的数据
    122                     可以使用of或者in作为分隔符
    123                  -->
    124                 <li v-for="(e,index) in emps" :key="id">
    125                     ID: {{e.id}},name:{{e.name}},age:{{e.age}}
    126                 </li>
    127             </ul>
    128         </div>
    129 
    130         <!-- 迭代对象 -->
    131         <div>
    132             <h3>迭代对象</h3>
    133             <ul>
    134                 <!-- value为属性值,key为属性名,index为下标 -->
    135                 <li v-for="(value,key,index) in prece">
    136                     第{{index+1}}个对象:{{key}}={{value}}
    137                 </li>
    138             </ul>
    139 
    140         </div>
    141 
    142         <!-- 事件处理函数 v-on -->
    143         <div>
    144             <h3>事件处理函数 v-on</h3>
    145 
    146             <button v-on:click="deletes">删除 {{tips}}</button>
    147             <!-- $event代表的是原生的Dom事件 -->
    148             <button @click="warn(tipss,$event)">Warn</button>
    149 
    150         </div>
    151 
    152         <!-- 事件修饰符
    153             .stop - 阻止冒泡
    154             .prevent - 阻止默认事件
    155             .capture - 阻止捕获
    156             .self - 只监听触发该元素的事件
    157             .once - 只触发一次
    158             .left - 左键事件
    159             .right - 右键事件
    160             .middle - 中间滚轮事件
    161          -->
    162         <div>
    163             <h3>事件修饰符
    164                 .stop - 阻止冒泡
    165                 .prevent - 阻止默认事件
    166                 .capture - 阻止捕获
    167                 .self - 只监听触发该元素的事件
    168                 .once - 只触发一次
    169                 .left - 左键事件
    170                 .right - 右键事件
    171                 .middle - 中间滚轮事件
    172             </h3>
    173             <!-- 只触发一次 -->
    174             <button @click.once="doThis">只触发一次:{{numm}}</button>
    175             <div @click="todo1">
    176                 <button @click="todo">todo</button>
    177             </div>
    178             <!-- 阻止冒泡  -->
    179             <div @click="todo1">
    180                 <button @click.stop="todo">阻止冒泡</button>
    181             </div>
    182             <!--  .prevent - 阻止默认事件 -->
    183             <a href="http:www.baidu.com" @click.prevent="onSubmit">跳转百度</a>
    184         </div>
    185         <!-- 按键修饰符
    186             .enter .tab .delete (捕获 "删除" 和 "退格" 键) .esc .space .up .down .left .right .ctrl .alt .shift .meta
    187         -->
    188         <div>
    189             <h3>按键修饰符
    190                 .enter .tab .delete (捕获 "删除" 和 "退格" 键) .esc .space .up .down .left .right .ctrl .alt .shift .meta</h3>
    191             <input type="text" value="enter" @keyup.enter="keyEnter">
    192             <input type="text" value="delete" @keyup.delete="keyDelete">
    193         </div>
    194 
    195         <!-- 表单数据双向绑定 v-model -->
    196         <div>
    197             <h3>表单数据双向绑定 v-model</h3>
    198             <form @submit.prevent="submitForm">
    199                 姓名:<input type="text" v-model="name">
    200                 <br><br>
    201                 性别(单选):
    202                 <input type="radio" name="sex" value="0" v-model="sex">203                 <input type="radio" name="sex" value="1" v-model="sex">204                 <br><br>
    205                 科目(多选):
    206                 <input type="checkbox" name="skills" value="java" v-model="skills">java
    207                 <input type="checkbox" name="skills" value="python" v-model="skills">python
    208                 <input type="checkbox" name="skills" value="vue" v-model="skills">vue
    209                 <br><br>
    210                 城市(下拉框):
    211                 <select name="city" v-model="citys">
    212                     <option v-for="c in city" :value="c.code">{{c.name}}</option>
    213 
    214                 </select>
    215                 <br><br>
    216                 备注(多行文本):
    217                 <textarea cols="30" rows="5" v-model="disc"></textarea>
    218                 <br><br>
    219                 <button type="submit">提交</button>
    220             </form>
    221 
    222         </div>
    223 
    224     </div>
    225     <script src="./node_modules/vue/dist/vue.js"></script>
    226     <script>
    227         var vm = new Vue({
    228             el: '#app',//指定被Vue管理的入口,值为选择器
    229 
    230             // 初始化的数据
    231             data: {//用于初始化数据,在vuevm=实例管理的Dom节点下,可通过模板请求来引用
    232                 message: 'hello word!',
    233                 num: 10,
    234                 htmls: `<span style="color: red ">你好</span>
    235                 <script src="./node_modules/vue/dist/vue.js"></script>`,
    236                 imgUrl: 'https://www.baidu.com/img/PCtm_d9c8750bed0b3c7d089fa7d55720d6cf.png',
    237                 xurl: 'http://www.baidu.com',
    238                 nums: 0,
    239                 mathematics: 80,
    240                 english: 90,
    241                 sumnum: '',
    242                 sum3: 0,
    243                 sum4: 0,
    244                 activeclass: 'active',
    245                 activeColor: 'red',
    246                 isDelete: true,
    247                 isActive: false,
    248                 fonrSize: 32,
    249                 state: true,
    250                 emps: [
    251                     { id: '1', name: "张三", age: '16' },
    252                     { id: '2', name: "李四", age: '18' },
    253                     { id: '3', name: "王五", age: '20' },
    254                 ],
    255                 prece: {
    256                     name: '张三',
    257                     age: 18
    258                 },
    259                 tips: "确定是否删除",
    260                 tipss: "警告",
    261                 numm: 0,
    262                 skills: [],
    263                 city: [
    264                     { code: 'bj', name: '北京' },
    265                     { code: 'sh', name: '上海' },
    266                     { code: 'gz', name: '广州' }
    267                 ],
    268                 citys: "sh",
    269                 disc: "",
    270                 sex: '1',
    271                 submitForm: function () {
    272                     alert(this.name + ',' + this.sex + ',' + this.skills + ',' + this.citys + ',' + this.disc)
    273                 }
    274 
    275             },
    276             // methods里可定义多个函数
    277             methods: {
    278                 // 函数每次都会执行函数体进行计算
    279                 //递增函数
    280                 plus: function () {
    281                     console.log("调用plus")
    282                     this.nums = this.nums + 1
    283                 },
    284                 //递减函数
    285                 reduce: function () {
    286                     console.log("调用reduce")
    287                     if (this.nums > 0) {
    288                         this.nums = this.nums - 1
    289                     }
    290 
    291                 },
    292                 //求和
    293                 sum: function () {
    294                     console.log("调用sum函数")
    295                     // 减0是为了防止字符串转为数字运算
    296                     return (this.mathematics - 0) + (this.english - 0)
    297                 },
    298                 deletes: function (event) {
    299                     // event代表的是Dom原生事件,Vue.js它会自动的将它传入进来
    300                     // 弹窗显示tips的内容
    301                     alert(this.tips)
    302                     //弹窗显示Dom原生事件的内容
    303                     alert(event.target.innerHTML)
    304 
    305                 },
    306                 warn: function (name, event) {
    307                     // 如果说函数有多个参数,而需要使用原生事件,则需要使用$event作为参数传入
    308                     alert(name + '' + event.target.tagName)
    309                 },
    310                 doThis: function () {
    311                     this.numm++
    312                 },
    313                 todo: function () {
    314                     alert("todo......")
    315                 },
    316                 todo1: function () {
    317                     alert("todo1......")
    318                 },
    319                 onSubmit: function () {
    320                     alert("跳转被阻止")
    321                 },
    322                 keyEnter: function () {
    323                     alert("按了Enter键")
    324                 },
    325                 keyDelete: function () {
    326                     alert("Delete")
    327                 }
    328             },
    329             // 计算属性 ,会进行缓存,只在相关响应式依赖发生改变时,它们才会重新求值
    330             computed: {
    331                 sum1: function () {
    332                     console.log("调用sum1函数")
    333                     return (this.mathematics - 0) + (this.english - 0)
    334                 },
    335                 sum2: {
    336                     // 获取数据
    337                     get: function () {
    338                         console.log("调用get")
    339                         return (this.mathematics - 0) + (this.english - 0)
    340                     },
    341                     // 设置数据
    342                     set: function (newvalue) {
    343                         console.log("调用set")
    344                         var avg = newvalue / 2
    345                         this.mathematics = avg
    346                         this.english = avg
    347                     }
    348                 }
    349 
    350             },
    351             // 监听
    352             watch: {
    353                 mathematics: function (newValue, oldValue) {
    354                     // newValue是新的值
    355                     console.log("调用watch监听")
    356                     this.sum3 = (newValue - 0) + (this.english - 0)
    357                 }
    358 
    359             },
    360         })
    361         // 第一个参数是被监听的属性名,第二个是回调函数
    362         vm.$watch('english', function (newvalue) {
    363             console.log("调用$watch()监听")
    364             this.sum4 = (newvalue - 0) + (this.mathematics - 0)
    365         })
    366         vm.$watch('sum4', function (newvalue) {
    367             console.log("监控sum4")
    368             var avgs = newvalue / 2
    369             this.mathematics = avgs
    370             this.english = avgs
    371         })
    372     </script>
    373 </body>
    374 
    375 </html>
    沫笙
  • 相关阅读:
    hdp3.1 hive 3.0的使用记录
    大数据相关的面试题(摘自网络)hbase,kafka,spark
    记一次ZOOKEEPER集群超时问题分析
    git 常用的撤销操作
    角色权限管理与数据权限管理
    spark examples 导入idea并测试
    spark restful 作业提交
    Redhat 7.4更新为Centos7的yum并安装docker-ce
    提醒,处理字符串和文件的时候一定要注意编码
    spark 作业提交
  • 原文地址:https://www.cnblogs.com/wendy-0901/p/13948063.html
Copyright © 2020-2023  润新知