zoukankan      html  css  js  c++  java
  • VUE-01 HelloWorld

     1 <!DOCTYPE html>
     2 <html lang="en">
     3 <head>
     4     <meta charset="UTF-8">
     5     <title>Title</title>
     6 </head>
     7 <body>
     8     <div id="app">
     9       <!--moustache 小胡子语法 表达式 可以赋值msg=2、取值、三元表达式 尽量少写逻辑(computed)-->
    10       {{msg}}
    11 
    12     </div>
    13     <!--引入vue.js-->
    14     <script src="./node_modules/vue/dist/vue.js"></script>
    15     <script>
    16       // 引入vue后会白给你一个vue构造函数
    17       let vm = new Vue({// vm == viewModel
    18         el:'#app', // 告诉vue能管理哪个部分(不能挂载html和body),querySelector  Model
    19         data:{ // data中的数据会被vm所代理
    20           msg:'hello,data数据' // 可以通过vm.msg取到对应的内容
    21         }
    22       }); // Object.defineProperty 定义属性
    23 
    24 
    25     </script>
    26 </body>
    27 </html>

    目前只能数据影响页面

    实现双向绑定

     1 <!DOCTYPE html>
     2 <html lang="en">
     3 <head>
     4     <meta charset="UTF-8">
     5     <title>Title</title>
     6 </head>
     7 <body>
     8     <div id="app">
     9       {{msg}}
    10       <!--表单元素 input CheckBox radio select textarea 可以更改,通过vue指令-->
    11       <!--vue 指令 只是dom上的行间属性,vue给这类属性赋予了一定的意义实现特殊的功能,所有指令以 v- 开头
    12       value属性默认情况下会被vue忽略掉 selected checked 都没有意义-->
    13 
    14       <!--v-model 会将msg的值赋予输入框,输入框的值改变了会影响数据msg  实现双向绑定-->
    15       <input type="text" v-model="msg"/>
    16     </div>
    17     <!--引入vue.js-->
    18     <script src="./node_modules/vue/dist/vue.js"></script>
    19     <script>
    20       let vm = new Vue({
    21         el:'#app',
    22         data:{
    23           msg:'hello,world!'
    24         }
    25 
    26       });
    27 
    28     </script>
    29 </body>
    30 </html>

    原理 es5的Object.defineProperties 方法

     1 <!DOCTYPE html>
     2 <html lang="en">
     3 <head>
     4     <meta charset="UTF-8">
     5     <title>Title</title>
     6 </head>
     7 <body>
     8     <input type="text" id="input"/>
     9     <script>
    10       let obj = {};
    11       let temp = {}; // 代理obj
    12       Object.defineProperties(obj,'name',{
    13         // configurable:true,// 可配置的,可以删除,delet obj.name
    14         // writable:true,// 可写,可以修改 obj.name = 100
    15         // enumerable:true,// 可枚举,循环 for(let key in obj){console.log(key);}
    16         // value:1,
    17         get(){ // 取obj的name属性会触发
    18           return temp['name'];
    19         },
    20         set(val){ // 给obj赋值会触发
    21           temp['name'] = val; // 改变temp的结果     obj.name = val;会死循环
    22           input.value = obj.name;// 再调get将值赋予input
    23         }
    24 
    25       });
    26 
    27       input.value = obj.name;// 1、页面加载时,会调用get方法,把数据赋予页面
    28       // 加事件
    29       input.addEventListener('input',function () { // 2、等待输入框的变化
    30         obj.name = this.value;// 3、当值变化时调用set方法  页面变化更新数据
    31       })
    32     </script>
    33 </body>
    34 </html>
  • 相关阅读:
    manjaro更换源
    质子重离子快速蒙卡MCsquare在ubuntu-20.04下的安装
    虚拟机硬盘容量不够如何解决
    《收获,不止oracle》读书笔记-未完
    Jenkins 性能:如何避免陷阱、诊断问题和扩展
    这是一个人工智能,你有什么紧急情况?
    人工智能:备忘单
    AI 变得越来越聪明、越来越快。这创造了我们无法回答的棘手问题
    什么是人工智能?你需要知道的关于人工智能的一切
    jenkins构建成功为何显示蓝色
  • 原文地址:https://www.cnblogs.com/onroad2019/p/13265768.html
Copyright © 2011-2022 走看看