vue.js框架(2018/11/18)

Vue框架
            是一套用于构建用户界面的渐进式框架
             Vue 的核心库只关注视图层,
             是一个数据驱动的MVVM框架    
                                                              Model (data)          //model层   数据放在data里
                                                              View ( template)       //视图层渲染数据                      
                                                              ViewModel(vm)        //当数据变化的时候,视图自动更新(数据驱动)
                
 
            
 
             搭建vue环境
                      ①新建一个文件夹(code)   打开cmd      npm init -y
                    ②cnpm i vue --save
                    ③node_modules--->vue---->dist---->vue.js(复制)---->返回文件夹(code)新建一个js文件夹---->将vue.js粘贴在js文件夹中 
                    ④新建html文件  引入   <script src='js/vue.js'></script>
                  
 
  
                   虚拟dom(内存里的dom结构)    //并没有在div中写dom结构 而是在vue中进行操作再将数据渲染到页面上,在渲染之前会对dom中原有的数据和vue中的数据进行比较,更新有差异的数据
 
                     v-html     //渲染html标签
 
                     v-bind     //(重要) 绑定表达式到标签的属性上 可简写为“:” (数据变化视图自动更新,视图变化了数据不会变化)
                                     //v-bind 可以简写为“:”
 
                                     1)v-bind:font-size: 12pt; color: rgb(45, 79, 201); font-family: "Source Sans Pro"; font-weight: bold;">"    // 绑定style
 
                     v-model   //(重要) 数据变化 视图会变化,视图变化,数据也会变化(双向绑定)
                                            修饰符:                                            
                                                        1).number    将数据类型转换为number类型
                                                        2).lazy           失去焦点是才发生改变
                                                        3 ) .trim           去掉前后的空格
                    
                           <input type='text'  v-model.number.lazy='a'>    //把字符串转换成数值型进行加减乘除运算
 
                           $mount    //紧跟在data后面指定管理的元素  相当于 el的作用(不常用)
   
                            var vm = new Vue({
                               data:{
                                          mag:"aaaa"
                               }.$mount("#box")
                         })
                             v-if        // true  才渲染dom元素     false不渲染    不适合频繁切换
                             
                             v-show        //当为true的时候显示设定的 style           当为false的时候
<body>
       <div id='box'>
           <input type="checkbox"  v-model='flag' />
           <p v-if='flag'>hahaha</p>    
           <p v-show='flag'>hello</p>    //true style   false  
       </div>
       <script type="text/javascript">
           var vm = new Vue({
               el:"#box",
               data:{
                  flag:true
               }
           })
       </script>
    </body>
 
   
 
经典:todolist
 
                 v-for="(item,index) in list"   v-bind:key="index"   //for循环 遍历数组
 
                    v-on:事件="事件的处理函数"  //可简写为@符号
 
                    事件处理函数放在methods 里面
             
                     v-on:keyup.enter         // 判断回车键  
 
 
hello .js  
 
    <script src='js/vue.js'></script>
    </head>
    <body>
       <div id='box'>
           {{msg}}  //不能直接解析标签元素
           <div v-html='msg'></div>    //v-html可以解析标签
           <div  v-bind:title='two'>aaasdasda</div> //把title绑定到two变量上  
           <input type="checkbox"  v-bind:checked='flag' />  //把checked绑定到flag变量上  
           <input type="checkbox"   v-model='flag' /> //数据变化 视图会变化,视图变化,数据也会变化(双向绑定)
           <input type='text' v-model='two'  maxlength="20" />还可以输入{{20-two.length}}   //maxlength最大长度  效果:在输入框中输入内容 {{two}}的内容会跟着改变
       </div>
       
       <script type="text/javascript">
           var vm=new Vue({  //实例化
               el:'#box',//管理元素(标签)的
               data:{  // 存放数据的
                  msg:'<h1>hello</h1>',
                  two:'world',
                  flag:true
               },
               //template:'<p>{{two}}</p>'  //模板 {{差值表达式}} 在差值表达式中可以任意写变量    如果指定了模板就用模板里面的元素,如果没有指定模板就用el中管理的元素
           })
       </script>
    </body>
</html>
 
        
 
 
 
ysb.js       调色板
 
 
 
<script src="js/vue.js"></script>
    </head>
    <body>
       <div id="box">
           <!--<input type="color"  v-model='bg' />   //第一种方法
               <div  v-bind:>aaaaaa</div>  
       </div>-->
       <input type="number" v-model='width'  />    //第二种方法
       <input type="number"  v-model='height' />
       <input type='range' min='0'  max='255' v-model='r'>
       <input type='range' min='0'  max='255' v-model='g'>
       <input type='range' min='0'  max='255' v-model='b'>
       
       <div  v-bind:>aaaaaa</div>  
       </div>
       
       <script type="text/javascript">
           var vm = new Vue({
               el:'#box',
               data:{
                  200,
                  height:300,
                  r:0,
                  g:0,
                  b:0,
                  bg:'#ccc'
               }
           })
       </script>
    </body>
 
todolist.html
 
<body>
       <div id="box">
           <input type="text" v-model='msg'   v-on:keyup.enter='add' />
           <ul>
               <li v-for='(item,index) in  todos' v-bind:key='index'>{{index}}  {{item.text}}
                        <button v-on:click='del(index)'></button>
               </li>//循环 todos数组里的每一项还有下标 v-bind:key='index'为了防止编译器报错
           </ul>
           
       </div>
       <script type="text/javascript">
           var vm = new Vue({
               el:'#box',
               data:{
                  msg:'',
                  todos:[
                  {text:'hahaha'},
                  {text:'aaaa'},
                  {text:'fffffff'}
                  ]
               },
               methods:{//方法要写在methods中
                  add(){
                      this.todos.push({text:this.msg});//将输入的字符串添加进todos
                      this.msg='' //添加后清空input框
                   },del(index){
                         this.todos.splice(index,i)
                 }
               }
           })
       </script>
    </body>
 
 
 
 
 
 
doublefor.html
 
<body>
       <div id="box">
           <ul>
               <li v-for='n in 9'>
                  <span v-for='m in  n'>{{m}}*{{n}}={{m*n}}</span>
               </li>
           </ul>
       </div>
       <script type="text/javascript">
           var vm  = new Vue({
               el:"#box",
               data:{
                  
               }
           })
       </script>
    </body>
 
 
v-forObject.html     循环遍历对象{}
 
<body>
       <div id="box">
           <ul>
               <li v-for='(value,key,index)  in per'>  <!--值 键 下标   参数顺序是固定的-->
                   {{index}}---->{{key}}:{{value}}
               </li>
           </ul>
       </div>
       <script type="text/javascript">
           var vm = new Vue({
               el:'#box',
               data:{
                  per:{
                      id:'sss',
                      name:'zs',
                      age:22
                  }
               }
           })
       </script>
    </body>
原文地址:https://www.cnblogs.com/zsrTaki/p/11510514.html